NAV Navigation
Shell HTTP JavaScript Ruby Python PHP Java Go

Wyzed API v1

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The Wyzed API is a set of HTTP endpoints that help your app integrate with Wyzed.

The Wyzed API allows developers to manage learners, courses, signup pages, enrolments and learner progress in their Wyzed account.

Base URLs:

Authentication

Scope Scope Description
fullaccess Full access to all resources

Courses

Manage courses

editCourse

Code samples

# You can also use wget
curl -X PUT https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

PUT https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "submission_notifications": "string",
  "renewal_type": "string",
  "creator": "string",
  "display_priority": 0,
  "show_details": true,
  "track_progress": true,
  "id": "string",
  "archived": true,
  "disable_certificates": true,
  "show_grade_certificate": true,
  "completion_notifications": "string",
  "has_cover_art": true,
  "pass_mark_type": "string",
  "renewal_date": "string",
  "cover_art_url": "string",
  "description": "string",
  "suggested_duration": "string",
  "user_version": "string",
  "renewal_repeat": true,
  "auto_due_seconds": "string",
  "show_grade_learner": true,
  "permalink": "string",
  "locked": true,
  "name": "string",
  "created": "string",
  "auto_due_type": "none",
  "is_graded": true,
  "renewal_days": "string",
  "modified": "string",
  "enable_progression": true,
  "pass_mark": "string",
  "thumbnail_url": "string",
  "published": true,
  "auto_due_date": "2021-07-11T05:44:51Z"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /courses/{id}

Update an existing course.

Body parameter

{
  "submission_notifications": "string",
  "renewal_type": "string",
  "creator": "string",
  "display_priority": 0,
  "show_details": true,
  "track_progress": true,
  "id": "string",
  "archived": true,
  "disable_certificates": true,
  "show_grade_certificate": true,
  "completion_notifications": "string",
  "has_cover_art": true,
  "pass_mark_type": "string",
  "renewal_date": "string",
  "cover_art_url": "string",
  "description": "string",
  "suggested_duration": "string",
  "user_version": "string",
  "renewal_repeat": true,
  "auto_due_seconds": "string",
  "show_grade_learner": true,
  "permalink": "string",
  "locked": true,
  "name": "string",
  "created": "string",
  "auto_due_type": "none",
  "is_graded": true,
  "renewal_days": "string",
  "modified": "string",
  "enable_progression": true,
  "pass_mark": "string",
  "thumbnail_url": "string",
  "published": true,
  "auto_due_date": "2021-07-11T05:44:51Z"
}

Parameters

Name In Type Required Description
id path string true none
body body Course true none

Example responses

200 Response

{
  "submission_notifications": "string",
  "renewal_type": "string",
  "creator": "string",
  "display_priority": 0,
  "show_details": true,
  "track_progress": true,
  "id": "string",
  "archived": true,
  "disable_certificates": true,
  "show_grade_certificate": true,
  "completion_notifications": "string",
  "has_cover_art": true,
  "pass_mark_type": "string",
  "renewal_date": "string",
  "cover_art_url": "string",
  "description": "string",
  "suggested_duration": "string",
  "user_version": "string",
  "renewal_repeat": true,
  "auto_due_seconds": "string",
  "show_grade_learner": true,
  "permalink": "string",
  "locked": true,
  "name": "string",
  "created": "string",
  "auto_due_type": "none",
  "is_graded": true,
  "renewal_days": "string",
  "modified": "string",
  "enable_progression": true,
  "pass_mark": "string",
  "thumbnail_url": "string",
  "published": true,
  "auto_due_date": "2021-07-11T05:44:51Z"
}

Responses

Status Meaning Description Schema
200 OK A successful response Course

getCourse

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /courses/{id}

Find course by id

Parameters

Name In Type Required Description
id path string true none

Example responses

200 Response

{
  "submission_notifications": "string",
  "renewal_type": "string",
  "creator": "string",
  "display_priority": 0,
  "show_details": true,
  "track_progress": true,
  "id": "string",
  "archived": true,
  "disable_certificates": true,
  "show_grade_certificate": true,
  "completion_notifications": "string",
  "has_cover_art": true,
  "pass_mark_type": "string",
  "renewal_date": "string",
  "cover_art_url": "string",
  "description": "string",
  "suggested_duration": "string",
  "user_version": "string",
  "renewal_repeat": true,
  "auto_due_seconds": "string",
  "show_grade_learner": true,
  "permalink": "string",
  "locked": true,
  "name": "string",
  "created": "string",
  "auto_due_type": "none",
  "is_graded": true,
  "renewal_days": "string",
  "modified": "string",
  "enable_progression": true,
  "pass_mark": "string",
  "thumbnail_url": "string",
  "published": true,
  "auto_due_date": "2021-07-11T05:44:51Z"
}

Responses

Status Meaning Description Schema
200 OK A successful response Course

deleteCourse

Code samples

# You can also use wget
curl -X DELETE https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id} \
  -H 'Authorization: Bearer {access-token}'

DELETE https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}', headers = headers)

print(r.json())

 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /courses/{id}

Deletes a course.

Parameters

Name In Type Required Description
id path string true none

Responses

Status Meaning Description Schema
200 OK A successful response None

addCourse

Code samples

# You can also use wget
curl -X POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "archived": true,
  "name": "string",
  "display_priority": 1,
  "cover_art": "string",
  "suggested_duration": "string",
  "published": true,
  "description": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /courses

Add a new course

Body parameter

{
  "archived": true,
  "name": "string",
  "display_priority": 1,
  "cover_art": "string",
  "suggested_duration": "string",
  "published": true,
  "description": "string"
}

Parameters

Name In Type Required Description
body body AddCourse true none

Example responses

200 Response

{
  "submission_notifications": "string",
  "renewal_type": "string",
  "creator": "string",
  "display_priority": 0,
  "show_details": true,
  "track_progress": true,
  "id": "string",
  "archived": true,
  "disable_certificates": true,
  "show_grade_certificate": true,
  "completion_notifications": "string",
  "has_cover_art": true,
  "pass_mark_type": "string",
  "renewal_date": "string",
  "cover_art_url": "string",
  "description": "string",
  "suggested_duration": "string",
  "user_version": "string",
  "renewal_repeat": true,
  "auto_due_seconds": "string",
  "show_grade_learner": true,
  "permalink": "string",
  "locked": true,
  "name": "string",
  "created": "string",
  "auto_due_type": "none",
  "is_graded": true,
  "renewal_days": "string",
  "modified": "string",
  "enable_progression": true,
  "pass_mark": "string",
  "thumbnail_url": "string",
  "published": true,
  "auto_due_date": "2021-07-11T05:44:51Z"
}

Responses

Status Meaning Description Schema
200 OK A successful response Course

listCourses

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/courses", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /courses

List courses

Parameters

Name In Type Required Description
limit query string(int64) false none
cursor query string false none
archived query boolean false none
published query boolean false none

Example responses

200 Response

{
  "archived": true,
  "items": [
    {
      "submission_notifications": "string",
      "renewal_type": "string",
      "creator": "string",
      "display_priority": 0,
      "show_details": true,
      "track_progress": true,
      "id": "string",
      "archived": true,
      "disable_certificates": true,
      "show_grade_certificate": true,
      "completion_notifications": "string",
      "has_cover_art": true,
      "pass_mark_type": "string",
      "renewal_date": "string",
      "cover_art_url": "string",
      "description": "string",
      "suggested_duration": "string",
      "user_version": "string",
      "renewal_repeat": true,
      "auto_due_seconds": "string",
      "show_grade_learner": true,
      "permalink": "string",
      "locked": true,
      "name": "string",
      "created": "string",
      "auto_due_type": "none",
      "is_graded": true,
      "renewal_days": "string",
      "modified": "string",
      "enable_progression": true,
      "pass_mark": "string",
      "thumbnail_url": "string",
      "published": true,
      "auto_due_date": "2021-07-11T05:44:51Z"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "next_cursor": "string",
  "limit": 200,
  "published": true,
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response CourseList

Topic Progress

View learner progress in topics.

getTopicProgress

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress/{user}/{topic}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /topic_progress/{user}/{topic}

View a learner's progress in a topic.

Parameters

Name In Type Required Description
user path string true none
topic path string true none
course query string false none
completed query boolean false none

Example responses

200 Response

{
  "confirmed": true,
  "completed_on": "string",
  "created": "string",
  "completed": true,
  "modified": "string",
  "confirmed_by": "string",
  "topic": "string",
  "course": "string",
  "completed_by": "string",
  "id": "string",
  "confirmed_on": "string",
  "user": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response TopicProgress

listTopicProgress

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/topic_progress", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /topic_progress

List topic progress.

Parameters

Name In Type Required Description
cursor query string false none
limit query string(int64) false none
user query string false none
topic query string false none
course query string false none
completed query boolean false none

Example responses

200 Response

{
  "topic": "string",
  "items": [
    {
      "confirmed": true,
      "completed_on": "string",
      "created": "string",
      "completed": true,
      "modified": "string",
      "confirmed_by": "string",
      "topic": "string",
      "course": "string",
      "completed_by": "string",
      "id": "string",
      "confirmed_on": "string",
      "user": "string"
    }
  ],
  "completed": true,
  "number_found": "string",
  "cursor": "string",
  "course": "string",
  "next_cursor": "string",
  "limit": 200,
  "user": "string",
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response TopicProgressList

Custom Field Permissions

listUserFieldPermissions

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_field_permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /users/{user}/user_field_permissions

Parameters

Name In Type Required Description
user path string true none
limit query string(int64) false none
cursor query string false none

Example responses

200 Response

{
  "items": [
    {
      "user_field": "string",
      "not_applicable": true,
      "user": "string",
      "user_visible": true,
      "user_editable": true
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "next_cursor": "string",
  "limit": 100,
  "user": "string",
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response UserFieldPermissionList

Course Completions

View course completion history

listCourseCompletions

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_completions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /course_completions

Lists course completions.

Parameters

Name In Type Required Description
course query string false none
user query string false none
cursor query string false none
limit query string(int64) false none

Example responses

200 Response

{
  "items": [
    {
      "course": "string",
      "user": "string",
      "id": "string",
      "happened": "2021-07-11T05:44:51Z"
    }
  ],
  "next_cursor": "string",
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response CourseCompletionsResponse

Course Progress

View learner progress in courses.

getCourseProgress

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/course_progress/{course}/{user}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /course_progress/{course}/{user}

View a learner's progress in a course.

Parameters

Name In Type Required Description
course path string true none
user path string true none

Example responses

200 Response

{
  "user": "string",
  "completed_on": "string",
  "completed": true,
  "course": "string",
  "processed": true,
  "id": "string",
  "overdue": true
}

Responses

Status Meaning Description Schema
200 OK A successful response CourseProgress

Sign-Up Pages

View available signup pages

listSignupPages

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/signup_pages", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /signup_pages

List sign-up pages

Example responses

200 Response

{
  "items": [
    {
      "page_description": "string",
      "page_title": "string",
      "name": "string",
      "created": "string",
      "url": "string",
      "tags": [
        "string"
      ],
      "modified": "string",
      "courses": [
        "string"
      ],
      "id": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A successful response SignupPageList

Records

getActiveRecord

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/users/{user}/user_fields/{user_field}/record", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /users/{user}/user_fields/{user_field}/record

Parameters

Name In Type Required Description
user path string true none
user_field path string true none

Example responses

200 Response

{
  "attachments": [
    {
      "kind": "string",
      "course_name": "string",
      "blob_key": "string",
      "user_log": "string",
      "user_field_file": "string",
      "filename": "string",
      "course": "string",
      "content_type": "string",
      "file_size": "string"
    }
  ],
  "reference": "string",
  "cost": "string",
  "user_visible": true,
  "achievable": true,
  "file_size": "string",
  "id": "string",
  "payment_date": "string",
  "modified_by": "string",
  "user_editable": true,
  "has_value": true,
  "blob_key": "string",
  "created_by": "string",
  "filename": "string",
  "user_field": "string",
  "valid": true,
  "not_applicable": true,
  "expires_on": "string",
  "upcoming": true,
  "expires": true,
  "achieved_on": "string",
  "user": "string",
  "content_type": "string",
  "active": true,
  "expired": true,
  "created": "string",
  "notes": "string",
  "modified": "string",
  "value": "string",
  "training_provider": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Record

Profiles

View available profiles.

Profiles allow you to assign a list of tags, courses and custom fields to a learner at the same time simply by assigning the profile.

listProfiles

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/profiles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /profiles

List profiles

Example responses

200 Response

{
  "items": [
    {
      "name": "string",
      "created": "string",
      "tags": [
        "string"
      ],
      "modified": "string",
      "courses": [
        "string"
      ],
      "id": "string",
      "permissions": [
        {
          "user_field": "string",
          "not_applicable": true,
          "user_editable": true,
          "user_visible": true
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A successful response ProfileList

OAuth

Fetch new authorization tokens.

me

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/me", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /oauth/me

Test authorization

Example responses

200 Response

{
  "tid": "string",
  "domain": "string",
  "aud": "string",
  "name": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response MeResponse

getToken

Code samples

# You can also use wget
curl -X POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "code": "string",
  "audience": "string",
  "redirect_uri": "string",
  "client_id": "string",
  "client_secret": "string",
  "grant_type": "string",
  "refresh_token": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/oauth/token", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /oauth/token

Request a new token.

Body parameter

{
  "code": "string",
  "audience": "string",
  "redirect_uri": "string",
  "client_id": "string",
  "client_secret": "string",
  "grant_type": "string",
  "refresh_token": "string"
}

Parameters

Name In Type Required Description
body body TokenRequest true none

Example responses

200 Response

{
  "aud": "string",
  "access_token": "string",
  "expires_in": "string",
  "token_type": "string",
  "scope": "string",
  "refresh_token": "string",
  "name": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response TokenResponse

Duplicate Courses

Duplicate courses

addDuplicateCourse

Code samples

# You can also use wget
curl -X POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "course": "string",
  "copy_enrolments": true,
  "copy_responses": true,
  "name": "string",
  "published": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /duplicate_courses

Create a duplicate of an existing course.

Body parameter

{
  "course": "string",
  "copy_enrolments": true,
  "copy_responses": true,
  "name": "string",
  "published": true
}

Parameters

Name In Type Required Description
body body AddDuplicateCourse true none

Example responses

200 Response

{
  "complete": true,
  "new_course": "string",
  "progress": "string",
  "old_course": "string",
  "id": "string",
  "stage": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response DuplicateCourse

viewDuplicateCourse

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/duplicate_courses/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /duplicate_courses/{id}

Find a duplicate course task by id.

Parameters

Name In Type Required Description
id path string true none

Example responses

200 Response

{
  "complete": true,
  "new_course": "string",
  "progress": "string",
  "old_course": "string",
  "id": "string",
  "stage": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response DuplicateCourse

Custom Fields

Manage user_fields

getUserField

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /user_fields/{id}

Find user_field by id

Parameters

Name In Type Required Description
id path string true none

Example responses

200 Response

{
  "kind": "string",
  "resource": {
    "kind": "string",
    "name": "string",
    "resource_id": "string"
  },
  "description": "string",
  "created": "string",
  "default": "string",
  "required": true,
  "modified": "string",
  "user_visible": true,
  "user_editable": true,
  "disable_notifications": true,
  "indexed": true,
  "not_applicable": true,
  "id": "string",
  "name": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response UserField

listUserFields

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/user_fields", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /user_fields

List user_fields

Parameters

Name In Type Required Description
limit query string(int64) false none
cursor query string false none
archived query boolean false none
published query boolean false none

Example responses

200 Response

{
  "items": [
    {
      "kind": "string",
      "resource": {
        "kind": "string",
        "name": "string",
        "resource_id": "string"
      },
      "description": "string",
      "created": "string",
      "default": "string",
      "required": true,
      "modified": "string",
      "user_visible": true,
      "user_editable": true,
      "disable_notifications": true,
      "indexed": true,
      "not_applicable": true,
      "id": "string",
      "name": "string"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "next_cursor": "string",
  "limit": 100,
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response UserFieldList

Enrolments

Manage learner enrolments in courses.

addEnrolment

Code samples

# You can also use wget
curl -X POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "course": "string",
  "user": "string",
  "send_emails": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /enrolments

Create a new enrolment

Body parameter

{
  "course": "string",
  "user": "string",
  "send_emails": true
}

Parameters

Name In Type Required Description
body body AddEnrolment true none

Example responses

200 Response

{
  "course": "string",
  "user": "string",
  "id": "string",
  "created": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Enrolment

listEnrolments

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /enrolments

List enrolments

Parameters

Name In Type Required Description
limit query string(int64) false none
cursor query string false none
course query string false none
user query string false none

Example responses

200 Response

{
  "items": [
    {
      "course": "string",
      "user": "string",
      "id": "string",
      "created": "string"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "course": "string",
  "next_cursor": "string",
  "limit": 200,
  "user": "string",
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response EnrolmentList

deleteEnrolment

Code samples

# You can also use wget
curl -X DELETE https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments \
  -H 'Authorization: Bearer {access-token}'

DELETE https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments HTTP/1.1
Host: tenant_id.region.api.wyzed.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments', headers = headers)

print(r.json())

 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/enrolments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /enrolments

Delete an enrolment

Parameters

Name In Type Required Description
user query string false none
course query string false none

Responses

Status Meaning Description Schema
200 OK A successful response None

Test

For testing you have the correct endpoint.

Does not require authorization.

test

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/test \
  -H 'Accept: application/json'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/test HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/test',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/test',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/test', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/test', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/test");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/test", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /test

Endpoint for testing that requests are reaching the server.

Does not require authentication.

Example responses

200 Response

{
  "tid": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response TestResponse

Topics

For managing course topics.

listTopics

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /topics

Lists topics.

Parameters

Name In Type Required Description
cursor query string false none
limit query string(int64) false none
course query string false none
kind query string false none
published query boolean false none

Example responses

200 Response

{
  "kind": "string",
  "items": [
    {
      "kind": "string",
      "hide_heading": true,
      "locked": true,
      "name": "string",
      "created": "string",
      "modified": "string",
      "course": "string",
      "require_confirmation": true,
      "published": true,
      "id": "string"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "course": "string",
  "next_cursor": "string",
  "limit": 200,
  "published": true,
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response TopicList

getTopic

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/topics/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /topics/{id}

Find a topic by id.

Parameters

Name In Type Required Description
id path string true none

Example responses

200 Response

{
  "kind": "string",
  "hide_heading": true,
  "locked": true,
  "name": "string",
  "created": "string",
  "modified": "string",
  "course": "string",
  "require_confirmation": true,
  "published": true,
  "id": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Topic

Tags

View available tags.

listTags

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/tags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /tags

List tags.

Example responses

200 Response

{
  "items": [
    {
      "color": "string",
      "name": "string",
      "id": "string",
      "modified": "string",
      "created": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A successful response TagList

Learners

Manage learner accounts.

addLearner

Code samples

# You can also use wget
curl -X POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

POST https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "phone_number": "string",
  "username": "string",
  "generate_password": true,
  "surname": "string",
  "sso_id": "string",
  "firstname": "string",
  "send_email": true,
  "tags": [
    "string"
  ],
  "send_sms": true,
  "signup_page": "string",
  "profiles": [
    "string"
  ],
  "courses": [
    "string"
  ],
  "password": "string",
  "email": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /learners

Create a new learner.

Body parameter

{
  "phone_number": "string",
  "username": "string",
  "generate_password": true,
  "surname": "string",
  "sso_id": "string",
  "firstname": "string",
  "send_email": true,
  "tags": [
    "string"
  ],
  "send_sms": true,
  "signup_page": "string",
  "profiles": [
    "string"
  ],
  "courses": [
    "string"
  ],
  "password": "string",
  "email": "string"
}

Parameters

Name In Type Required Description
body body AddLearner true none

Example responses

200 Response

{
  "username": "string",
  "surname": "string",
  "image": "string",
  "id": "string",
  "archived": true,
  "sso_id": "string",
  "signup_page": "string",
  "created_by": "string",
  "create_type": "string",
  "email": "string",
  "last_logged_in": "string",
  "phone_number": "string",
  "updated": "string",
  "creator_kind": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "deleted": true,
  "is_admin": true,
  "is_learner": true,
  "password": "string",
  "created": "string",
  "notes": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Learner

listLearners

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /learners

Lists learners.

Parameters

Name In Type Required Description
cursor query string false none
limit query string(int64) false none
signup_page query string false none
tags query array[string] false none
order_by query string false none
order_direction query string false none
email query string false none
username query string false none

Enumerated Values

Parameter Value
order_direction ASC
order_direction DESC

Example responses

200 Response

{
  "username": "string",
  "order_by": "string",
  "tags": [
    "string"
  ],
  "items": [
    {
      "username": "string",
      "surname": "string",
      "image": "string",
      "id": "string",
      "archived": true,
      "sso_id": "string",
      "signup_page": "string",
      "created_by": "string",
      "create_type": "string",
      "email": "string",
      "last_logged_in": "string",
      "phone_number": "string",
      "updated": "string",
      "creator_kind": "string",
      "firstname": "string",
      "tags": [
        "string"
      ],
      "deleted": true,
      "is_admin": true,
      "is_learner": true,
      "password": "string",
      "created": "string",
      "notes": "string"
    }
  ],
  "signup_page": "string",
  "number_found": "string",
  "cursor": "string",
  "order_direction": "ASC",
  "next_cursor": "string",
  "limit": 200,
  "email": "string",
  "more": true
}

Responses

Status Meaning Description Schema
200 OK A successful response LearnerList

getLearnerByEmail

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/email/{email}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /learners/email/{email}

Find learner by email address.

Parameters

Name In Type Required Description
email path string true none

Example responses

200 Response

{
  "username": "string",
  "surname": "string",
  "image": "string",
  "id": "string",
  "archived": true,
  "sso_id": "string",
  "signup_page": "string",
  "created_by": "string",
  "create_type": "string",
  "email": "string",
  "last_logged_in": "string",
  "phone_number": "string",
  "updated": "string",
  "creator_kind": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "deleted": true,
  "is_admin": true,
  "is_learner": true,
  "password": "string",
  "created": "string",
  "notes": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Learner

editLearner

Code samples

# You can also use wget
curl -X PUT https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

PUT https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "phone_number": "string",
  "username": "string",
  "surname": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "notes": "string",
  "id": "string",
  "password": "string",
  "email": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /learners/{id}

Update an existing learner.

Body parameter

{
  "phone_number": "string",
  "username": "string",
  "surname": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "notes": "string",
  "id": "string",
  "password": "string",
  "email": "string"
}

Parameters

Name In Type Required Description
id path string true none
body body EditLearner true none

Example responses

200 Response

{
  "username": "string",
  "surname": "string",
  "image": "string",
  "id": "string",
  "archived": true,
  "sso_id": "string",
  "signup_page": "string",
  "created_by": "string",
  "create_type": "string",
  "email": "string",
  "last_logged_in": "string",
  "phone_number": "string",
  "updated": "string",
  "creator_kind": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "deleted": true,
  "is_admin": true,
  "is_learner": true,
  "password": "string",
  "created": "string",
  "notes": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Learner

getLearnerById

Code samples

# You can also use wget
curl -X GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com
Accept: application/json


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}', headers = headers)

print(r.json())

 'application/json',
    'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /learners/{id}

Find learner by id.

Parameters

Name In Type Required Description
id path string true none

Example responses

200 Response

{
  "username": "string",
  "surname": "string",
  "image": "string",
  "id": "string",
  "archived": true,
  "sso_id": "string",
  "signup_page": "string",
  "created_by": "string",
  "create_type": "string",
  "email": "string",
  "last_logged_in": "string",
  "phone_number": "string",
  "updated": "string",
  "creator_kind": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "deleted": true,
  "is_admin": true,
  "is_learner": true,
  "password": "string",
  "created": "string",
  "notes": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response Learner

deleteLearner

Code samples

# You can also use wget
curl -X DELETE https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id} \
  -H 'Authorization: Bearer {access-token}'

DELETE https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id} HTTP/1.1
Host: tenant_id.region.api.wyzed.com


const headers = {
  'Authorization':'Bearer {access-token}'
};

fetch('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete 'https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}', headers = headers)

print(r.json())

 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://TENANT_ID.REGION.api.wyzed.com/api/v1/learners/{id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /learners/{id}

Delete an existing learner.

Parameters

Name In Type Required Description
id path string true none

Responses

Status Meaning Description Schema
200 OK A successful response None

Schemas

CourseCompletionsResponse

{
  "items": [
    {
      "course": "string",
      "user": "string",
      "id": "string",
      "happened": "2021-07-11T05:44:51Z"
    }
  ],
  "next_cursor": "string",
  "more": true
}

A list of course completion events.

Properties

Name Type Required Restrictions Description
items [CourseCompletion] false none A course completion event.
next_cursor string false none none
more boolean false none none

DuplicateCourse

{
  "complete": true,
  "new_course": "string",
  "progress": "string",
  "old_course": "string",
  "id": "string",
  "stage": "string"
}

View the progress of a duplicate course task.

Properties

Name Type Required Restrictions Description
complete boolean false none none
new_course string false none none
progress string(int64) false none none
old_course string false none none
id string false none none
stage string(int64) false none none

TokenResponse

{
  "aud": "string",
  "access_token": "string",
  "expires_in": "string",
  "token_type": "string",
  "scope": "string",
  "refresh_token": "string",
  "name": "string"
}

A new token.

Properties

Name Type Required Restrictions Description
aud string false none none
access_token string false none none
expires_in string(int64) false none none
token_type string false none none
scope string false none none
refresh_token string false none none
name string false none none

AddCourse

{
  "archived": true,
  "name": "string",
  "display_priority": 1,
  "cover_art": "string",
  "suggested_duration": "string",
  "published": true,
  "description": "string"
}

Create a new course.

Properties

Name Type Required Restrictions Description
archived boolean false none none
name string true none none
display_priority number(double) false none none
cover_art string false none none
suggested_duration string false none none
published boolean false none none
description string false none none

Learner

{
  "username": "string",
  "surname": "string",
  "image": "string",
  "id": "string",
  "archived": true,
  "sso_id": "string",
  "signup_page": "string",
  "created_by": "string",
  "create_type": "string",
  "email": "string",
  "last_logged_in": "string",
  "phone_number": "string",
  "updated": "string",
  "creator_kind": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "deleted": true,
  "is_admin": true,
  "is_learner": true,
  "password": "string",
  "created": "string",
  "notes": "string"
}

A learner

Properties

Name Type Required Restrictions Description
username string false none none
surname string false none none
image string false none none
id string false none none
archived boolean false none none
sso_id string false none none
signup_page string false none none
created_by string false none none
create_type string false none none
email string false none none
last_logged_in string false none none
phone_number string false none none
updated string false none none
creator_kind string false none none
firstname string false none none
tags [string] false none none
deleted boolean false none none
is_admin boolean false none none
is_learner boolean false none none
password string false none none
created string false none none
notes string false none none

Enrolment

{
  "course": "string",
  "user": "string",
  "id": "string",
  "created": "string"
}

A learner's enrolment in a course

Properties

Name Type Required Restrictions Description
course string false none none
user string false none none
id string false none none
created string false none none

UserFieldResource

{
  "kind": "string",
  "name": "string",
  "resource_id": "string"
}

A resource attached to a custom field

Properties

Name Type Required Restrictions Description
kind string false none none
name string false none none
resource_id string false none none

AddLearner

{
  "phone_number": "string",
  "username": "string",
  "generate_password": true,
  "surname": "string",
  "sso_id": "string",
  "firstname": "string",
  "send_email": true,
  "tags": [
    "string"
  ],
  "send_sms": true,
  "signup_page": "string",
  "profiles": [
    "string"
  ],
  "courses": [
    "string"
  ],
  "password": "string",
  "email": "string"
}

Create a new learner.

The password field is required if generate_password is false.

Properties

Name Type Required Restrictions Description
phone_number string false none none
username string false none none
generate_password boolean false none none
surname string true none none
sso_id string false none none
firstname string true none none
send_email boolean false none none
tags [string] false none none
send_sms boolean false none none
signup_page string false none none
profiles [string] false none none
courses [string] false none none
password string false none none
email string true none none

CourseProgress

{
  "user": "string",
  "completed_on": "string",
  "completed": true,
  "course": "string",
  "processed": true,
  "id": "string",
  "overdue": true
}

Properties

Name Type Required Restrictions Description
user string false none none
completed_on string false none none
completed boolean false none none
course string false none none
processed boolean false none none
id string false none none
overdue boolean false none none

TopicProgress

{
  "confirmed": true,
  "completed_on": "string",
  "created": "string",
  "completed": true,
  "modified": "string",
  "confirmed_by": "string",
  "topic": "string",
  "course": "string",
  "completed_by": "string",
  "id": "string",
  "confirmed_on": "string",
  "user": "string"
}

Properties

Name Type Required Restrictions Description
confirmed boolean false none none
completed_on string false none none
created string false none none
completed boolean false none none
modified string false none none
confirmed_by string false none none
topic string false none none
course string false none none
completed_by string false none none
id string false none none
confirmed_on string false none none
user string false none none

UserFieldList

{
  "items": [
    {
      "kind": "string",
      "resource": {
        "kind": "string",
        "name": "string",
        "resource_id": "string"
      },
      "description": "string",
      "created": "string",
      "default": "string",
      "required": true,
      "modified": "string",
      "user_visible": true,
      "user_editable": true,
      "disable_notifications": true,
      "indexed": true,
      "not_applicable": true,
      "id": "string",
      "name": "string"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "next_cursor": "string",
  "limit": 100,
  "more": true
}

A paginated list of custom fields.

Properties

Name Type Required Restrictions Description
items [UserField] false none A custom field
number_found string(int64) false none none
cursor string false none none
next_cursor string false none none
limit string(int64) false none none
more boolean false none none

AddEnrolment

{
  "course": "string",
  "user": "string",
  "send_emails": true
}

Enrol a learner in a course.

Properties

Name Type Required Restrictions Description
course string true none none
user string true none none
send_emails boolean false none none

Profile

{
  "name": "string",
  "created": "string",
  "tags": [
    "string"
  ],
  "modified": "string",
  "courses": [
    "string"
  ],
  "id": "string",
  "permissions": [
    {
      "user_field": "string",
      "not_applicable": true,
      "user_editable": true,
      "user_visible": true
    }
  ]
}

A profile.

Properties

Name Type Required Restrictions Description
name string false none none
created string false none none
tags [string] false none none
modified string false none none
courses [string] false none none
id string false none none
permissions [ProfilePermission] false none Custom field permission to go with a profile.

EnrolmentList

{
  "items": [
    {
      "course": "string",
      "user": "string",
      "id": "string",
      "created": "string"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "course": "string",
  "next_cursor": "string",
  "limit": 200,
  "user": "string",
  "more": true
}

A list of enrolments.

Properties

Name Type Required Restrictions Description
items [Enrolment] false none A learner's enrolment in a course
number_found string(int64) false none none
cursor string false none none
course string false none none
next_cursor string false none none
limit string(int64) false none none
user string false none none
more boolean false none none

UserField

{
  "kind": "string",
  "resource": {
    "kind": "string",
    "name": "string",
    "resource_id": "string"
  },
  "description": "string",
  "created": "string",
  "default": "string",
  "required": true,
  "modified": "string",
  "user_visible": true,
  "user_editable": true,
  "disable_notifications": true,
  "indexed": true,
  "not_applicable": true,
  "id": "string",
  "name": "string"
}

A custom field

Properties

Name Type Required Restrictions Description
kind string false none none
resource UserFieldResource false none A resource attached to a custom field
description string false none none
created string false none none
default string false none none
required boolean false none none
modified string false none none
user_visible boolean false none none
user_editable boolean false none none
disable_notifications boolean false none none
indexed boolean false none none
not_applicable boolean false none none
id string false none none
name string false none none

Course

{
  "submission_notifications": "string",
  "renewal_type": "string",
  "creator": "string",
  "display_priority": 0,
  "show_details": true,
  "track_progress": true,
  "id": "string",
  "archived": true,
  "disable_certificates": true,
  "show_grade_certificate": true,
  "completion_notifications": "string",
  "has_cover_art": true,
  "pass_mark_type": "string",
  "renewal_date": "string",
  "cover_art_url": "string",
  "description": "string",
  "suggested_duration": "string",
  "user_version": "string",
  "renewal_repeat": true,
  "auto_due_seconds": "string",
  "show_grade_learner": true,
  "permalink": "string",
  "locked": true,
  "name": "string",
  "created": "string",
  "auto_due_type": "none",
  "is_graded": true,
  "renewal_days": "string",
  "modified": "string",
  "enable_progression": true,
  "pass_mark": "string",
  "thumbnail_url": "string",
  "published": true,
  "auto_due_date": "2021-07-11T05:44:51Z"
}

A Course

Properties

Name Type Required Restrictions Description
submission_notifications string false none none
renewal_type string false none none
creator string false none none
display_priority number(double) false none none
show_details boolean false none none
track_progress boolean false none none
id string false none none
archived boolean false none none
disable_certificates boolean false none none
show_grade_certificate boolean false none none
completion_notifications string false none none
has_cover_art boolean false none none
pass_mark_type string false none none
renewal_date string false none none
cover_art_url string false none none
description string false none none
suggested_duration string false none none
user_version string(int64) false none none
renewal_repeat boolean false none none
auto_due_seconds string(int64) false none none
show_grade_learner boolean false none none
permalink string false none none
locked boolean false none none
name string false none none
created string false none none
auto_due_type string false none none
is_graded boolean false none none
renewal_days string(int64) false none none
modified string false none none
enable_progression boolean false none none
pass_mark string(int64) false none none
thumbnail_url string false none none
published boolean false none none
auto_due_date string(date-time) false none none

CourseCompletion

{
  "course": "string",
  "user": "string",
  "id": "string",
  "happened": "2021-07-11T05:44:51Z"
}

A course completion event.

Properties

Name Type Required Restrictions Description
course string false none none
user string false none none
id string false none none
happened string(date-time) false none none

TestResponse

{
  "tid": "string"
}

Response from the test endpoint.

Properties

Name Type Required Restrictions Description
tid string false none none

Tag

{
  "color": "string",
  "name": "string",
  "id": "string",
  "modified": "string",
  "created": "string"
}

A Tag

Properties

Name Type Required Restrictions Description
color string false none none
name string true none none
id string false none none
modified string false none none
created string false none none

TopicList

{
  "kind": "string",
  "items": [
    {
      "kind": "string",
      "hide_heading": true,
      "locked": true,
      "name": "string",
      "created": "string",
      "modified": "string",
      "course": "string",
      "require_confirmation": true,
      "published": true,
      "id": "string"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "course": "string",
  "next_cursor": "string",
  "limit": 200,
  "published": true,
  "more": true
}

A list of topics.

Properties

Name Type Required Restrictions Description
kind string false none none
items [Topic] false none none
number_found string(int64) false none none
cursor string false none none
course string false none none
next_cursor string false none none
limit string(int64) false none none
published boolean false none none
more boolean false none none

MeResponse

{
  "tid": "string",
  "domain": "string",
  "aud": "string",
  "name": "string"
}

Response from the me service.

Properties

Name Type Required Restrictions Description
tid string false none none
domain string false none none
aud string false none none
name string false none none

TopicProgressList

{
  "topic": "string",
  "items": [
    {
      "confirmed": true,
      "completed_on": "string",
      "created": "string",
      "completed": true,
      "modified": "string",
      "confirmed_by": "string",
      "topic": "string",
      "course": "string",
      "completed_by": "string",
      "id": "string",
      "confirmed_on": "string",
      "user": "string"
    }
  ],
  "completed": true,
  "number_found": "string",
  "cursor": "string",
  "course": "string",
  "next_cursor": "string",
  "limit": 200,
  "user": "string",
  "more": true
}

A list of topic progress objects.

Properties

Name Type Required Restrictions Description
topic string false none none
items [TopicProgress] false none none
completed boolean false none none
number_found string(int64) false none none
cursor string false none none
course string false none none
next_cursor string false none none
limit string(int64) false none none
user string false none none
more boolean false none none

TokenRequest

{
  "code": "string",
  "audience": "string",
  "redirect_uri": "string",
  "client_id": "string",
  "client_secret": "string",
  "grant_type": "string",
  "refresh_token": "string"
}

Request a new token.

Properties

Name Type Required Restrictions Description
code string false none none
audience string false none none
redirect_uri string false none none
client_id string(int64) false none none
client_secret string false none none
grant_type string false none none
refresh_token string false none none

ProfileList

{
  "items": [
    {
      "name": "string",
      "created": "string",
      "tags": [
        "string"
      ],
      "modified": "string",
      "courses": [
        "string"
      ],
      "id": "string",
      "permissions": [
        {
          "user_field": "string",
          "not_applicable": true,
          "user_editable": true,
          "user_visible": true
        }
      ]
    }
  ]
}

A list of all profiles.

Properties

Name Type Required Restrictions Description
items [Profile] false none A profile.

EditLearner

{
  "phone_number": "string",
  "username": "string",
  "surname": "string",
  "firstname": "string",
  "tags": [
    "string"
  ],
  "notes": "string",
  "id": "string",
  "password": "string",
  "email": "string"
}

Update an existing learner.

All fields will be updated except for password, which will only be changed if present in the request.

Properties

Name Type Required Restrictions Description
phone_number string false none none
username string false none none
surname string true none none
firstname string true none none
tags [string] false none none
notes string false none none
id string false none none
password string false none none
email string true none none

SignupPageList

{
  "items": [
    {
      "page_description": "string",
      "page_title": "string",
      "name": "string",
      "created": "string",
      "url": "string",
      "tags": [
        "string"
      ],
      "modified": "string",
      "courses": [
        "string"
      ],
      "id": "string"
    }
  ]
}

A list of all signup pages.

Properties

Name Type Required Restrictions Description
items [SignupPage] false none none

SignupPage

{
  "page_description": "string",
  "page_title": "string",
  "name": "string",
  "created": "string",
  "url": "string",
  "tags": [
    "string"
  ],
  "modified": "string",
  "courses": [
    "string"
  ],
  "id": "string"
}

Properties

Name Type Required Restrictions Description
page_description string false none none
page_title string false none none
name string false none none
created string false none none
url string false none none
tags [string] false none none
modified string false none none
courses [string] false none none
id string false none none

UserFieldPermission

{
  "user_field": "string",
  "not_applicable": true,
  "user": "string",
  "user_visible": true,
  "user_editable": true
}

Properties

Name Type Required Restrictions Description
user_field string false none none
not_applicable boolean false none none
user string false none none
user_visible boolean false none none
user_editable boolean false none none

Record

{
  "attachments": [
    {
      "kind": "string",
      "course_name": "string",
      "blob_key": "string",
      "user_log": "string",
      "user_field_file": "string",
      "filename": "string",
      "course": "string",
      "content_type": "string",
      "file_size": "string"
    }
  ],
  "reference": "string",
  "cost": "string",
  "user_visible": true,
  "achievable": true,
  "file_size": "string",
  "id": "string",
  "payment_date": "string",
  "modified_by": "string",
  "user_editable": true,
  "has_value": true,
  "blob_key": "string",
  "created_by": "string",
  "filename": "string",
  "user_field": "string",
  "valid": true,
  "not_applicable": true,
  "expires_on": "string",
  "upcoming": true,
  "expires": true,
  "achieved_on": "string",
  "user": "string",
  "content_type": "string",
  "active": true,
  "expired": true,
  "created": "string",
  "notes": "string",
  "modified": "string",
  "value": "string",
  "training_provider": "string"
}

A custom field record

Properties

Name Type Required Restrictions Description
attachments [RecordAttachment] false none An attachment to a record
reference string false none none
cost string false none none
user_visible boolean false none none
achievable boolean false none none
file_size string(int64) false none none
id string false none none
payment_date string false none none
modified_by string false none none
user_editable boolean false none none
has_value boolean false none none
blob_key string false none none
created_by string false none none
filename string false none none
user_field string false none none
valid boolean false none none
not_applicable boolean false none none
expires_on string false none none
upcoming boolean false none none
expires boolean false none none
achieved_on string false none none
user string false none none
content_type string false none none
active boolean false none none
expired boolean false none none
created string false none none
notes string false none none
modified string false none none
value string false none none
training_provider string false none none

ProfilePermission

{
  "user_field": "string",
  "not_applicable": true,
  "user_editable": true,
  "user_visible": true
}

Custom field permission to go with a profile.

Properties

Name Type Required Restrictions Description
user_field string false none none
not_applicable boolean false none none
user_editable boolean false none none
user_visible boolean false none none

RecordAttachment

{
  "kind": "string",
  "course_name": "string",
  "blob_key": "string",
  "user_log": "string",
  "user_field_file": "string",
  "filename": "string",
  "course": "string",
  "content_type": "string",
  "file_size": "string"
}

An attachment to a record

Properties

Name Type Required Restrictions Description
kind string false none none
course_name string false none none
blob_key string false none none
user_log string false none none
user_field_file string false none none
filename string false none none
course string false none none
content_type string false none none
file_size string(int64) false none none

Topic

{
  "kind": "string",
  "hide_heading": true,
  "locked": true,
  "name": "string",
  "created": "string",
  "modified": "string",
  "course": "string",
  "require_confirmation": true,
  "published": true,
  "id": "string"
}

Properties

Name Type Required Restrictions Description
kind string false none none
hide_heading boolean false none none
locked boolean false none none
name string true none none
created string false none none
modified string false none none
course string false none none
require_confirmation boolean false none none
published boolean true none none
id string false none none

CourseList

{
  "archived": true,
  "items": [
    {
      "submission_notifications": "string",
      "renewal_type": "string",
      "creator": "string",
      "display_priority": 0,
      "show_details": true,
      "track_progress": true,
      "id": "string",
      "archived": true,
      "disable_certificates": true,
      "show_grade_certificate": true,
      "completion_notifications": "string",
      "has_cover_art": true,
      "pass_mark_type": "string",
      "renewal_date": "string",
      "cover_art_url": "string",
      "description": "string",
      "suggested_duration": "string",
      "user_version": "string",
      "renewal_repeat": true,
      "auto_due_seconds": "string",
      "show_grade_learner": true,
      "permalink": "string",
      "locked": true,
      "name": "string",
      "created": "string",
      "auto_due_type": "none",
      "is_graded": true,
      "renewal_days": "string",
      "modified": "string",
      "enable_progression": true,
      "pass_mark": "string",
      "thumbnail_url": "string",
      "published": true,
      "auto_due_date": "2021-07-11T05:44:51Z"
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "next_cursor": "string",
  "limit": 200,
  "published": true,
  "more": true
}

A list of courses.

Properties

Name Type Required Restrictions Description
archived boolean false none none
items [Course] false none A Course
number_found string(int64) false none none
cursor string false none none
next_cursor string false none none
limit string(int64) false none none
published boolean false none none
more boolean false none none

UserFieldPermissionList

{
  "items": [
    {
      "user_field": "string",
      "not_applicable": true,
      "user": "string",
      "user_visible": true,
      "user_editable": true
    }
  ],
  "number_found": "string",
  "cursor": "string",
  "next_cursor": "string",
  "limit": 100,
  "user": "string",
  "more": true
}

Properties

Name Type Required Restrictions Description
items [UserFieldPermission] false none none
number_found string(int64) false none none
cursor string false none none
next_cursor string false none none
limit string(int64) false none none
user string false none none
more boolean false none none

AddDuplicateCourse

{
  "course": "string",
  "copy_enrolments": true,
  "copy_responses": true,
  "name": "string",
  "published": true
}

Create a duplicate of an existing course.

Properties

Name Type Required Restrictions Description
course string true none none
copy_enrolments boolean false none none
copy_responses boolean false none none
name string false none none
published boolean false none none

LearnerList

{
  "username": "string",
  "order_by": "string",
  "tags": [
    "string"
  ],
  "items": [
    {
      "username": "string",
      "surname": "string",
      "image": "string",
      "id": "string",
      "archived": true,
      "sso_id": "string",
      "signup_page": "string",
      "created_by": "string",
      "create_type": "string",
      "email": "string",
      "last_logged_in": "string",
      "phone_number": "string",
      "updated": "string",
      "creator_kind": "string",
      "firstname": "string",
      "tags": [
        "string"
      ],
      "deleted": true,
      "is_admin": true,
      "is_learner": true,
      "password": "string",
      "created": "string",
      "notes": "string"
    }
  ],
  "signup_page": "string",
  "number_found": "string",
  "cursor": "string",
  "order_direction": "ASC",
  "next_cursor": "string",
  "limit": 200,
  "email": "string",
  "more": true
}

A list of learners.

Properties

Name Type Required Restrictions Description
username string false none none
order_by string false none none
tags [string] false none none
items [Learner] false none A learner
signup_page string false none none
number_found string(int64) false none none
cursor string false none none
order_direction string false none none
next_cursor string false none none
limit string(int64) false none none
email string false none none
more boolean false none none

Enumerated Values

Property Value
order_direction ASC
order_direction DESC

TagList

{
  "items": [
    {
      "color": "string",
      "name": "string",
      "id": "string",
      "modified": "string",
      "created": "string"
    }
  ]
}

A list of all tags.

Properties

Name Type Required Restrictions Description
items [Tag] false none A Tag