Methods
user.create
This method creates a new learner or admin at the org level.
URL
https://customdomain.com/api/user.create
Batch URL
https://customdomain.com/api/batch/user.create
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
login_id | Required | |
last_name | Required | |
first_name | Required | |
password | Required | Password must be 8 characters or more |
password_change_required | Optional | Valid values: true , false . This will be set to false if this argument is not included. |
role | Required | Valid values: "learner" , "admin" |
language | Required | This is a letter code representing the language that the user's interface will be set in. See valid values below |
time_zone | Required | The time zone that the user's interface will be set in. Use "TZ database name" from this list. |
profile | Optional | See more below |
language
values
Valid Code | Language |
---|---|
en | English |
ja | Japanese |
es | Spanish |
zh_CN | Simplified Chinese |
zh_TW | Traditional Chinese |
fr | French |
vi | Vietnamese |
de | German |
id | Indonesian |
it | Italian |
ko | Korean |
pt | Portuguese |
ru | Russian |
th | Thai |
Profile
There are currently 6 types of fields. Make sure you pass the right type of value for the type of field.
Field type | Valid JSON type |
---|---|
text | String |
number | Integer or number |
date | String with the correct format. Use ISO 8601 format (YYYY-MM-DD). For example, for January 17, 2019, provide 2019-01-17 . |
text_choice | String. This is the choice ID |
number_choice | String. This is the choice ID |
date_choice | String. This is the choice ID |
Example:
[
{
"field_id": "hvGva1TxJ08z",
"value": "Value for text field"
},
{
"field_id": "ySU2O89tx5PQ",
"value": 100
},
{
"field_id": "5mo6hek3p7WP",
"value": "2019-01-17"
},
{
"field_id": "tJWOy9kqL0ru",
"value": "IKR8fotbjgUT"
},
{
"field_id": "OCDY271wu2Dv",
"value": "1qTZ7g3GPRkc"
},
{
"field_id": "ykjUihjjlOdW",
"value": "qP8foksNsuOE"
}
]
Request
{
"login_id": "johnsmith@example.com",
"last_name": "Smith",
"first_name": "John",
"password": "a6nKr2rw",
"role": "learner",
"language": "en",
"time_zone": "Asia/Tokyo",
"profile": [
{
"field_id": "hvGva1TxJ08z",
"value": "Value for text field"
}
],
"password_change_required": true
}
Response
A successful response will return the ID of the created user. Example response:
{
"status": "success",
"data": {
"user_id": "wLQPaRVUME7f"
}
}
Errors
Code | Description |
---|---|
login_id_exists | The login ID has already been used for another user |
invalid_password | The user could not be created with the provided password |
invalid_time_zone | The user could not be created with the provided time zone |
invalid_language | The user could not be created with the provided language |
invalid_role | The user could not be created with the provided role |
invalid_profile | The provided profile values are invalid. Make sure that no more than one value for a field is sent. Also make sure the correct type of value is sent for the type of field. |
user.update
URL
https://customdomain.com/api/user.update
Batch URL
https://customdomain.com/api/batch/user.update
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
user_id | Required | This is the ID of the user being updated |
login_id | Optional | |
last_name | Optional | |
first_name | Optional | |
language | Optional | This is a letter code representing the language that the user's interface will be set in. See valid values below |
time_zone | Optional | The time zone that the user's interface will be set in. Use "TZ database name" from this list. |
profile | Optional | See more below |
language
values
Valid Code | Language |
---|---|
en | English |
ja | Japanese |
es | Spanish |
zh_CN | Simplified Chinese |
zh_TW | Traditional Chinese |
fr | French |
vi | Vietnamese |
de | German |
id | Indonesian |
it | Italian |
ko | Korean |
pt | Portuguese |
ru | Russian |
th | Thai |
Profile
There are currently 6 types of fields. Make sure you pass the right type of value for the type of field.
Field type | Valid JSON type |
---|---|
text | String |
number | Integer or number |
date | String with the correct format. Use ISO 8601 format (YYYY-MM-DD). For example, for January 17, 2019, provide 2019-01-17 . |
text_choice | String. This is the choice ID |
number_choice | String. This is the choice ID |
date_choice | String. This is the choice ID |
Updating a field will replace any existing values for the field for that user.
Example:
[
{
"field_id": "hvGva1TxJ08z",
"value": "Value for text field"
},
{
"field_id": "ySU2O89tx5PQ",
"value": 100
},
{
"field_id": "5mo6hek3p7WP",
"value": "2019-01-17"
},
{
"field_id": "tJWOy9kqL0ru",
"value": "IKR8fotbjgUT"
},
{
"field_id": "OCDY271wu2Dv",
"value": "1qTZ7g3GPRkc"
},
{
"field_id": "ykjUihjjlOdW",
"value": "qP8foksNsuOE"
}
]
Request
{
"user_id": "wLQPaRVUME7f",
"language": "ja",
"profile": [
{
"field_id": "hvGva1TxJ08z",
"value": "New value for text field"
}
]
}
Response
{
"status": "success",
"data": null
}
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
login_id_exists | The login ID has already been used for another user |
invalid_time_zone | The user could not be updated with the provided time |
invalid_language | The user could not be updated with the provided language |
invalid_profile | The provided profile values are invalid. Make sure that no more than one value for a field is sent. Also make sure the correct type of value is sent for the type of field. |
user.info
URL
https://customdomain.com/api/user.info
Planned
Batch URLhttps://customdomain.com/api/batch/user.info
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
user_id | Required |
Request
{
"user_id": "wLQPaRVUME7f"
}
Response
{
"status": "success",
"data": {
"user_id": "wLQPaRVUME7f",
"login_id": "johnsmith@example.com",
"last_name": "Smith",
"first_name": "John",
"time_zone": "Asia/Tokyo",
"language": "en",
"profile": [
{
"field_id": "hvGva1TxJ08z",
"name": "Text field",
"values": ["Value for text field"]
},
{
"field_id": "tJWOy9kqL0ru",
"name": "Text choice field",
"values": [
{
"choice_id": "IArmC6RUe4l3",
"value": "Choice 1"
}
]
}
]
}
}
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
user.delete
This method removes the user from all their groups and courses.
URL
https://customdomain.com/api/user.delete
Batch URL
https://customdomain.com/api/batch/user.delete
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
user_id | Required |
Request
{
"user_id": "wLQPaRVUME7f"
}
Response
{
"status": "success",
"data": null
}
This method returns a success response after the request was processed successfully. This means the operation can still be in progress after receiving this response but it will eventually be completed.
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
user.merge
This method merges the data from the merge user to the base user.
URL
https://customdomain.com/api/user.merge
Batch URL
https://customdomain.com/api/batch/user.merge
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
base_user_id | Required | ID that will remain after the merge |
merge_user_id | Required | ID that will be merged into the "base_user_id" |
Request
{
"base_user_id": "wLQPaRVUME7f",
"merge_user_id": "dCl2tVjYpaUD"
}
Response
{
"status": "success",
"data": null
}
This method returns a success response after the request was processed successfully. This means the operation can still be in progress after receiving this response but it will eventually be completed.
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
cant_merge_same_user | Cannot merge the same user |
user.deactivate
This method deactivates an user so that the user cannot access and use the platform until they are reactivated.
URL
https://customdomain.com/api/user.deactivate
Batch URL
https://customdomain.com/api/batch/user.deactivate
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
user_id | Required |
Request
{
"user_id": "wLQPaRVUME7f"
}
Response
{
"status": "success",
"data": null
}
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
user_already_deactivated | Cannot deactivate the deactivated user |
user.reactivate
This method reactivates an user so that the user can access and use the platform.
URL
https://customdomain.com/api/user.reactivate
Batch URL
https://customdomain.com/api/batch/user.reactivate
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
user_id | Required |
Request
{
"user_id": "wLQPaRVUME7f"
}
Response
{
"status": "success",
"data": null
}
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
user_already_activated | Cannot reactive the active user |
user.groups.list
URL
https://customdomain.com/api/user.groups.list
Arguments
Argument | Required | Description |
---|---|---|
user_id | Required |
Request
{
"user_id": "fgUxj8SO6AaB"
}
Response
{
"status": "success",
"data": [
{
"group_id": "cwo9aFjilDyg",
"name": "Example group A"
},
{
"group_id": "YeMxzbxY5yDS",
"name": "Example group B"
}
]
}
Errors
Code | Description |
---|---|
user_not_found | The user could not be found with the provided ID |
org.users.list
Returns a paginated list of users in the org.
URL
https://customdomain.com/api/org.users.list
Arguments
Argument | Required | Description |
---|---|---|
next | Optional | Cursor received in the previous request |
Request
{}
Response
{
"status": "success",
"data": {
"users": [
{
"user_id": "wLQPaRVUME7f",
"login_id": "user1@example.com"
},
(...rest of data)
],
"next": "RGVRt1m9DRWp"
}
}
Request with next cursor
{
"next": "RGVRt1m9DRWp"
}
Response with no next cursor
{
"status": "success",
"data": {
"users": [
{
"user_id": "fgUxj8SO6AaB",
"login_id": "user3@example.com"
}
],
"next": null
}
}
org.users.search
Returns a paginated list of users based on search terms. Currently you can
search users by partial matches on login_id
.
Constraints
- Each search term needs at least 3 characters.
- The maximum number of search terms per request is 100.
URL
https://customdomain.com/api/org.users.search
Arguments
Argument | Required | Description |
---|---|---|
login_id | Required | Comma separated string of login IDs |
next | Optional | Cursor received in the previous request |
Request
{
"login_id": "@example.com,@example2.com"
}
Response
{
"status": "success",
"data": {
"users": [
{
"user_id": "wLQPaRVUME7f",
"login_id": "user1@example.com"
},
{
"user_id": "9zQEwIZscwhp",
"login_id": "user2@example2.com"
},
(...rest of data)
],
"next": "RGVRt1m9DRWp"
}
}
Request with next cursor
{
"login_id": "@example.com,@example2.com",
"next": "RGVRt1m9DRWp"
}
Response with no next cursor
{
"status": "success",
"data": {
"users": [
{
"user_id": "fgUxj8SO6AaB",
"login_id": "user3@example.com"
}
],
"next": null
}
}
org.groups.list
URL
https://customdomain.com/api/org.groups.list
Request
{}
Response
The parent ID for each group tells you the position of the group in the org's tree. The org level group has no parent ID.
{
"status": "success",
"data": [
{
"group_id": "cwo9aFjilDyg",
"name": "Example group A",
"parent_id": null
},
{
"group_id": "YeMxzbxY5yDS",
"name": "Example group B",
"parent_id": "cwo9aFjilDyg"
},
{
"group_id": "YeMxzbxY5yDS",
"name": "Example group C",
"parent_id": "cwo9aFjilDyg"
}
]
}
org.courses.list
Returns a paginated list of courses in the org.
URL
https://customdomain.com/api/org.courses.list
Arguments
Argument | Required | Description |
---|---|---|
next | Optional | Cursor received in the previous request |
Request
{}
Response
{
"status": "success",
"data": {
"courses": [
{
"course_id": "tNtGFwMR8fFm",
"title": "Example course 1"
},
(...rest of data)
],
"next": "FSaRYeqE8Nzk"
}
}
Request with next cursor
{
"next": "FSaRYeqE8Nzk"
}
Response with no next cursor
{
"status": "success",
"data": {
"courses": [
{
"course_id": "h1il3qxKHYN6",
"title": "Example course 101"
}
],
"next": null
}
}
org.profile.list
Returns a list of profile fields in the org.
URL
https://customdomain.com/api/org.profile.list
Request
{}
Response
{
"status": "success",
"data": [
{
"field_id": "hvGva1TxJ08z",
"name": "Text profile field",
"type": "text"
},
{
"field_id": "ySU2O89tx5PQ",
"name": "Number profile field",
"type": "number"
},
{
"field_id": "5mo6hek3p7WP",
"name": "Date field",
"type": "date"
},
{
"field_id": "tJWOy9kqL0ru",
"name": "Text choice field",
"type": "text_choice",
"choices": [
{
"choice_id": "IKR8fotbjgUT",
"value": "Value 1 for text choice field"
},
{
"choice_id": "Eq77H5mkOCn9",
"value": "Value 2 for text choice field"
}
]
},
{
"field_id": "OCDY271wu2Dv",
"name": "Number choice profile field",
"type": "number_choice",
"choices": [
{
"choice_id": "1qTZ7g3GPRkc",
"value": 100
},
{
"choice_id": "5fYhEFHz8fil",
"value": 200
}
]
},
{
"field_id": "ykjUihjjlOdW",
"name": "Date choice profile field",
"type": "date_choice",
"choices": [
{
"choice_id": "qP8foksNsuOE",
"value": "2019-01-19"
},
{
"choice_id": "kl7boFCWLiDv",
"value": "2019-02-19"
}
]
}
]
}
org.reports.list
Returns a paginated list of reports in the org.
URL
https://customdomain.com/api/org.reports.list
Arguments
Argument | Required | Description |
---|---|---|
next | Optional | Cursor received in the previous request |
Request
{}
Response
{
"status": "success",
"data": {
"reports": [
{
"report_id": "32O31xMb2R",
"title": "Learner progress report",
"type": "learners",
},
(...rest of data)
],
"next": "Bp0mAXl0GQ"
}
}
Report properties
Property | Description |
---|---|
report_id | The ID of the report. |
title | The title of the report. |
type | The report type: "learners" , "courses" , "submission_rates" , "submissions" , "people" , "video_analytics" , "activities" , "activity_solutions" , "submission_answers" , "udemy_user_activity" , "udemy_user_course_activity" , "udemy_user_progress" . |
Request with next cursor
{
"next": "Bp0mAXl0GQ"
}
Response with no next cursor
{
"status": "success",
"data": {
"reports": [
{
"report_id": "6r1w67Yw2k",
"title": "Confirm certification",
"type": "people",
},
],
"next": null
}
}
group.user.add
This method adds a user to the specified group.
URL
https://customdomain.com/api/group.user.add
Batch URL
https://customdomain.com/api/batch/group.user.add
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
group_id | Required | |
user_id | Required | |
role | Required | Valid values: "learner" , "admin" |
Request
{
"group_id": "cwo9aFjilDyg",
"user_id": "wLQPaRVUME7f",
"role": "learner"
}
Response
{
"status": "success",
"data": null
}
Errors
Code | Description |
---|---|
group_not_found | The group could not be found with the provided ID |
user_not_found | The user could not be found with the provided ID |
invalid_role | The user could not be created with the provided role |
group.user.remove
This method removes a user from the specified group.
URL
https://customdomain.com/api/group.user.remove
Batch URL
https://customdomain.com/api/batch/group.user.remove
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
group_id | Required | |
user_id | Required | |
role | Required | Valid values: "learner" , "admin" |
Request
{
"group_id": "cwo9aFjilDyg",
"user_id": "wLQPaRVUME7f",
"role": "learner"
}
Response
{
"status": "success",
"data": null
}
This method returns a success response after the request was processed successfully. This means the operation can still be in progress after receiving this response but it will eventually be completed.
Errors
Code | Description |
---|---|
group_not_found | The group could not be found with the provided ID |
user_not_found | The user could not be found with the provided ID |
invalid_role | The user could not be created with the provided role |
group.users.list
Returns a paginated list of users in a group.
URL
https://customdomain.com/api/group.users.list
Arguments
Argument | Required | Description |
---|---|---|
group_id | Required | |
next | Optional | Cursor received in the previous request |
Request
{
"group_id": "cwo9aFjilDyg"
}
Response
{
"status": "success",
"data": {
"users": [
{
"user_id": "wLQPaRVUME7f",
"login_id": "user1@example.com",
"role": "learner"
},
(...rest of data)
],
"next": "RGVRt1m9DRWp"
}
}
Roles
The three possible values for role
are "learner"
, "admin"
, and "instructor"
.
Request with next cursor
{
"group_id": "cwo9aFjilDyg",
"next": "RGVRt1m9DRWp"
}
Response with no next cursor
{
"status": "success",
"data": {
"users": [
{
"user_id": "fgUxj8SO6AaB",
"login_id": "user3@example.com",
"role": "learner"
}
],
"next": null
}
}
Errors
Code | Description |
---|---|
group_not_found | The group could not be found with the provided ID |
course.info
URL
https://customdomain.com/api/course.info
Planned
Batch URLhttps://customdomain.com/api/batch/course.info
See batch request documentation
Arguments
Argument | Required | Description |
---|---|---|
course_id | Required |
Request
{
"course_id": "B9Bp9jpHhemG"
}
Response
{
"status": "success",
"data": {
"course_id": "B9Bp9jpHhemG",
"title": "Example course",
"title_translations": [
{
"language": "ja",
"value": "Translated course title"
}
],
"location": "Example location",
"start_date": "2019-01-31",
"end_date": "2019-02-28",
"registration_end_date": "2019-01-30",
"passing_grade": "enabled",
"passing_grade_percentage": 80,
"learner_maximum": "enabled",
"learner_maximum_count": 10,
"learner_waitlist": "enabled",
"learner_waitlist_count": 5,
"learner_leave_course": "enabled",
"messages": "enabled",
"instructor_count": 1,
"learner_count": 10,
"status": "active"
}
}
Some course properties can be null
if they aren't set or applicable
{
"status": "success",
"data": {
"course_id": "B9Bp9jpHhemG",
"title": "Example course",
"title_translations": [],
"location": null,
"start_date": null,
"end_date": null,
"registration_end_date": null,
"passing_grade": "disabled",
"passing_grade_percentage": null,
"learner_maximum": "disabled",
"learner_maximum_count": null,
"learner_waitlist": null,
"learner_waitlist_count": null,
"learner_leave_course": "enabled",
"messages": "disabled",
"instructor_count": 0,
"learner_count": 0,
"status": "active"
}
}
Course properties
Property | Description |
---|---|
passing_grade | Possible values: "enabled" , "disabled" |
passing_grade_percentage | If passing_grade is enabled , this property will be a number representing a percentage, otherwise it will be null |
learner_maximum | Possible values: "enabled" , "disabled" |
learner_maximum_count | If learner_maximum is "enabled" , this property will be a number, otherwise it will be null |
learner_waitlist | If learner_maximum is "enabled" , the possible values for this property are "enabled" and "disabled" , otherwise it will be null |
learner_waitlist_count | If learner_waitlist is "enabled" , this property will be a number, otherwise it will be null |
learner_leave_course | Possible values: "enabled" , "disabled" |
messages | Possible values: "enabled" , "disabled" |
status | Possible values: "active" , "archived" |
Errors
Code | Description |
---|---|
course_not_found | The course could not be found with the provided ID |
course.approvers.list
Returns a paginated list of course enrollment approval relationships.
URL
https://customdomain.com/api/course.approvers.list
Arguments
Argument | Required | Description |
---|---|---|
login_id | Optional | Specifies a full or partial user login ID to search. Returns all rows where users with matching login IDs (including partial matches) are either approvers or requesters. |
next | Optional | Cursor received in the previous request. |
Request
{}
Response
{
"status": "success",
"data": {
"relationships": [
{
"approver": {
"user_id": "fgUxj8SO6AaB",
"first_name": "John",
"last_name": "Smith",
"login_id": "approver@example.com",
},
"requester": {
"user_id": "k2eqgkjd24",
"first_name": "Jack",
"last_name": "Wilson",
"login_id": "requester@example.com",
},
},
(...rest of data)
],
"next": "YLk0alrDdP",
}
}
Request with login ID search
{
"login_id": "example@example.com"
}
Response with login ID search
{
"status": "success",
"data": {
"relationships": [
{
"approver": {
"user_id": "fgUxj8SO6AaB",
"first_name": "John",
"last_name": "Smith",
"login_id": "example@example.com",
},
"requester": {
"user_id": "k2eqgkjd24",
"first_name": "Jack",
"last_name": "Wilson",
"login_id": "requester@example.com",
},
},
{
"approver": {
"user_id": "32O6b96l0R",
"first_name": "Marry",
"last_name": "Nguyen",
"login_id": "approver1@example.com",
},
"requester": {
"user_id": "fgUxj8SO6AaB",
"first_name": "John",
"last_name": "Smith",
"login_id": "example@example.com",
},
},
(...rest of data)
],
"next": "YLk0alrDdP",
}
}
Request with next cursor
{
"next": "RGVRt1m9DRWp"
}
Response with no next cursor
{
"status": "success",
"data": {
"relationships": [
{
"approver": {
"user_id": "fgUxj8SO6AaB",
"first_name": "John",
"last_name": "Smith",
"login_id": "approver@example.com",
},
"requester": {
"user_id": "k2eqgkjd24",
"first_name": "Jack",
"last_name": "Wilson",
"login_id": "requester@example.com",
},
},
(...rest of data)
],
"next": null,
}
}
Errors
Code | Description |
---|---|
feature_not_enabled | This feature is not enabled for the provided client. |
course.approvers.add
This method adds a new course enrollment approval relationship.
URL
https://customdomain.com/api/course.approvers.add
Arguments
Argument | Required |
---|---|
approver_id | Required |
requester_id | Required |
Request
{
"approver_id": "cwo9aFjilDyg",
"requester_id": "wLQPaRVUME7f",
}
Response
{
"status": "success",
"data": null
}
Errors
Code | Description |
---|---|
approver_not_found | The approver could not be found with the provided ID. |
requester_not_found | The requester could not be found with the provided ID. |
relationship_exists | The course enrollment approval relationship already exists. |
feature_not_enabled | This feature is not enabled for the provided client. |
course.approvers.remove
This method removes a course enrollment approval relationship.
URL
https://customdomain.com/api/course.approvers.remove
Arguments
Argument | Required |
---|---|
approver_id | Required |
requester_id | Required |
Request
{
"approver_id": "cwo9aFjilDyg",
"requester_id": "wLQPaRVUME7f",
}
Response
{
"status": "success",
"data": null
}
Errors
Code | Description |
---|---|
approver_not_found | The approver could not be found with the provided ID. |
requester_not_found | The requester could not be found with the provided ID. |
relationship_not_found | The course enrollment approval relationship does not exist. |
feature_not_enabled | This feature is not enabled for the provided client. |
report.export
Exports report data based on specified report type or report ID.
URL
https://customdomain.com/api/report.export
Arguments
Argument | Required | Description |
---|---|---|
report_type | Optional | Specifies the type of report to export. Refer to the table below for valid values. Must be provided if report_id is not provided, and should not be provided in combination with report_id . |
report_id | Optional | Specifies the ID of report to export. Must be provided if report_type is not provided, and should not be provided in combination with report_type . |
language | Required | The language code for the report's content. Refer to the table below for valid values. |
time_zone | Required | The time zone used for date values in the report. Use "TZ database name" from this list. |
report_type
values
Valid Report type |
---|
activities |
activity_solutions |
courses |
learners |
people |
submission_answers |
submission_rates |
submissions |
video_analytics |
udemy_user_activity * |
udemy_user_course_activity * |
udemy_user_progress * |
* Only valid for certain orgs.
language
values
Valid Code | Language |
---|---|
en | English |
ja | Japanese |
es | Spanish |
zh_CN | Simplified Chinese |
zh_TW | Traditional Chinese |
fr | French |
vi | Vietnamese |
de | German |
id | Indonesian |
it | Italian |
ko | Korean |
pt | Portuguese |
ru | Russian |
th | Thai |
Request via report type
{
"report_type": "learners",
"language": "en",
"time_zone": "Asia/Tokyo"
}
Request via report ID
{
"report_id": "AoVrqJR0xD",
"language": "en",
"time_zone": "Asia/Tokyo"
}
Response when requested using report type
{
"status": "success",
"data": {
"status": "pending",
"report_type": "learners",
"language": "en",
"time_zone": "Asia/Tokyo"
}
}
Response when requested using report ID
{
"status": "success",
"data": {
"status": "pending",
"report_id": "AoVrqJR0xD",
"language": "en",
"time_zone": "Asia/Tokyo"
}
}
After receiving a successful response, use the report.export.status
method to track the report's export status. The download URL for the report will be available from the report.export.status
method.
Unique requests constraint
Only one report of each type can be exported at a time. Submitting a request for an ongoing export will return the status of the current operation. To request a report with different parameters (ie language
or time_zone
), wait for the ongoing export to complete.
Errors
Code | Description |
---|---|
invalid_report_type | Invalid report type provided. |
invalid_report_id | Invalid report ID provided. |
report_not_found | A report with the provided ID wasn't found. |
invalid_language | Invalid language code provided. |
invalid_time_zone | Invalid time zone provided. |
report.export.status
Returns the status of the export request that was submitted in report.export
.
URL
https://customdomain.com/api/report.export.status
Arguments
Argument | Required | Description |
---|---|---|
report_type | Optional | Specifies the type of report to check status for. Refer to the table below for valid values. Must be provided if report_id is not provided, and should not be provided in combination with report_id . |
report_id | Optional | Specifies the ID of report to export. Must be provided if report_type is not provided, and should not be provided in combination with report_type . |
report_type
values
Valid Report type |
---|
activities |
activity_solutions |
courses |
learners |
people |
submission_answers |
submission_rates |
submissions |
video_analytics |
udemy_user_activity * |
udemy_user_course_activity * |
udemy_user_progress * |
* Only valid for certain orgs.
Request via report type
{
"report_type": "learners"
}
Request via report ID
{
"report_id": "AoVrqJR0xD"
}
Response
- Pending Status: Indicates the report is queued for export.
- Started Status: Indicates the report export has begun.
- Finished Status: Indicates the report export has completed successfully, including a download URL available for one hour.
Response via report type
{
"status": "success",
"data": {
"status": "finished",
"report_type": "learners",
"language": "en",
"time_zone": "Asia/Tokyo",
"started_at": "2024-02-13T07:55:31.960Z",
"finished_at": "2024-02-13T07:55:32.286Z",
"data_updated_at": "2024-02-07T04:59:38.513Z",
"row_count": 2345,
"url": "https://storage.coursebase.co/report-exports/ABCDEFG/Learners/csv/Learners.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AAA%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20240213T075532Z&X-Amz-Expires=900&X-Amz-Signature=AAAA&X-Amz-SignedHeaders=host&x-id=GetObject"
}
}
Response via report ID
{
"status": "success",
"data": {
"status": "finished",
"report_id": "AoVrqJR0xD",
"language": "en",
"time_zone": "Asia/Tokyo",
"started_at": "2024-02-13T07:55:31.960Z",
"finished_at": "2024-02-13T07:55:32.286Z",
"data_updated_at": "2024-02-07T04:59:38.513Z",
"row_count": 2345,
"url": "https://storage.coursebase.co/report-exports/ABCDEFG/Learners/csv/Learners.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AAA%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20240213T075532Z&X-Amz-Expires=900&X-Amz-Signature=AAAA&X-Amz-SignedHeaders=host&x-id=GetObject"
}
}
You have one hour to obtain the download URL of a finished report export. If you attempt to access it after this hour, you will receive a not_found
error, indicating that you must initiate a new report export to access the data.
Status properties
Property | Description |
---|---|
status | Report status: "pending" , "started" , "finished" . |
report_type | The report type being exported. |
report_id | The report ID being exported. |
time_zone | This timezone of the report being exported. |
started_at | ("started" and "finished" only) The timestamp of when the report began exporting. |
finished_at | ("finished" only) The timestamp of when the report completed exporting. |
data_updated_at | ("finished" only) The timestamp of when data in the report was last updated. |
row_count | ("finished" only) The row count of the completed report. |
url | ("finished" only) Download URL for the completed report. |
Errors
Code | Description |
---|---|
invalid_report_type | Invalid report type for status check. |
not_found | Report export not found. Verify if the export was initiated. |