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

Valid language values

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

Valid language values

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

Batch URL Planned

https://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
  }
}

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

Batch URL Planned

https://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

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.

Valid report_type values

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.

Valid language values

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.

Valid report_type values

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.