# Buzz API > REST API for the Buzz Learning Management System. Manages courses, enrollments, users, grades, assessments, AI tutoring, and more. - [Overview](https://api.agilixbuzz.com/docs/entry/Concept/Overview.md): Agilix Buzz API Overview Buzz supports an application programming interface (API) for applications to interact with the system for system integration and custom learning-application development. - [Getting Started Tutorial](https://api.agilixbuzz.com/docs/entry/Concept/Tutorial.md): Getting Started Tutorial This simple tutorial will introduce you to the DLAP API. - [Command Index](https://api.agilixbuzz.com/docs/entry/Command/Index.md) - [API Console](https://api.agilixbuzz.com/docs/entry/apiconsole.md) ## Fundamentals - [Buzz API Data Model](https://api.agilixbuzz.com/docs/entry/Concept/BuzzApiDataModel.md): Buzz API Data Model This document charts relationships among Buzz API data objects and lists fundamental API commands that manage those objects. - [Rights](https://api.agilixbuzz.com/docs/entry/Concept/Rights.md): Rights Core to the Buzz security model is the definition and application of rights. - [Security](https://api.agilixbuzz.com/docs/entry/Concept/Security.md): Data Protection Agilix Buzz data is stored securely in AWS and accessed through the APIs documented here. - [Tenant Isolation](https://api.agilixbuzz.com/docs/entry/Concept/TenantIsolation.md): Overview Agilix Buzz is a multitenant solution, with multiple tenants hosted on the same servers using permission configuration enforced by the software to isolate tenants from each other. - [Command Usage](https://api.agilixbuzz.com/docs/entry/Concept/CommandUsage.md): Command Usage Note that the design of the API system is originally from the early 2000s. - [Entity IDs](https://api.agilixbuzz.com/docs/entry/Concept/EntityIds.md): Entity IDs This document describes how DLAP identifies entities like domains, users, and courses, and how you specify entity IDs when calling API commands. - [Free-Form Structured Data](https://api.agilixbuzz.com/docs/entry/Concept/FreeFormXml.md): Free-Form Data Create and update commands (such as CreateCourses and UpdateDomains) for domains, courses, sections, users, groups, enrollments, objectives, and objective sets accept free-form data as an input. - [Items](https://api.agilixbuzz.com/docs/entry/Concept/Items.md): Items Items are the fundamental units of a course's content. ## API Client Design - [Sample Code](https://api.agilixbuzz.com/docs/entry/Concept/SampleCode.md): Sample Code Sample C#/.NET 6 code can be found on GitHub at https://github.com/AgilixLabs/BuzzApiSample-CSharp. - [API Time Limiting](https://api.agilixbuzz.com/docs/entry/Concept/ApiTimeLimiting.md): API Time Limiting In order to prevent one customer from consuming excessive resources and thereby affecting the performance for other customers, API usage may be time-limited. - [Server Busy Limiting](https://api.agilixbuzz.com/docs/entry/Concept/ServerBusyLimiting.md): Server Busy Limiting We do our best to quickly scale all of the systems that your API calls rely on, but there is a third way that your legitimate API request might fail, and that's when our servers are too busy to handle your request. - [HTTP Response Status Codes](https://api.agilixbuzz.com/docs/entry/Concept/HttpResponseStatusCodes.md): HTTP Response Status Codes Although most APIs are designed to always return an HTTP response status code of 200 OK, and put error information in the XML or JSON of the response, many APIs are called by the browser directly, and return something other than XML or JSON. - [API Rate Limiting](https://api.agilixbuzz.com/docs/entry/Concept/ApiRateLimiting.md): API Rate Limiting Most 429 responses from legitimate API requests are due to time limits, not rate limits. ## Advanced Concepts ### Adaptive Assessments - [Overview](https://api.agilixbuzz.com/docs/entry/Concept/Adaptive/Overview.md): Adaptive Assessment The Adaptive Assessment feature lets you create an adaptive assesment engine that can control the order of presented assessment questions to a student as he or she is taking the assessment. - [Request Parameters](https://api.agilixbuzz.com/docs/entry/Concept/Adaptive/Request.md): Request Parameters These are the parameters that the Buzz API Server sends in a request to an adaptive assessment engine. - [Response Data](https://api.agilixbuzz.com/docs/entry/Concept/Adaptive/Response.md): Response Data is the XML that an adaptive assessment engine returns to the Buzz API Server in response to a Request. The Response Data controls what Buzz next shows to the end-user who is currently taking the assessment, and optionally alters the current Submission and Response that the Buzz API Server is assembling for the end-user. - [Sample Scenario](https://api.agilixbuzz.com/docs/entry/Concept/Adaptive/Scenario.md): Sample Scenario The following example shows the interaction between the Buzz API Server and an adaptive assessment engine. - [Sample Code](https://api.agilixbuzz.com/docs/entry/Concept/Adaptive/Code.md): Sample Code This is a simple adaptive assessment engine written in ASP.NET MVC. - [Badges](https://api.agilixbuzz.com/docs/entry/Concept/Badges.md): Badges Buzz API servers support a feature to automatically grant badges to a student when the student completes a course item. - [Cross-Tenant Permissions](https://api.agilixbuzz.com/docs/entry/Concept/CrossTenantPermissions.md): Cross-Tenant Domain Permissions Cross-tenant permissions are unusual, but can be granted by tenant administrators when necessary. - [Data Filter](https://api.agilixbuzz.com/docs/entry/Concept/DataFilter.md): Data Filter Some commands that return data associated with an entity, such as ListEnrollmentsByTeacher, accept an optional filter that reduces the returned data to specific items. - [Deriviative Courses (Chaining)](https://api.agilixbuzz.com/docs/entry/Concept/CourseChaining.md): Derivative Courses (Chaining) When a user creates a derivative course, he or she chains the course to a "base" course, and the derivative acts like an exact clone of the base. ### DataStream - [Overview](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/Overview.md): Data Stream Overview A data stream is a stream of event notifications that can be used for data analysis, statistical tracking, or synchronization with another system. #### Destinations - [Firehose](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/Firehose.md): Firehose One possible data stream is AWS Kinesis Firehose Delivery Stream. - [Kinesis](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/Kinesis.md): Kinesis One possible data stream is AWS Kinesis Data Streams. - [Https](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/Https.md): Https One possible data stream is one or more raw HTTPS endpoints. - [Sqs](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/Sqs.md): Sqs One possible data stream is AWS SQS Queues. #### Events ##### Entity Changes - [CourseAncestorChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseAncestorChanged.md): CourseAncestorChanged The CourseAncestorChanged event type is sent to the data stream whenever any base (or ancestor) course of a course within the scope of the data stream is changed. - [CourseEntityChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseEntityChanged.md): CourseEntityChanged The CourseEntityChanged event type is sent to the data stream whenever a course is changed. - [CourseEntityCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseEntityCreated.md): CourseEntityCreated The CourseEntityCreated event type is sent to the data stream whenever a course is created. - [CourseEntityDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseEntityDeleted.md): CourseEntityDeleted The CourseEntityDeleted event type is sent to the data stream whenever a course is deleted. - [CourseEntityRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseEntityRestored.md): CourseEntityRestored The CourseEntityRestored event type is sent to the data stream whenever a course that was previously deleted is restored. - [DomainEntityChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainEntityChanged.md): DomainEntityChanged The DomainEntityChanged event type is sent to the data stream whenever a domain is changed. - [DomainEntityCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainEntityCreated.md): DomainEntityCreated The DomainEntityCreated event type is sent to the data stream whenever a domain is created. - [DomainEntityDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainEntityDeleted.md): DomainEntityDeleted The DomainEntityDeleted event type is sent to the data stream whenever a domain is deleted. - [DomainEntityRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainEntityRestored.md): DomainEntityRestored The DomainEntityRestored event type is sent to the data stream whenever a domain that was previously deleted is restored. - [EnrollmentEntityChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentEntityChanged.md): EnrollmentEntityChanged The EnrollmentEntityChanged event type is sent to the data stream whenever a enrollment is changed. - [EnrollmentEntityCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentEntityCreated.md): EnrollmentEntityCreated The EnrollmentEntityCreated event type is sent to the data stream whenever a enrollment is created. - [EnrollmentEntityDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentEntityDeleted.md): EnrollmentEntityDeleted The EnrollmentEntityDeleted event type is sent to the data stream whenever a enrollment is deleted. - [EnrollmentEntityRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentEntityRestored.md): EnrollmentEntityRestored The EnrollmentEntityRestored event type is sent to the data stream whenever a enrollment is restored. - [GroupEntityChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupEntityChanged.md): GroupEntityChanged The GroupEntityChanged event type is sent to the data stream whenever a group is changed. - [GroupEntityCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupEntityCreated.md): GroupEntityCreated The GroupEntityCreated event type is sent to the data stream whenever a group is created. - [GroupEntityDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupEntityDeleted.md): GroupEntityDeleted The GroupEntityDeleted event type is sent to the data stream whenever a group is deleted. - [GroupEntityMembersChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupEntityMembersChanged.md): GroupEntityMembersChanged The GroupEntityMembersChanged event type is sent to the data stream whenever a group's membership is changed. - [UserEntityChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/UserEntityChanged.md): UserEntityChanged The UserEntityChanged event type is sent to the data stream whenever a user is changed. - [UserEntityCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/UserEntityCreated.md): UserEntityCreated The UserEntityCreated event type is sent to the data stream whenever a user is created. - [UserEntityDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/UserEntityDeleted.md): UserEntityDeleted The UserEntityDeleted event type is sent to the data stream whenever a user is deleted. - [UserEntityRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/UserEntityRestored.md): UserEntityRestored The UserEntityRestored event type is sent to the data stream whenever a user that was previously deleted is restored. ##### Item Changes - [CourseItemChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseItemChanged.md): CourseItemChanged The CourseItemChanged event type is sent to the data stream whenever a course item is changed. - [CourseItemCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseItemCreated.md): CourseItemCreated The CourseItemCreated event type is sent to the data stream whenever a course item is created. - [CourseItemDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseItemDeleted.md): CourseItemDeleted The CourseItemDeleted event type is sent to the data stream whenever a course item is deleted. - [CourseItemRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/CourseItemRestored.md): CourseItemRestored The CourseItemRestored event type is sent to the data stream whenever a course item is restored. - [EnrollmentItemChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentItemChanged.md): EnrollmentItemChanged The EnrollmentItemChanged event type is sent to the data stream whenever a enrollment item is changed. - [EnrollmentItemCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentItemCreated.md): EnrollmentItemCreated The EnrollmentItemCreated event type is sent to the data stream whenever a enrollment item is created. - [EnrollmentItemDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentItemDeleted.md): EnrollmentItemDeleted The EnrollmentItemDeleted event type is sent to the data stream whenever a enrollment item is deleted. - [EnrollmentItemRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentItemRestored.md): EnrollmentItemRestored The EnrollmentItemRestored event type is sent to the data stream whenever a enrollment item is restored. - [GroupItemChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupItemChanged.md): GroupItemChanged The GroupItemChanged event type is sent to the data stream whenever a group item is changed. - [GroupItemCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupItemCreated.md): GroupItemCreated The GroupItemCreated event type is sent to the data stream whenever a group item is created. - [GroupItemDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupItemDeleted.md): GroupItemDeleted The GroupItemDeleted event type is sent to the data stream whenever a group item is deleted. - [GroupItemRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GroupItemRestored.md): GroupItemRestored The GroupItemRestored event type is sent to the data stream whenever a group item is restored. ##### Grade Changes - [GradeCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GradeCreated.md): GradeCreated The GradeCreated event type is sent to the data stream whenever a grade is initially assigned. - [GradeChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/GradeChanged.md): GradeChanged The GradeChanged event type is sent to the data stream whenever a grade is changed. ##### EnrollmentMetrics Changes - [EnrollmentMetricsCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentMetricsCreated.md): EnrollmentMetricsCreated The EnrollmentMetricsCreated event type is sent to the data stream when enrollment metrics are created. - [EnrollmentMetricsChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/EnrollmentMetricsChanged.md): EnrollmentMetricsChanged The EnrollmentMetricsChanged event type is sent to the data stream whenever enrollment metrics are changed. ##### Activity Tracking - [ItemActivity](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/ItemActivity.md): ItemActivity The ItemActivity event type is sent to the data stream whenever a user spends time viewing an activity. - [UserSessionStarted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/UserSessionStarted.md): UserSessionStarted The UserSessionStarted event type is sent to the data stream whenever a user session is started by either a username/password or an SSO login. - [UserSessionEnded](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/UserSessionEnded.md): UserSessionEnded The UserSessionEnded event type is sent to the data stream whenever a user session is ended, either by timing out, or by an explicit logout. ##### Domain Permissions Changes - [DomainPermissionChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainPermissionChanged.md): DomainPermissionChanged The DomainPermissionChanged event type is sent to the data stream whenever domain permissions are changed. - [DomainPermissionCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainPermissionCreated.md): DomainPermissionCreated The DomainPermissionCreated event type is sent to the data stream whenever new domain permissions are created. - [DomainPermissionDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/DomainPermissionDeleted.md): DomainPermissionDeleted The DomainPermissionDeleted event type is sent to the data stream whenever domain permissions are deleted. ##### Inbox Message Changes - [InboxMessageCreated](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/InboxMessageCreated.md): InboxMessageCreated The InboxMessageCreated event type is sent to the data stream whenever an inbox message is created. - [InboxMessageChanged](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/InboxMessageChanged.md): InboxMessageChanged The InboxMessageChanged event type is sent to the data stream whenever an inbox message is changed. - [InboxMessageDeleted](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/InboxMessageDeleted.md): InboxMessageDeleted The InboxMessageDeleted event type is sent to the data stream whenever an inbox message is deleted. - [InboxMessageRestored](https://api.agilixbuzz.com/docs/entry/Concept/DataStream/InboxMessageRestored.md): InboxMessageRestored The InboxMessageRestored event type is sent to the data stream whenever a deleted inbox message is restored. - [Free-Form Data Query](https://api.agilixbuzz.com/docs/entry/Concept/XmlQuery.md): Free-Form Data Query Listing commands for APIs such as GetQuestionList, GetResourceList, GetItemList, and ListCourses accept an optional query to filter the list. - [Historical Background](https://api.agilixbuzz.com/docs/entry/Concept/HistoricalBackground.md): Historical Background ### RPC Origins and HTTP Usage For historical reasons, the Agilix Buzz API servers are not quite standard RESTful APIs. - [History Query](https://api.agilixbuzz.com/docs/entry/Concept/HistoryQuery.md): History Query Some commands that list histories of an object, such as GetEnrollment3 and ListUserEnrollments, accept parameters to specify which history objects to return. - [Learning Objectives](https://api.agilixbuzz.com/docs/entry/Concept/LearningObjectives.md): Learning Objectives Learning Objectives are statements that describe what a student should learn, know, or be able to do after completing a learning activity. - [LTI Integration](https://api.agilixbuzz.com/docs/entry/Concept/LTIIntegration.md): LTI Integration LTI (Learning Tool Interoperability) is a communication protocol defined by IMS Global Learning Consortium (http://www.imsglobal.org/lti/) that allows remote tools and content to be securely integrated into a platform, such as a learning application built on top of the DLAP API. - [LTI Links](https://api.agilixbuzz.com/docs/entry/Concept/LTILinks.md): LTI Links LTI is a communication protocol defined by 1EdTech Consortium formally known as IMS Global Learning Consortium (https://www.imsglobal.org/activity/learning-tools-interoperability) that allow - [Reset Password Email Customization](https://api.agilixbuzz.com/docs/entry/Concept/ResetPasswordEmail.md): Reset Password Email Customization The ResetPassword command sends an e-mail to a user during the reset password process. ### Search - [Querying](https://api.agilixbuzz.com/docs/entry/Concept/SearchQuerying.md): Search Querying Overview The Search2 command executes a free text search on course items that have been marked as searchable. - [Indexing](https://api.agilixbuzz.com/docs/entry/Concept/SearchIndexing.md): Search Indexing Indexing Items If a course is marked as searchable then its entity ID, item ID, title, description, item type, metadata, and objective IDs are indexed in the free text search system. - [Settings](https://api.agilixbuzz.com/docs/entry/Concept/Settings.md): Settings Buzz API Server settings are domain settings stored in domain-settings resource files at public/shadow/app/xli/settings.xml in each domain. - [Single Sign-On](https://api.agilixbuzz.com/docs/entry/Concept/SSO.md): Single Sign-On Single Sign-On (SSO) allows multiple web applications to share a common (single) sign-on. ## Commands ### Announcements - [DeleteAnnouncements](https://api.agilixbuzz.com/docs/entry/Command/DeleteAnnouncements.md): This command deletes one or more domain or course announcements. - [GetAnnouncement](https://api.agilixbuzz.com/docs/entry/Command/GetAnnouncement.md): This command gets an announcement, which is a file that conforms to the Announcement format. With this command, you can retrieve the entire announcement or individual parts of it. - [GetAnnouncementInfo](https://api.agilixbuzz.com/docs/entry/Command/GetAnnouncementInfo.md): This command gets information about an announcement. - [GetAnnouncementList](https://api.agilixbuzz.com/docs/entry/Command/GetAnnouncementList.md): This command lists an entity's announcements. To get the content of the returned announcements, call GetAnnouncement. - [GetUserAnnouncementList](https://api.agilixbuzz.com/docs/entry/Command/GetUserAnnouncementList.md): This command lists course, section, and domain announcements for the current user. To get the content of the returned announcements, call GetAnnouncement. - [ListRestorableAnnouncements](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableAnnouncements.md): This command lists domainor course announcements that have been deleted and can be restored. - [PutAnnouncement](https://api.agilixbuzz.com/docs/entry/Command/PutAnnouncement.md): This command posts an announcement to the domain or course specified by entityid. The announcement is the POST content of this request and should be in the format as described in Announcement. - [RestoreAnnouncements](https://api.agilixbuzz.com/docs/entry/Command/RestoreAnnouncements.md): This command restores one or more domain or course announcements. - [UpdateAnnouncementViewed](https://api.agilixbuzz.com/docs/entry/Command/UpdateAnnouncementViewed.md): This command updates the viewed state of one or more domain announcements for the current signed-on user. ### Assessments - [DeleteQuestions](https://api.agilixbuzz.com/docs/entry/Command/DeleteQuestions.md): This command deletes one or more questions from a course. - [GetAttempt](https://api.agilixbuzz.com/docs/entry/Command/GetAttempt.md): This command returns the data needed for an assessment or homework attempt. It includes the parts of the question needed for taking the assessment. GetAttempt loads a saved attempt, or creates a new one if there is no saved attempt. If the assessment is password protected, this command returns InvalidCredentials unless you provide the correct password. - [PutAttemptFile](https://api.agilixbuzz.com/docs/entry/Command/PutAttemptFile.md): This command puts files on the server to be associated with a fileupload question as part of a student assessment/homework attempt. - [GetAttemptFile](https://api.agilixbuzz.com/docs/entry/Command/GetAttemptFile.md): This command gets a uploaded file associated with a fileupload question. - [DeleteAttemptFile](https://api.agilixbuzz.com/docs/entry/Command/DeleteAttemptFile.md): This command deletes a previously uploaded file associated with a fileupload question. - [GetAttemptReview](https://api.agilixbuzz.com/docs/entry/Command/GetAttemptReview.md): This command returns the data needed to review an assessment or homework attempt. It includes the parts of the question available for the review according to the review settings of the item. It can also return a uploaded file associated with a fileupload question in an assessment or homework attempt. - [GetNextQuestion](https://api.agilixbuzz.com/docs/entry/Command/GetNextQuestion.md): Submits answers for the current question in an adpative assessment. Returns the next question or questions. If there are not more questions, it returns a submission. - [GetQuestion](https://api.agilixbuzz.com/docs/entry/Command/GetQuestion.md): This command gets one question from a course. - [GetQuestionScores](https://api.agilixbuzz.com/docs/entry/Command/GetQuestionScores.md): This command scores one or more question submissions. The question and student answer (submission) are passed in as the POST data of this command. GetQuestionScores computes the score given the inputs and returns it; no data is read or updated on the server. - [GetQuestionStats](https://api.agilixbuzz.com/docs/entry/Command/GetQuestionStats.md): This command gets system-wide statistics about a particular question. - [GetSubmissionState](https://api.agilixbuzz.com/docs/entry/Command/GetSubmissionState.md): Retrieves state information for an enrollment's assessment or homework submission, including whether the enrollment can start, resume, or retake the assessment or homework group. - [ListQuestions](https://api.agilixbuzz.com/docs/entry/Command/ListQuestions.md): This command lists one or more questions in a course. - [ListRestorableQuestions](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableQuestions.md): This command lists questions that have been deleted and can be restored. - [PutQuestions](https://api.agilixbuzz.com/docs/entry/Command/PutQuestions.md): This command puts (adds or updates) one or more questions in a course. For a description of possible interactionflags values, see InteractionFlags. All body and feedback tags contain HTML that can also contain the special a:math and a:media tags. - [RestoreQuestions](https://api.agilixbuzz.com/docs/entry/Command/RestoreQuestions.md): This command restores one or more questions in a course. - [SaveAttemptAnswers](https://api.agilixbuzz.com/docs/entry/Command/SaveAttemptAnswers.md): Save answers for an assessment of homework group attempt for later use. - [SubmitAttemptAnswers](https://api.agilixbuzz.com/docs/entry/Command/SubmitAttemptAnswers.md): Submits answers for an assessment of homework group attempt for grading. ### Authentication - [ExtendSession](https://api.agilixbuzz.com/docs/entry/Command/ExtendSession.md): Each API command automatically refreshes the authorization token, extending the expiration for the duration originally specified at login, but if you need to keep the extend the token life without making any specific API call, this command will simply extend the token duration. For example, if the interval between API calls in your application is long (over 10 minutes), you can call ExtendSession more frequently than every 10 minutes to keep the user authorized. - [FinishPasswordReset](https://api.agilixbuzz.com/docs/entry/Command/FinishPasswordReset.md): This command updates the password of the specified user. An error code of PasswordPolicyRequirementsNotMet may be returned if the specified password does not meet the domain's configured requirements. Note that in order to prevent privilege escalation, users who have UpdateUser rights will be denied access to update another user in their domain when that user has any domain privilege in any domain they do not. If the new password does \*not\* match the old password, all of the target user's sessions will be terminated. If the Buzz application settings disallow student updating their own passwords, this will (also) be enforced here. For this API, a warning may also be returned to the caller as a "warning" property on the response object. The value of this property will indicate what the problem is. For password updates, the only possibly value is currently PasswordPolicyRequirementsNotMet, which indicates that the password update succeeded, but the password policy is configured to warn users when the new password they selected does not meet the active policy requirements, but that will be allowed anyway. An appropriate warning should be issued indicating that it is recommended that the user change their password, but the user should be allowed to proceed after the warning. In order to help the user understand why a password is (or will be) rejected, when either a password policy violation error or warning occurs, a reason attribute will be included in the response that indicates which part of the password policy the password did not meet. That reason string should exactly match the attribute name in the password policy that was violated. If there are multiple violations, only the first one detected will be returned. - [ForcePasswordChange](https://api.agilixbuzz.com/docs/entry/Command/ForcePasswordChange.md): Forces a user to change their password the next time they login, exactly as if their password had expired. Note that in order to prevent privilege escalation, users who have UpdateUser rights will be denied access to update another user in their domain when that user has any domain privilege in any domain they do not. Further, if the target user has a cross-domain enrollment with rights other than ReadCourse/Section and Participate in any other domain, the user requesting the update must also have UpdateUser rights in the domain of that enrollment. - [GetPasswordLoginAttemptHistory](https://api.agilixbuzz.com/docs/entry/Command/GetPasswordLoginAttemptHistory.md): Gets the record of password login attempts for the specified user account. Only up to the last 1000 records are ever returned. - [GetPasswordQuestion](https://api.agilixbuzz.com/docs/entry/Command/GetPasswordQuestion.md): This command gets the question to ask a user who has forgotten their password. - [GetKey](https://api.agilixbuzz.com/docs/entry/Command/GetKey.md): This command retrieves a name/value pair from an entity. - [Login3](https://api.agilixbuzz.com/docs/entry/Command/Login3.md): This command authenticates a user on the server and initiates a session for them. A token is returned in the response, along with the number of minutes before the token will expire. This token provides access to subsequent calls to API commands within the specified time period, and must be passed as the \_token parameter on the GET portion of the URL or in the XML or JSON part of a POST command in the same context where the API command is specified. Each API command will extend the expiration of the session associated with the token. If you just need to extend the session and don't want to make a API call, the ExtendSession command will do nothing other than extend the session. The use of cookies for authentication tokens has been deprecated due to security concerns from cross-site scripting issues which are not fully addressed by the CORS standard. Keeping the token value returned from Login3 and passing it on to each subsequent API command as \_token helps prevent cross-site scripting because the value isn't automatically sent with every cross-site request. Passing tokens in an Authorization: Bearer header is also now supported. Service accounts using the API should login once at the beginning of processing and obtain a token that will last for the duration of processing rather than logging in before every call. Alternatively, they can specify an infinite duration to obtain a token that lasts forever and then only use that token in the code rather than logging in at all. However, such tokens can be used by anyone, so care must be taken to keep them secret. They should be stored in a secure token storage system, and should \*never\* be put into source control. Note that this request MUST use POST. Unlike most other API commands, callers must support several different error and warning codes returned by this function in different ways. InvalidCredentials will be returned if the username/password combination is not valid. DeactivatedUserOrDomain will be returned if the user or domain was explicitly deactivated. LicenseLimitExceeded will be returned if the domain's license limit is exceeded for one or more of the user's corresponding personas. NoLicense will be returned if the domain doesn't have a license and no ancestor domain has a license. LicenseExpired will be returned if the domain's license has expired. LicenseNotYetValid will be returned if the domain's license is not yet valid (ie. it's before the start date of the license). PasswordExpired will be returned if the user's password has expired due to the domain's password policy and the user must change their password (in this case, UpdatePassword is the only API function that will be allowed for this user until their password is changed). AccountLockout will be returned if the user's account has been locked out due to too many contiguous password login failures. LoginMethodNotAllowed will be returned if the account doesn't allow the type of login being attempted (password login is not allowed for SSO-only users, for example). PasswordPolicyRequirementsNotMet will be returned if the password does not meet the active password policy requirements, and the policy is configured to force a password reset under these conditions. SecondFactorRequired will be returned if the user has opted for multi-factor authentication and the password was correct, but the caller must provide the seond factor to complete authentication. SecondFactorConfigurationNowRequired will be returned if the password policy now requires a second factor but the user has not yet configured the second factor. The user will be logged in, but will only be allowed to configure a second factor before doing anything else. For this API, a warning may also be returned to the caller as a "warning" property on the response object. The value of this property will indicate what the problem is.For login, the only possibly value is currently PasswordPolicyRequirementsNotMet, which indicates that the login succeeded, but the password policy is configured to warn users when the password they use to login no longer meets the active policy requirements, either because the policy changed, because the entropy calculation changed and caused this password to fall below the minimum level, or because the password was found in one or more publicly-available account breaches. An appropriate warning should be issued indicating that it is recommended that the user change their password, but the user should be allowed to proceed after the warning. - [CreateSecondFactorAuthenticationSecret](https://api.agilixbuzz.com/docs/entry/Command/CreateSecondFactorAuthenticationSecret.md): This command creates an RFC 6238 second factor authentication secret for use with 2FA authentication. This is usually the first step in setting up software/app-based 2FA for an account. (For email based 2FA, this step is not needed). The secret and encryption type or the equivalent QR code should be displayed to the user and two one-time-passwords associated with that secret should be returned back to SetupSecondFactorAuthentication along with the secret to finish setting up 2FA for the account. This function neither reads nor modifes any state. If a client wishes to use some other method to generate an RFC-compliant secret instead (including a local algorithm, which may have security advantages), they may do so. The 2FA system supports SHA1, SHA256, and SHA512, with 16, 26, or 32-character BASE-32 encoded keys. This function currently generates a 32-character BASE-32 encoded SHA256 key, though that may change as new algorithms are added. - [SetupSecondFactorAuthentication](https://api.agilixbuzz.com/docs/entry/Command/SetupSecondFactorAuthentication.md): Turns on second factor authentication for an account. If using notification-based 2FA, this API must be called twice. The first call will not configure 2FA but will send ONE OTP code to the caller through the selected external channel and that one OTP code must be passsed into a second call to this function as otp1. If using app based 2FA, an encryption key must be generated by the caller, possibly using CreateSecondFactorAuthenticationSecret. If using device-based 2FA, the secret must be obtained from the device and the caller must pass it in. Once 2FA is established, Login3 will return an MFA warning and a token on each login attempt. The token and the one-time-password should then be sent to SecondFactorAuthenticate to complete the authentication process. The number of digits in otp1 and otp2 must be the same, and will establish how many OTP digits are required when signing in if MFA setup is successful. Requiring 2FA codes from the app ensures that it received the correct secret and algorithm. Requiring 2FA codes via email ensures that the user has access to the email account and won't be locked out by performing this operation. - [ClearSecondFactorAuthentication](https://api.agilixbuzz.com/docs/entry/Command/ClearSecondFactorAuthentication.md): Clears 2FA (second factor authentication) settings for the specified user account, allowing the user to login without 2FA (the user will have to re-establish 2FA on the next login if 2FA is required by the domain's password policy or because of their role. - [SecondFactorAuthenticate](https://api.agilixbuzz.com/docs/entry/Command/SecondFactorAuthenticate.md): This command completes the two factor part of authentication for users who have opted for two factor authentication. Note that if the clock on the OTP device is more than a minute or two off from the server's, an error will be returned. The server time will be included in the error message in case the user's device has an adjustable clock and is able to sync it. The client may want to display the server time for the user in this situation to alert them to this possibility, as it may provide them a simple fix for the problem that won't require administrative intervention. - [Logout](https://api.agilixbuzz.com/docs/entry/Command/Logout.md): This command terminates the session state for an authenticated user. - [Proxy](https://api.agilixbuzz.com/docs/entry/Command/Proxy.md): This command starts a session as a different user. The data retrieved from this session appears as if the proxy user had logged in. Both the user and proxy user are recorded for any modifications. This command is intended for interactive use by administrators and support staff to troubleshoot user issues. This command should not be used in automation or integrations. Automation and integrations should perform operations directly using their own authentication. If the userid value is malformed or syntactically invalid, BadRequest is returned. To prevent user enumeration, all other failure conditions — including the target user not existing and the caller lacking Proxy rights — return AccessDenied, with two exceptions: when the target user's domain is deactivated, DeactivatedUserOrDomain is returned; and when the target user account is disabled, DoesNotExist is returned. Callers cannot distinguish between a user that does not exist and one they lack rights to proxy as, except when they explicitly specify a domain as part of the user specification, and they don't have Proxy rights in that domain. Note that in order to prevent privilege escalation, users who have Proxy rights will be denied access to proxy as another user in their domain when that user has any domain privilege in any domain they do not. Further, if the target user has a cross-domain enrollment with rights other than ReadCourse/Section and Participate in any other domain, the user requesting to proxy must also have Proxy rights in the domain of that enrollment. Proxy does not "stack" authentication, so if this API is called with a token that is already proxying, this API will return a new token that proxies the original proxy-authorized user as the newly specified user, the same as if Unproxy was called and then Proxy was called after that. Unproxy always returns to the original proxy-authorized user. - [PutKey](https://api.agilixbuzz.com/docs/entry/Command/PutKey.md): This command stores a name/value pair on an entity. - [ResetLockout](https://api.agilixbuzz.com/docs/entry/Command/ResetLockout.md): This command resets an account that has been locked out due to too many contiguous password failures. - [ResetPassword](https://api.agilixbuzz.com/docs/entry/Command/ResetPassword.md): This command sends an email to the specified user with a time-limited link that can be used to reset their password. If the user has a password question-answer configured and the logged-in user doesn't have rights to update the specified user account, the passsword answer will also be required. If the logged-in user has ControlUser rights over this account or if the firstname and lastname match the values for the account (with a small margin for error), detailed error information will be returned. Otherwise, no error information will be returned and the call will always appear to succeed. This is to prevent automated account validity testing to harvest user accounts. A partial email address, first login date, and creation date will also be returned. These values will be randomly generated if the specified account was not valid, but may help the end-user to know whether or not the username was correct. A domain administrator may add a ResetPassword.tmpl file to the domain to customize the email message the server sends to the user. - [Unproxy](https://api.agilixbuzz.com/docs/entry/Command/Unproxy.md): This command ends a proxy session. The command returns the token and user information for the original user. - [UpdatePassword](https://api.agilixbuzz.com/docs/entry/Command/UpdatePassword.md): This command updates the password of the specified user. An error code of PasswordPolicyRequirementsNotMet may be returned if the specified password does not meet the domain's configured requirements. In order to thwart user account name harvesting, if the specified user ID cannot be found, either an invalid credentials error or an access denied error will be returned, exactly the same as if the specified old password was incorrect or the authenticated user doesn't have rights to change the target user's password. Note that in order to prevent privilege escalation, users who have UpdateUser rights will be denied access to update another user in their domain when that user has any domain privilege in any domain they do not. Further, if the target user has a cross-domain enrollment with rights other than ReadCourse/Section and Participate in any other domain, the user requesting the update must also have UpdateUser rights in the domain of that enrollment. If the new password does \*not\* match the old password, all of the target user's sessions will be terminated. If the current session is also terminated, a new token will be returned in the response. If the Buzz application settings disallow student updating their own passwords, this will be enforced here. If the caller is not authenticated, but an old password is specified, the caller will be assumed to be the user themselves. For this API, a warning may also be returned to the caller as a "warning" property on the response object. The value of this property will indicate what the problem is. For password updates, the only possibly value is currently PasswordPolicyRequirementsNotMet, which indicates that the password update succeeded, but the password policy is configured to warn users when the new password they selected does not meet the active policy requirements, but that will be allowed anyway. An appropriate warning should be issued indicating that it is recommended that the user change their password, but the user should be allowed to proceed after the warning. In order to help the user understand why a password is (or will be) rejected, when either a password policy violation error or warning occurs, a reason attribute will be included in the response that indicates which part of the password policy the password did not meet. That reason string should exactly match the attribute name in the password policy that was violated. If there are multiple violations, only the first one detected will be returned. - [UpdatePasswordQuestionAnswer](https://api.agilixbuzz.com/docs/entry/Command/UpdatePasswordQuestionAnswer.md): This command updates the password question and answer for the specified user. Note that in order to prevent privilege escalation, users who have UpdateUser rights will be denied access to update another user in their domain when that user has any domain privilege in any domain they do not. Further, if the target user has a cross-domain enrollment with rights other than ReadCourse/Section and Participate in any other domain, the user requesting the update must also have UpdateUser rights in the domain of that enrollment. ### Badges - [CreateBadge](https://api.agilixbuzz.com/docs/entry/Command/CreateBadge.md): This command creates a badge. The attribute values posted to this call except *entityid* and *imageentityid* allow replacement variables. To use a replacement variable include {{VARIABLE\_NAME}} in the string. For example, to include the enrollment ID and badge ID in the evidence string, you could use a value of "badges/evidence/{{ENROLLMENTID}}/{{BADGEID}}". The variables are: - **IMAGEENTITYID** - the value from *imageentityid* - **IMAGEPATH** - the value from *imageentityid* - **BADGEID** - the badge ID - **USERID** - the user's ID (as determined from *entityid*) - **FIRSTNAME** - the user's first name - **LASTNAME** - the user's last name - **DOMAINID** - the user's domain ID - **DOMAINNAME** - the name of the user's domain - **USERSPACE** - the userspace of the user's domain - **ENROLLMENTID** - the enrollment ID if *entityid* is an enrollment ID, otherwise this variable is not used - **COURSEID** - the course ID if *entityid* is an enrollment ID, otherwise this variable is not used - **COURSETITLE** - the course title if *entityid* is an enrollment ID, otherwise this variable is not used - [DeleteBadge](https://api.agilixbuzz.com/docs/entry/Command/DeleteBadge.md): This command deletes a badge. - [GetBadge](https://api.agilixbuzz.com/docs/entry/Command/GetBadge.md): This command gets the badge image. - [GetBadgeAssertion](https://api.agilixbuzz.com/docs/entry/Command/GetBadgeAssertion.md): This command gets the assertion associated with a badge. - [GetBadgeList](https://api.agilixbuzz.com/docs/entry/Command/GetBadgeList.md): This command gets a list of badges for a user. ### Blogs - [DeleteBlogs](https://api.agilixbuzz.com/docs/entry/Command/DeleteBlogs.md): This command deletes one or more blog messages. - [GetBlog](https://api.agilixbuzz.com/docs/entry/Command/GetBlog.md): This command gets a blog or journal message, which conforms to the Message format. - [GetBlogList](https://api.agilixbuzz.com/docs/entry/Command/GetBlogList.md): This command returns a list of blog or journal messages for the specified enrollment and item, ordered by message creationdate. - [GetBlogSummary](https://api.agilixbuzz.com/docs/entry/Command/GetBlogSummary.md): This command returns a blog or journal summary for each enrollment in the specified entity. GetBlogSummary returns summaries for only those enrollments and groups whose blogs or journals the caller can access. - [GetRecentPosts](https://api.agilixbuzz.com/docs/entry/Command/GetRecentPosts.md): This command returns recent posts to discussion boards, wikis, blogs and journals that have not been marked as viewed. - [PutBlog](https://api.agilixbuzz.com/docs/entry/Command/PutBlog.md): This command puts a blog or journal message to the server. The message is the POST content of this request and should be in the format as described in Message. - [UpdateBlogViewed](https://api.agilixbuzz.com/docs/entry/Command/UpdateBlogViewed.md): This command updates a user’s viewed state of one or more blog messages. ### Command Tokens - [CreateCommandTokens](https://api.agilixbuzz.com/docs/entry/Command/CreateCommandTokens.md): This command creates one or more command tokens. Command tokens contain codes that are short sequences of letters, digits, and symbols that allow lesser-privileged users to proxy as you to execute a specific command that you set up when you create the command token. The characters in the code are designed to avoid confusion between characters such as zero/oh (0/o/O), one/el (1/L/l), etc. that are often confused during written communication. Capitals vs. lower-case are also avoided due to the complexity of communicating those distinctions when communicating the code vocally. If the scope entity is a domain, access will also be granted to users in the scope domain and descendant domains and users with any rights in the scope domain. If the scope entity is a group, access will be granted to users with enrollments in the group and users with rights on the domain the group belongs to. If the scope entity is a course, access will be granted to users with enrollments on the course and users with rights on the domain the course belongs to. If the scope entity is a user, access will be granted only to that user. When allowunauthenticatedredemption is set to true and the redeeming user is not authenticated, the $userid$ parameter will be null, which may or may not matter depending on the action being executed. Tokens are guaranteed to be unqiue within the specified scope. Note that this doesn't guarantee uniqueness if a user attempts to redeem a token withour specifying a specific token id or the domain id of a domain scoped token. Note that care must be taken to ensure that security is maintained during the token redemption. Certain API calls may leak the creator's security token or other sensitive information, which could allow the token redeemer access to information they shouldn't have, or allow them to spoof the account the action runs as. - [GetCommandToken](https://api.agilixbuzz.com/docs/entry/Command/GetCommandToken.md): This command gets details about a previously created command token. - [GetCommandTokenInfo](https://api.agilixbuzz.com/docs/entry/Command/GetCommandTokenInfo.md): This command gets the description and other non-sensitive info about a previously created command token from the code. Note that there may be more than one matching command token. A calling application can distinguish its own codes from others by placing application-specific data into the optional free-form data for the token, always using non-overlapping scopes, and not using per-user tokens. - [DeleteCommandTokens](https://api.agilixbuzz.com/docs/entry/Command/DeleteCommandTokens.md): This command deletes one or more command tokens. - [UpdateCommandTokens](https://api.agilixbuzz.com/docs/entry/Command/UpdateCommandTokens.md): This command updates one or more existing command tokens, regenerating codes if the desired length or per-user settings change. - [ListCommandTokens](https://api.agilixbuzz.com/docs/entry/Command/ListCommandTokens.md): This command lists all the command tokens created by a particular user and associated with a specified domain, course, group, or user. - [RedeemCommandToken](https://api.agilixbuzz.com/docs/entry/Command/RedeemCommandToken.md): This command redeems a command token using the code given to the currently authenticated user by the creator. The response from this command is the response from the action associated with the command token being redeemed, so it can vary greatly. Errors triggered during the search to find the command token and the redemption authorization will be returned in the top-level response. Errors triggered while executing the action will be returned in an inner response or responses element. If the calling user is not authenticated, scopedomainid must be specified, and the action will run as the token's runasuserid account with the proxy account set as -1. The action will be executed with the currently authenticated user proxied as the command token's 'runasuserid' user just for the execution of the action (even if the currently authenticated user doesn't normally have proxy rights--the command token gives them these limited proxy rights). Any additional parameters specified will be available to the action as replacement variables. If there is more than one matching (and valid) command token (if the command token id is specified, only one can match), all of them will be redeemed. Note that the output from this function is very different from other functions because it embeds potentially multiple API calls within its response. There is a rate limit for ReedemCommandToken designed to thwart both brute-force guessing of the token as well as overloading the system with processing expensive tokens. The limit may vary. If you need a token that is secure, using a token with a large length will ensure that brute-force guesses will not be possible in a reasonable amount of time. ### Conversion - [ExportData](https://api.agilixbuzz.com/docs/entry/Command/ExportData.md): This command convert structured post data to a tab or comma-delimited file. - [GetConvertedData](https://api.agilixbuzz.com/docs/entry/Command/GetConvertedData.md): Retrieves the converted data generated from either ImportData or ExportData and deletes the temporary file. When posting to an iFrame, it may be difficult to process the return value. Using *ImportData* with the *saveto* parameter stores a temporary copy of the data on the server. Also use this command to download files that have been exported using the *ExportData* command. *GetConvertedData* retrieves the data and deletes the copy. The response matches the response that would be given by *ImportData* or *ExportData*. - [ImportData](https://api.agilixbuzz.com/docs/entry/Command/ImportData.md): This command imports and converts various data formats. ### Courses - [CopyCourses](https://api.agilixbuzz.com/docs/entry/Command/CopyCourses.md): This command copies one or more courses. CopyCourses automatically enrolls the calling user as the course owner unless *status* is 0 or the status is 10 and the user already has the requested rights on the course. - [CreateCourses](https://api.agilixbuzz.com/docs/entry/Command/CreateCourses.md): This command creates one or more courses. To create a new course that is linked to another course, use the CopyCourses command. CreateCourses automatically enrolls the calling user as the course owner unless *status* is 0 or the status is 10 and the user already has the requested rights on the course. - [CreateDemoCourse](https://api.agilixbuzz.com/docs/entry/Command/CreateDemoCourse.md): This command creates a demo course. - [DeactivateCourse](https://api.agilixbuzz.com/docs/entry/Command/DeactivateCourse.md): This command deactivates a course. Deactivating a course deactivates all derivative and static copies of the course. Deactivated course cannot be copied, or used as the source for item links. New enrollments cannot be created on deactivated courses, and existing enrollments cannot be updated except to change the reference, change the data, or make the status non active. Deactivated courses are removed from the search index and the community catalog. Deactivating a course cannot be undone. Deactivating a course is asynchronous, and will happen in a background task. Depending on the number of copies, deactivating a course may take a long time to complete. - [DeleteCourses](https://api.agilixbuzz.com/docs/entry/Command/DeleteCourses.md): This command deletes one or more courses. When a course is deleted, all related sections and enrollments are deleted as well. - [GetCourse2](https://api.agilixbuzz.com/docs/entry/Command/GetCourse2.md): This command gets information for a course. - [ListCourses](https://api.agilixbuzz.com/docs/entry/Command/ListCourses.md): This command lists courses. - [MergeCourses](https://api.agilixbuzz.com/docs/entry/Command/MergeCourses.md): This command merges the deltas from a derivative course into its immediate base course. It then removes the deltas so that the derivative and the master are identical. - [RestoreCourse](https://api.agilixbuzz.com/docs/entry/Command/RestoreCourse.md): This command restores a deleted course. - [UpdateCourses](https://api.agilixbuzz.com/docs/entry/Command/UpdateCourses.md): This command updates the title, reference, data (free-form XML), and other attributes of one or more courses. ### DataStreams - [GetDataStreamConfiguration](https://api.agilixbuzz.com/docs/entry/Command/GetDataStreamConfiguration.md): This command gets the data stream configuration previously set using SetDataStreamConfiguration for a specified domain. Note that this does not query configurations further up the domain hierarchy, even if the caller has rights to query that information, this call only returns the configuration set in the specified domain. - [SetDataStreamConfiguration](https://api.agilixbuzz.com/docs/entry/Command/SetDataStreamConfiguration.md): This command tests a given data stream configuration to see if it is valid and if the API servers can connect to it and if successful, sets that configuration in the specified domain. A data stream event will be send to the newly-configured data stream as well as any other applicable data streams indicating that the data stream configuration was changed. Notice that although you will typically only need one data stream, you may configure more than one for a domain, as you could have multiple data stream for different kinds of processing for different events. Filters allow you to specify exactly which event types you want to receive and exactly which object members you want to receive for each event type, which can drastically reduce the volume of data sent to the data stream. Each data stream may have zero or more filters identifying event types and the desired members to include for them. Multiple data streams, even within the same domain, may receive the same event. If you have more than one domain, you can set up data streams for each, and if one domain is a descendant of another, events will be sent to both sets of data streams, with the top-level domainId identifying the source domain (see Data Stream topic under Concepts). ### Discussion Boards - [DeleteMessage](https://api.agilixbuzz.com/docs/entry/Command/DeleteMessage.md): This command deletes a discussion board message from a discussion forum. - [DeleteMessagePart](https://api.agilixbuzz.com/docs/entry/Command/DeleteMessagePart.md): This command deletes individual parts from a discussion board message. When called, the message enters an edit state where changes to the message parts are stored in a temporary location on the server. While in this state, only the message owner can see the changed message parts with the GetMessage command. Other users get the message as it existed before the edits began. To commit these changes to a new message, call SubmitMessage. To rollback changes and revert to the pre-changed state, call *DeleteMessagePart* and omit the *filepath* parameter. - [GetMessage](https://api.agilixbuzz.com/docs/entry/Command/GetMessage.md): This command returns a discussion forum message. - [GetMessageList](https://api.agilixbuzz.com/docs/entry/Command/GetMessageList.md): This command returns the messages associated with a discussion board of an entity. - [ListRestorableMessages](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableMessages.md): This command lists messages that have been deleted from a entity and can be restored. - [PutMessage](https://api.agilixbuzz.com/docs/entry/Command/PutMessage.md): This command puts a discussion board message to the server. - [PutMessagePart](https://api.agilixbuzz.com/docs/entry/Command/PutMessagePart.md): This command puts individual parts of a discussion board message to the server. When called, the message enters an edit state where changes to the message parts are stored in a temporary location on the server. While in this state, only the message owner can see the changed message parts with the GetMessage command. Other users get the message as it existed before the edits began. To commit these changes to a new message, call SubmitMessage. To rollback changes and revert to the pre-changed state, call DeleteMessagePart and omit the *filepath* parameter. - [RestoreMessages](https://api.agilixbuzz.com/docs/entry/Command/RestoreMessages.md): This command restores one or more messages in a discussion forum. - [SubmitMessage](https://api.agilixbuzz.com/docs/entry/Command/SubmitMessage.md): This command assembles changes from the PutMessagePart and DeleteMessagePart commands into a new message and posts the new message to the server. To undo message-part changes, see DeleteMessagePart. - [UpdateMessageViewed](https://api.agilixbuzz.com/docs/entry/Command/UpdateMessageViewed.md): This command updates a user’s viewed state of one or more discussion board messages. ### Domains - [CreateDomains](https://api.agilixbuzz.com/docs/entry/Command/CreateDomains.md): This command creates one or more domains and links them as children to the domain specified by parentid. - [DeleteDomain](https://api.agilixbuzz.com/docs/entry/Command/DeleteDomain.md): This command deletes a domain. When a domain is deleted, its descendant domains, and all the users, courses, and enrollments in those domains are deleted as well. - [GetDomain2](https://api.agilixbuzz.com/docs/entry/Command/GetDomain2.md): This command gets information for the specified domain. - [GetDomainContent](https://api.agilixbuzz.com/docs/entry/Command/GetDomainContent.md): This command returns the list of content items for the current signed-on user’s domain. Currently, only announcements are in the list, and only non-expired items are returned (the announcement’s enddate is today or later.) Announcements can originate in ancestor domains, so resulting domain IDs may not equal the current signed-on user’s domain ID. - [GetDomainEnrollmentMetrics](https://api.agilixbuzz.com/docs/entry/Command/GetDomainEnrollmentMetrics.md): This command gets enrollment metrics for courses in the specified domain. To reduce server load this response may be cached on the server for up to one hour (during that time the data returned from the server may not be current). - [GetDomainEnrollmentMetricsParameters](https://api.agilixbuzz.com/docs/entry/Command/GetDomainEnrollmentMetricsParameters.md): This command gets parameters that affect calculations used in Enrollment Metrics, Course EnrollmentMetrics, and GetDomainEnrollmentMetrics. - [GetDomainParentList](https://api.agilixbuzz.com/docs/entry/Command/GetDomainParentList.md): This command gets the list of parent domains for a domain. **Important:** The currently signed-on user must have Read rights on a parent domain in order for it to appear in this list. Therefore, the list may be empty or incomplete. - [GetDomainSettings](https://api.agilixbuzz.com/docs/entry/Command/GetDomainSettings.md): Retrieves the settings for an application, merging multiple settings file in the domain hierarchy. **Note:** *GetDomainSettings* requires no authentication; this is primarily so that unauthenticated users can get domain settings to render login pages that are customized for a particular application or domain. Therefore, do NOT store sensitive information in domain-settings resource files. The caller may provide settings in the body of a POST request. This allows the caller to provide default settings that are used when no other settings in the domain heirarchy override their values. - [GetDomainStats](https://api.agilixbuzz.com/docs/entry/Command/GetDomainStats.md): This command gets statistics for a domain. - [ListDomains](https://api.agilixbuzz.com/docs/entry/Command/ListDomains.md): This command lists domains. - [RestoreDomain](https://api.agilixbuzz.com/docs/entry/Command/RestoreDomain.md): This command restores a deleted domain. - [UpdateDomains](https://api.agilixbuzz.com/docs/entry/Command/UpdateDomains.md): This command updates the name, reference value, flags, and free-forn structured data of one or more domains. If you omit an optional attribute (like name or reference) that attribute remains unchanged. ### Enrollments - [CreateEnrollments](https://api.agilixbuzz.com/docs/entry/Command/CreateEnrollments.md): This command enrolls a user with the specified rights in a course. - [DeleteEnrollments](https://api.agilixbuzz.com/docs/entry/Command/DeleteEnrollments.md): This command deletes one or more user enrollments. - [GetEnrollment3](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollment3.md): This command gets enrollment data for a particular enrollment. - [GetEnrollmentActivity](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollmentActivity.md): This command gets the activity detail for the specified user enrollment. - [GetEnrollmentGradebook2](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollmentGradebook2.md): This command gets the gradebook detail, including rolled-up period, category, and course grades, for the specified user enrollment. If the enrollment's entity is a course whose type is Continuous and you also request individual items with itemid, this command also returns calculated due dates for the gradable course items by evenly distributing them between the enrollment's startdate and enddate. The calculated dates are not actual due dates; they exist only to help students stay on pace in Continuous courses. - [GetEnrollmentGroupList](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollmentGroupList.md): This command lists groups that the specified enrollment is a member of. - [GetEnrollmentMetricsReport](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollmentMetricsReport.md): Returns report data for the enrollment metrics of a domain, teacher, or student. GetEnrollmentMetricsReport reports on active student enrollments. - [ListEnrollments](https://api.agilixbuzz.com/docs/entry/Command/ListEnrollments.md): This command lists enrollments. - [ListEnrollmentsByTeacher](https://api.agilixbuzz.com/docs/entry/Command/ListEnrollmentsByTeacher.md): This command lists enrollments in courses where the specified user is a teacher. A user is considered a teacher in a course if they have an active teacher enrollment (an enrollment with ReadGradebook rights) in that course. - [ListEntityEnrollments](https://api.agilixbuzz.com/docs/entry/Command/ListEntityEnrollments.md): This command lists enrollments in the specified entity. - [ListUserEnrollments](https://api.agilixbuzz.com/docs/entry/Command/ListUserEnrollments.md): This command lists enrollments for the specified user. - [PutSelfAssessment](https://api.agilixbuzz.com/docs/entry/Command/PutSelfAssessment.md): This command puts self-assessment ratings of understanding, interest, and effort into the student's Enrollment Metrics. Students can rate their understanding, interest, and effort so that instructors can respond or help them, if necessary. To retrieve posted self-assessment data, call a command like GetEnrollment3, which can return Enrollment Metrics. - [RestoreEnrollment](https://api.agilixbuzz.com/docs/entry/Command/RestoreEnrollment.md): This command restores a deleted enrollment. - [UpdateEnrollments](https://api.agilixbuzz.com/docs/entry/Command/UpdateEnrollments.md): This command updates the enrollment status, start date, end date, and rights granted to the specified user for a course. You can also change an enrollment from one course to another course.) **Warning:** When moving a course enrollment to a different course, the mapping of student work and grades to the new course’s manifest may yield unpredictable or unwanted results when the manifests (especially the item IDs) for the old and new courses are dissimilar. Also, student submissions to forums, blogs, and wikis remain in the original course and do not move with the student to the new course. ### General - [GetCommandList](https://api.agilixbuzz.com/docs/entry/Command/GetCommandList.md): This returns a complete list of all commands available on the API Server. - [GetEntityType](https://api.agilixbuzz.com/docs/entry/Command/GetEntityType.md): This command gets the entity type (Course, Domain, Group, or Section) for a given entity ID. - [GetStatus](https://api.agilixbuzz.com/docs/entry/Command/GetStatus.md): The API servers do fairly extensive self-testing for all subsystems. Overall system health is reported through GetStatus. It also doubles as a basic “ping" operation. This command may require an authenticated connection for detailed data, and even then, details may depend on hosting settings. Security-sensitive data (attributes prefixed with an underscore indicate security-sensitive data) such as server names, urls, file paths, etc. may or may not be hidden or obfuscated depending on hosting settings. Status is reported using the following levels: Ideal (4): Everything is configured and running optimally. Acceptable (3): Everything is running fine, but there are minor issues such as a lack of redundancy. Degraded (2): Part of a redundant system has failed, but the redundancy is keeping the system running. Warning (1): Something other than redundancy is causing issues or may cause issues in the near future, such as disk space running low. Failure (0): At least part of the system has failed completely. SMS and HTML responses are available (if the parameters indicate) and are intended to provide human-readable summaries of issues encountered. The SMS response is suitable for an SMS text message, while the HTML response is suitable for email. The response will always include an - [SendMail](https://api.agilixbuzz.com/docs/entry/Command/SendMail.md): This command sends an e-mail to recipients that are enrolled in the same entity as that specified by the sender's enrollmentid. The POST data to this command must conform to the Mail format. If the send fails, SendMail auto-generates an e-mail and sends it to the sender containing the reason for failure. ### Groups - [AddGroupMembers](https://api.agilixbuzz.com/docs/entry/Command/AddGroupMembers.md): This command adds one or more member enrollments to an existing group. - [CreateGroups](https://api.agilixbuzz.com/docs/entry/Command/CreateGroups.md): This command creates one or more groups in the specified owner course. - [DeleteGroups](https://api.agilixbuzz.com/docs/entry/Command/DeleteGroups.md): This command deletes one or more groups. All group memberships are removed before the group is deleted. - [GetGroup](https://api.agilixbuzz.com/docs/entry/Command/GetGroup.md): This command gets information for a particular group. - [GetGroupEnrollmentList](https://api.agilixbuzz.com/docs/entry/Command/GetGroupEnrollmentList.md): This command lists enrollments for the specified group. - [GetGroupList](https://api.agilixbuzz.com/docs/entry/Command/GetGroupList.md): This command lists groups in the specified owner entity (course). - [RemoveGroupMembers](https://api.agilixbuzz.com/docs/entry/Command/RemoveGroupMembers.md): This command removes one or more member enrollments from an existing group. - [UpdateGroups](https://api.agilixbuzz.com/docs/entry/Command/UpdateGroups.md): This command updates the title, set ID, reference, and data of one or more groups. It updates only the attributes specified in the call. Any omitted attributes retain their existing values. ### Gradebook - [CalculateEnrollmentScenario](https://api.agilixbuzz.com/docs/entry/Command/CalculateEnrollmentScenario.md): This command calculates a rolled-up (category, period, and course) grade scenario for the specified user enrollment given the supplied input grades and grading scheme. - [GetCalendar](https://api.agilixbuzz.com/docs/entry/Command/GetCalendar.md): Gets the iCalendar (RFC2445) file of events for the user or enrollments specified by token. This command requires no additional authentication outside the token. The URL is meant for consumption of calendar programs that connect to .ics files. - [GetCalendarItems](https://api.agilixbuzz.com/docs/entry/Command/GetCalendarItems.md): This command gets duedates and blackoutdates for the specified enrollments. - [GetCalendarToken](https://api.agilixbuzz.com/docs/entry/Command/GetCalendarToken.md): Get a token to generate a URL that can retrieve the current user's calendar without any authentication. - [GetCertificates](https://api.agilixbuzz.com/docs/entry/Command/GetCertificates.md): This command gets the completion certificates associated with a course or section enrollment. - [GetDueSoonList](https://api.agilixbuzz.com/docs/entry/Command/GetDueSoonList.md): This command gets list of items that will soon become due for a student. It optionally returns items that are past due or that have already been completed by the student. For enrollments in continuous courses, *GetDueSoonList* does not list non-gradable items unless Buzz has the domain configuration to show them. - [GetEntityGradebook2](https://api.agilixbuzz.com/docs/entry/Command/GetEntityGradebook2.md): This command gets grades for all students enrolled in the specified entity. The same due-date calculation occurs as that described in GetEnrollmentGradebook2. If there are more than 500 enrollments in the specified entity then to improve performance this call uses course data and item data from the entity's manifest for all enrollments, even if the enrollment has changes to those attributes. - [GetEntityGradebook3](https://api.agilixbuzz.com/docs/entry/Command/GetEntityGradebook3.md): This command gets grades for students enrolled in the specified entity. The same due-date calculation occurs as that described in GetEnrollmentGradebook2. To perform well for most class sizes this call uses course data and item data from the entity's manifest for all enrollments, even if the enrollment has changes to those attributes. To use course data and item data from the enrollment's manifest, use GetEnrollmentGradebook2. - [GetEntityGradebookSummary](https://api.agilixbuzz.com/docs/entry/Command/GetEntityGradebookSummary.md): This command gets grade summaries for students enrolled in the specified entity. The same due-date calculation occurs as that described in GetEnrollmentGradebook2. To perform well for most class sizes this call uses course data and item data from the entity's manifest for all enrollments, even if the enrollment has changes to those attributes. - [GetEntityWork2](https://api.agilixbuzz.com/docs/entry/Command/GetEntityWork2.md): Gets the list of items that have been graded or need grading in a course back to a specified date. If the course has 1000 or more active enrollments (as determined by Course Enrollment Metrics ), then GetEntityWork2 does not return any results. - [GetGrade](https://api.agilixbuzz.com/docs/entry/Command/GetGrade.md): This command gets the grade detail for the specified user enrollment and item. If no grade detail exists or the item referred to by itemid is of type lesson, an empty grade element is returned. GetGrade does not calculate or return due dates. For more extensive grade information or to retrieve lesson grades (which are a rollup of multiple item grades), see GetEnrollmentGradebook2. **Performance notes**: GetGrade performs significant set-up work to get a grade. When retrieving more than one grade, do not call GetGrade multiple times or from a loop, which duplicates the set-up work for each call. Instead, call a gradebook command that retrieves multiple grades (GetEnrollmentGradebook2, GetUserGradebook2, or GetEntityGradebook3), optionally specifying multiple item IDs to get exactly those grades you need. - [GetGradebookList](https://api.agilixbuzz.com/docs/entry/Command/GetGradebookList.md): This command lists entities (courses and sections) that have gradebooks. - [GetGradebookSummary](https://api.agilixbuzz.com/docs/entry/Command/GetGradebookSummary.md): This command gets a summary of course participants that match the specified parameters. When *GetGradebookSummary* is called by a student, some data is ommitted to protect student privacy when there are fewer than five grades for the item across the included enrollments (the *allstatus* parameter changes which enrollments are included). - [GetGradebookWeights](https://api.agilixbuzz.com/docs/entry/Command/GetGradebookWeights.md): This command gets the item and category gradebook weights for the specified entity, optionally filteredby a specific grading period. - [GetGradeHistory](https://api.agilixbuzz.com/docs/entry/Command/GetGradeHistory.md): This command gets the history of grades for an item in the gradebook for the specified user enrollment. Each gradehistory item indicates some change in the grade state including time spent, recorded score, or changed grade status flags. - [GetItemAnalysis2](https://api.agilixbuzz.com/docs/entry/Command/GetItemAnalysis2.md): Some items compute their score from scores assigned within the item. For example, assessments and homework items compute their score from individual question scores, SCORM-based custom activities compute their score from the SCO's cmi.interactions, and rubric-graded assignments compute their score from rubric-row scores. GetItemAnalysis2 returns a summary analysis for these item types and their constituent part scores. The analysis includes answer choices, question difficulty, and a correlation between the question, SCO-interaction, or rubric-rule scores and overall item scores. This command analyzes submissions and scores associated with all courses and items that derive from the course identified by entityid. - [GetItemReport](https://api.agilixbuzz.com/docs/entry/Command/GetItemReport.md): Some items compute their score from scores assigned within the item. For example, assessments and homework items compute their score from individual question scores, SCORM-based custom activities compute their score from the SCO's cmi.interactions, and rubric-graded assignments compute their score from rubric-row scores. GetItemReport returns report data for these item types and their constituent part scores. The reports include answer choices, question difficulty, and a correlation between the question, SCO-interaction, or rubric-rule scores and overall item scores. This command analyzes submissions and scores associated with all courses and items that derive from the course identified by entityid. This command provides the analysis information used by GetItemAnalysis2 in exportable data formats. - [GetRubricMastery](https://api.agilixbuzz.com/docs/entry/Command/GetRubricMastery.md): This command gets report data that shows how students are performing for items related to the specified rubric. - [GetRubricStats](https://api.agilixbuzz.com/docs/entry/Command/GetRubricStats.md): This command gets detailed information about responses and scores associated with the rules in a rubric. - [GetUserGradebook2](https://api.agilixbuzz.com/docs/entry/Command/GetUserGradebook2.md): This command gets gradebook detail for the specified user. This command is similar to GetEnrollmentGradebook2, except that it returns grades for multiple enrollments. The same due-date calculation also occurs as described in GetEnrollmentGradebook2. Note that this API is subject to API rate limiting. See the API Rate Limiting concept for more information. ### Manifests and Items - [AssignItem](https://api.agilixbuzz.com/docs/entry/Command/AssignItem.md): Assigning an item to a folder changes the item’s parent and sequence to the specified values. You may assign the *itemid* item to the *folderid* item if: - The *itemid* item is one of *folderid*'s assignable items (you call ListAssignableItems to list the assignable items). - The *itemid* item has *studentcreated*=*true* and the *folderid* item has *assignallowstudentcreated*=*true*. You may not assign the *itemid* item to the *folderid*item if: - Your user does not have UpdateCourse@entityid and either the *itemid* is already assigned, or assigning the *itemid* item would assign more items to the *folderid* item than the sum of the folder's *assignableitemsrequired* and *assignableitemsoptional* attributes. - The *itemid* item has *studentcreated*=*true*, and the *folderid* item does not have *assignallowstudentcreated*=*true*. - [CopyItems](https://api.agilixbuzz.com/docs/entry/Command/CopyItems.md): This command copies one or more items from one course to another. It does not copy resources referred to by an item's Item Data, including rubric, attachment, and item-content resources. To copy them use CopyResources. - [DeleteItems](https://api.agilixbuzz.com/docs/entry/Command/DeleteItems.md): This command deletes one or more items from a manifest. - [FindPersonalizedEntities](https://api.agilixbuzz.com/docs/entry/Command/FindPersonalizedEntities.md): This command finds the course, enrollment, and group entities that contain items which have been personalized in the way specified by the query parameter. A personalized item is an item that has been created in that entity, or is different from the entity's parent. - [GetItem](https://api.agilixbuzz.com/docs/entry/Command/GetItem.md): This command gets a manifest item. The item data returned from **GetItem** may not match the item data returned from GetManifest because the latter function post-processes the item data for rolled-up learning objectives and other features. The item data for sections or groups shows the result of merging the underlying course item data with the overrides in the section or group item data. (See Item Data Schema for more details on the contents of the manifest.) - [GetItemInfo](https://api.agilixbuzz.com/docs/entry/Command/GetItemInfo.md): This command gets information about an item in the course, section or group specified by entityid. - [GetItemLinks](https://api.agilixbuzz.com/docs/entry/Command/GetItemLinks.md): This command gets a list of manifest items that link to the specified item through course or item chaining. It can also get the list of courses that link to (are derivates of) a specified course. GetItemLinks is recursive; it lists items or courses whether they directly or indirectly link to the specified item or course. For example, if course with ID 222 links to 333, and 333 links to 444, then GetItemLinks reports both 222 and 333 as links to 444. - [GetItemList](https://api.agilixbuzz.com/docs/entry/Command/GetItemList.md): This command lists items. The item data returned from **GetItemList** may not match the item data returned from GetManifest because the latter function post-processes the item data for rolled-up learning objectives and other features. (See Item Data Schema for more details on the contents of the manifest.) - [GetManifest](https://api.agilixbuzz.com/docs/entry/Command/GetManifest.md): This command gets the manifest for the specified entity (course, section, group,or enrollment). The manifest contains data field from the course and all the items in the course. The items are organized in a tree according to the parent-child relationships defined on the items, and the items are ordered by their *sequence* values. See Course Data Schema and Item Data Schema for more details on the contents of the manifest. To get all manifest data except the items, see GetManifestData. - [GetManifestData](https://api.agilixbuzz.com/docs/entry/Command/GetManifestData.md): This command gets the manifest data (see Course Data) for the specified entity (course, section, group,or enrollment) except for the <item> data. Call GetManifest to also get the <item> data. - [GetManifestInfo](https://api.agilixbuzz.com/docs/entry/Command/GetManifestInfo.md): This command gets information about the manifest of one or more courses or sections. - [GetManifestItem](https://api.agilixbuzz.com/docs/entry/Command/GetManifestItem.md): This command gets an item and optionally some of its descendents from the manifest of a course or section. The items are organized in a tree according to the parent-child relationships defined on the items. (See Item Data Schema for more details on the contents of the manifest.) **Performance notes**: GetManifestItem performs significant set-up work to get a manifest item. When retrieving more than one item from a manifest, avoid calling GetManifestItem multiple times or from a loop, which duplicates the set-up work for each call. Instead, call GetManifest to get all items, and then parse out the items you want from the manifest's item list. - [ListAssignableItems](https://api.agilixbuzz.com/docs/entry/Command/ListAssignableItems.md): ListAssignableItems uses the *assignableitemsquery* attribute on the *folderid* item to list items in the course that may be assigned to *folderid*. If *assignableitemsquery* has no value, then ListAssignableItems does not return any items. ListAssignableItems does not return items that are currently visible to the student. - [ListRestorableItems](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableItems.md): This command lists items that have been deleted and can be restored. - [NavigateItem](https://api.agilixbuzz.com/docs/entry/Command/NavigateItem.md): This command attempts to navigate a user's enrollment to a course item. If the enrollment has permission to view the item, *NavigateItem* returns item information that enables complete display of the item and its content. If the enrollment does not have permission to view the item, the response includes the reasons why. If the item is an *AssetLink* or *CustomActivity* with an *href* to an LTI-enabled web site (see the *lti* element in Item Data), you should include the parameters that begin with "*lti*", which are recommended by the LTI specification. See www.imsglobal.org/LTI for more details about LTI. If the item content includes references to LTILINK variables, the response will replace these variables with launch URL to view LTI item content in an external window. - [PutItems](https://api.agilixbuzz.com/docs/entry/Command/PutItems.md): This command puts one or more items in a manifest. - [RestoreItems](https://api.agilixbuzz.com/docs/entry/Command/RestoreItems.md): This command restores one or more items in a manifest. - [Search2](https://api.agilixbuzz.com/docs/entry/Command/Search2.md): This command searches course content that has been marked by course creators as searchable and returns a paginated list of results. The number of returned results are limited by the *start* and *limit* parameters. Programmers looking for non-indexed courses and items with known Item Data field values should not use Search2, but instead use GetItemList. See Free-Form Data Query for more details. See Search Querying for more details about the available query fields and the query syntax, or Search Indexing for more details about how to index your course items. - [UnassignItem](https://api.agilixbuzz.com/docs/entry/Command/UnassignItem.md): Unassigning an item changes the item’s parent and sequence to their default values (the values they would have if they had never been assigned). - [UpdateManifestData](https://api.agilixbuzz.com/docs/entry/Command/UpdateManifestData.md): This command updates the manifest data (see Course Data) on the specified entity (course or section.) Only the elements specified in the POST data are updated; existing manifest elements not contained in the POST dataremain unchanged. ### Objectives - [CreateObjectiveSets](https://api.agilixbuzz.com/docs/entry/Command/CreateObjectiveSets.md): This command creates one or more objective sets or objective map sets, which are containers for either objectives or objective maps, respectively. - [DeleteObjectiveMaps](https://api.agilixbuzz.com/docs/entry/Command/DeleteObjectiveMaps.md): This command deletes one or more objective maps from an objective map set. - [DeleteObjectives](https://api.agilixbuzz.com/docs/entry/Command/DeleteObjectives.md): This command deletes one or more objectives in an objective set. - [DeleteObjectiveSets](https://api.agilixbuzz.com/docs/entry/Command/DeleteObjectiveSets.md): This command deletes one or more objective sets or objective map sets. - [GetMasteryDetail](https://api.agilixbuzz.com/docs/entry/Command/GetMasteryDetail.md): This command summarizes a single learning objective's mastery for each enrollment in the specified entities. - [GetMasterySummary](https://api.agilixbuzz.com/docs/entry/Command/GetMasterySummary.md): This command lists learning objectives and summarizes their mastery for enrollments in the specified entities. All of the objectives associated with an enrollment that are defined as part of an objective set are summarized. Additionally, if the requested entity is a course or enrollment then the objectives defined directly on a course are also summarized. - [GetObjectiveList](https://api.agilixbuzz.com/docs/entry/Command/GetObjectiveList.md): This command gets a list of learning objectives. Each of setid, guid, and parent are optional parameters; however, you must specify exactly one of them to retrieve any objectives. - [GetObjectiveMapList](https://api.agilixbuzz.com/docs/entry/Command/GetObjectiveMapList.md): This command gets the list of maps defined in an objective map set. - [GetObjectiveMastery](https://api.agilixbuzz.com/docs/entry/Command/GetObjectiveMastery.md): This command gets objective mastery report data for the specified entity using student scores from objective-aligned items and questions. - [GetObjectiveSet2](https://api.agilixbuzz.com/docs/entry/Command/GetObjectiveSet2.md): This command gets information for a objective set or objective map set. - [GetObjectiveSubjectList](https://api.agilixbuzz.com/docs/entry/Command/GetObjectiveSubjectList.md): This command gets the list of subjects covered by the learning objectives for an objective set. Each of setid, guid, and parent are optional parameters; however, you must specify exactly one of them to retrieve any subjects. - [ListObjectiveSets](https://api.agilixbuzz.com/docs/entry/Command/ListObjectiveSets.md): This command gets a list of objective sets or objective map sets. - [PutObjectiveMaps](https://api.agilixbuzz.com/docs/entry/Command/PutObjectiveMaps.md): This command creates or updates one or more objective maps and puts them into an objective map set. - [PutObjectives](https://api.agilixbuzz.com/docs/entry/Command/PutObjectives.md): This creates or updates one or more learning objectives and puts them in an objective set. - [RestoreObjectiveSet](https://api.agilixbuzz.com/docs/entry/Command/RestoreObjectiveSet.md): This command restores a deleted objective set. - [UpdateObjectiveSets](https://api.agilixbuzz.com/docs/entry/Command/UpdateObjectiveSets.md): This command updates the name, reference, and other attributes of one or more objective sets or objective map sets. ### Peer Grading - [GetPeerResponse](https://api.agilixbuzz.com/docs/entry/Command/GetPeerResponse.md): This command gets a peer's response to a student's submission. A response is a zip-compressed file that can contain comments, rubric data, likert data, and supporting files. If the peer response has no supporting files, you can retrieve just the Response XML. - [GetPeerResponseInfo](https://api.agilixbuzz.com/docs/entry/Command/GetPeerResponseInfo.md): This command retrieves information about peer responses from the server. - [GetPeerResponseList](https://api.agilixbuzz.com/docs/entry/Command/GetPeerResponseList.md): This command lists peer's responses to the specified student's submission to a course item. - [GetPeerReviewList](https://api.agilixbuzz.com/docs/entry/Command/GetPeerReviewList.md): This command lists peers that may be reviewed by the specified enrollment user. If the item does not have PeerAssessmentOnly set on the peerreviewflags, and the enrollment user has already reviewed a peer's submission for the specified item, the returned data includes information about the existing peer review. - [PutPeerResponse](https://api.agilixbuzz.com/docs/entry/Command/PutPeerResponse.md): This command puts peer response data including comments, rubric score, and likert responses to the server. Although a peer response can include a score, PutPeerResponse does not record the score in the gradebook. A peer response is a zip-compressed file that contains a Response XML file named meta.xml and additional supporting attached files. If the peer response has no supporting files, you can put just the Response XML. ### Ratings - [GetItemRating](https://api.agilixbuzz.com/docs/entry/Command/GetItemRating.md): This command gets a user rating on a manifest item. - [GetItemRatingSummary](https://api.agilixbuzz.com/docs/entry/Command/GetItemRatingSummary.md): This command gets the summary of user ratings on a manifest item. - [PutItemRating](https://api.agilixbuzz.com/docs/entry/Command/PutItemRating.md): This command puts a user rating on a manifest item. ### Reports - [GetReportInfo](https://api.agilixbuzz.com/docs/entry/Command/GetReportInfo.md): This command lists the information about a report including the parameters required to run it. - [GetReportList](https://api.agilixbuzz.com/docs/entry/Command/GetReportList.md): This command lists all reports defined on a domain. Reports inherited from parent domains are not included. (See GetRunnableReportList for getting all reports, including inherited ones.) - [GetRunnableReportList](https://api.agilixbuzz.com/docs/entry/Command/GetRunnableReportList.md): This command lists all reports available to the currently logged-on user. Optionally, the list of reports is restricted to those available for a particular Entity. Entities on which reports can be run are Domains, Courses and Sections. - [RunReport](https://api.agilixbuzz.com/docs/entry/Command/RunReport.md): This command runs the specified report. ### Resources - [CopyResources](https://api.agilixbuzz.com/docs/entry/Command/CopyResources.md): This command copies one or more resources from the domain or course specified by sourceentityid to the domain or course specified by destinationentityid. - [DeleteDocuments](https://api.agilixbuzz.com/docs/entry/Command/DeleteDocuments.md): This command deletes one or more user documents from the server. - [DeleteResources](https://api.agilixbuzz.com/docs/entry/Command/DeleteResources.md): This command deletes one or more resources from a domain, course, or enrollment. - [GetDocument](https://api.agilixbuzz.com/docs/entry/Command/GetDocument.md): This command retrieves a user document from the server. A user document is content produced by a user in response to using a course within a section. These documents include things like assignment submissions, teacher response to assignments, and exam attempts. - [GetDocumentInfo](https://api.agilixbuzz.com/docs/entry/Command/GetDocumentInfo.md): This command retrieves information about one or more user documents from the server. A user document is content produced by a user in response to using a course within a section. These documents include assignment submissions, teacher response to assignments, and exam attempts. - [GetEntityResourceId](https://api.agilixbuzz.com/docs/entry/Command/GetEntityResourceId.md): This command gets the resource entity ID of the specified entity. This ID includes the resource version of the entity and allows clients to cache resources indefinitely because updates to the resource alter this ID. - [GetResource](https://api.agilixbuzz.com/docs/entry/Command/GetResource.md): This command gets resource metadata and/or binary content for the course, section, enrollment, user, or domain. - [GetResourceInfo2](https://api.agilixbuzz.com/docs/entry/Command/GetResourceInfo2.md): This command gets information about a resource in the domain, course, section, or enrollment specified by entityid. - [GetResourceList2](https://api.agilixbuzz.com/docs/entry/Command/GetResourceList2.md): This command lists metadata for entity (domain, course, or enrollment) resources. - [ListRestorableDocuments](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableDocuments.md): This command lists documents that have been deleted and can be restored. - [ListRestorableResources](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableResources.md): This command lists resources that have been deleted and can be restored. - [PutResource](https://api.agilixbuzz.com/docs/entry/Command/PutResource.md): This command puts a resource to the server for the specified course, section, enrollment, user, or domain. Resources include things such as course manifests, rich media content, or HTML pages. - [PutResourceFolders](https://api.agilixbuzz.com/docs/entry/Command/PutResourceFolders.md): This command creates one or more resource folders for a domain or course. - [RestoreDocuments](https://api.agilixbuzz.com/docs/entry/Command/RestoreDocuments.md): This command restores one or more documents. - [RestoreResources](https://api.agilixbuzz.com/docs/entry/Command/RestoreResources.md): This command restores one or more resources in a domain, course, or enrollment. ### Rights - [CreateRole](https://api.agilixbuzz.com/docs/entry/Command/CreateRole.md): This command creates a role on a given domain. When a user is assigned a role the rights associated with the role as granted to the user. - [DeleteRole](https://api.agilixbuzz.com/docs/entry/Command/DeleteRole.md): This command deletes a role from the server. - [DeleteSubscriptions](https://api.agilixbuzz.com/docs/entry/Command/DeleteSubscriptions.md): This command deletes one or more subscriptions. Each subscription is uniquely identified by its subscriberid, entityid, and flags. - [GetActorRights](https://api.agilixbuzz.com/docs/entry/Command/GetActorRights.md): This command lists entities that an actor (user) has rights for. - [GetEffectiveRights](https://api.agilixbuzz.com/docs/entry/Command/GetEffectiveRights.md): This command gets the effective rights granted to the current user for the specified entity (domain, course, or section). It takes into account all rights granted through domain privileges as well as course and section enrollments. - [GetEffectiveSubscriptionList](https://api.agilixbuzz.com/docs/entry/Command/GetEffectiveSubscriptionList.md): This command lists effective subscriptions for the current signed-in user, including those inherited from the user's domain, and excluding any whose enddate has passed or startdate is in the future. To list subscriptions explicitly assigned to a user, see GetSubscriptionList. - [GetEntityRights](https://api.agilixbuzz.com/docs/entry/Command/GetEntityRights.md): This command lists users and the rights granted to those users for the specified entity (domain, course, section, enrollment or user.) - [GetEntitySubscriptionList](https://api.agilixbuzz.com/docs/entry/Command/GetEntitySubscriptionList.md): This command lists subscriptions to the specified entity (course or domain). - [GetPersonas](https://api.agilixbuzz.com/docs/entry/Command/GetPersonas.md): This command gets the list of personas associated with a user. - [GetRights](https://api.agilixbuzz.com/docs/entry/Command/GetRights.md): This command gets the rights granted to the specified actor (user or role) for the specified entity (domain, course, or section). - [GetRightsList](https://api.agilixbuzz.com/docs/entry/Command/GetRightsList.md): This command lists rights granted to users on entities (domains, users, and enrollments). - [GetRole](https://api.agilixbuzz.com/docs/entry/Command/GetRole.md): This command gets information for a role. - [GetSubscriptionList](https://api.agilixbuzz.com/docs/entry/Command/GetSubscriptionList.md): This command lists subscriptions explicitly assigned to the specified subscriber (user or domain). To list effective subscriptions for a user, including those inherited from the user's domain, see GetEffectiveSubscriptionList. - [ListRoles](https://api.agilixbuzz.com/docs/entry/Command/ListRoles.md): This command lists roles defined for a domain. Each domain can specify one or more roles. The roles for a domain include all of the roles inherited from any of the ancestor domains. - [RestoreRole](https://api.agilixbuzz.com/docs/entry/Command/RestoreRole.md): This command restores a role that has been previously deleted. - [UpdateRights](https://api.agilixbuzz.com/docs/entry/Command/UpdateRights.md): This command updates the rights (flags) granted to the specified user (actorid) for the domain or enrollment specified by entityid. To grant a user rights to a course or section, use CreateEnrollments or UpdateEnrollments. Those commands modify the rights associated with an enrollment. In this command, granting rights for an enrollment grants rights for the user to view another user's enrollment. - [UpdateRole](https://api.agilixbuzz.com/docs/entry/Command/UpdateRole.md): This command updates the name, domainid, reference, or privileges for a role. If you omit an optional attribute (like domainid or name) that attribute remains unchanged. Note that the propagation of the change happens asynchronously and so there may be some delay for the change is realized. - [UpdateSubscriptions](https://api.agilixbuzz.com/docs/entry/Command/UpdateSubscriptions.md): This command creates or updates the subscription for the specified subscriber. A subscription is uniquely identified by its subscriberid, entityid, and flags. The subscriber is able to search for and read or view any course content covered by the subscription. ### Submissions - [DeleteWorkInProgress](https://api.agilixbuzz.com/docs/entry/Command/DeleteWorkInProgress.md): This command deletes an attachment file from a student's previously saved work-in-progress submission. - [GetScoData](https://api.agilixbuzz.com/docs/entry/Command/GetScoData.md): This command gets a user's SCORM data for a SCO activity from the server. The data is a list of name-value pairs of SCORM-defined variables plus some additional API-defined variables. For details about the SCORM run-time environment and the variables it defines, see the official SCORM Runtime Environment reference manual at http://www.adlnet.gov/capabilities/scorm. These are the API-defined variables: | Name | Meaning | | --- | --- | | xli.course\_id | The ID of the course that contains the SCORM activity. | | xli.course\_name | The name of the course that contains the SCORM activity. | | xli.course\_reference | The external ID of the course that contains the SCORM activity. | | xli.custom.nnn | A custom value stored on the customfields element of the Item Data. Replace nnn with the custom field name. | | xli.domain\_id | The ID of the current user's (xli.user\_id) domain. | | xli.domain\_name | The name of the current user's (xli.user\_id) domain. | | xli.enrollment\_first | The enrollment's (xli.enrollment\_id) first name. | | xli.enrollment\_id | The enrollment ID of the user who owns and submits the SCORM data for this SCORM activity. For example, if a teacher is getting a student's SCORM activity for review, xli.enrollment\_id is the student's enrollment ID. If a teacher is viewing the SCORM activity while browsing the course for herself, xli.enrollment\_id is the teacher's enrollment ID. | | xli.enrollment\_last | The enrollment's (xli.enrollment\_id) last name. | | xli.enrollment\_rights | The enrollment's (xli.enrollment\_id) rights in the course. Possible values are defined by RightsFlags. Also see xli.user\_rights. | | xli.enrollment\_username | The enrollment's (xli.enrollment\_id) username. | | xli.enrollment\_reference | The enrollment's (xli.enrollment\_id) external ID. | | xli.item\_id | The ID of this SCORM activity item in the course (xli.course\_id). | | xli.item\_name | The name of this SCORM activity item in the course (xli.course\_id). | | xli.item\_duedate | The due date of the item that the current user is viewing, or empty string ("") if no due date is set. | | xli.section\_id | The ID of the section the current user is viewing. | | xli.section\_name | The name of the section the current user is viewing. | | xli.section\_reference | The external ID of the section the current user is viewing. | | xli.user\_display | The current user's (xli.user\_id) full display name. | | xli.user\_first | The current user's (xli.user\_id) first name. | | xli.user\_last | The current user's (xli.user\_id) last name. | | xli.user\_id | The current user's ID. For example, if a teacher is getting a student's SCORM activity for review, xli.user\_id is the teacher's user ID. This ID is unique only within the user's userspace; i.e., the xli.userspace/xli.user\_id value uniquely identifies a user. | | xli.user\_rights | The current user's (xli.user\_id) rights in the course. Possible values are defined by RightsFlags. Also see xli.enrollment\_rights. | | xli.username | The current user's (xli.user\_id) username. This name is unique only within the userspace. | | xli.userspace | The current user's (xli.user\_id) userspace. The xli.userspace/xli.username or xli.userspace/xli.user\_id combination uniquely identifies a user. | | xli.user\_reference | The current user's (xli.user\_id) external ID. | - [GetStudentSubmission](https://api.agilixbuzz.com/docs/entry/Command/GetStudentSubmission.md): This command gets a student's submission. A student submission is a zip-compressed file that can contain comments, exam answers, URLs, attached files, etc. With this command you can retrieve the entire submission or individual parts of it. - [GetStudentSubmissionHistory](https://api.agilixbuzz.com/docs/entry/Command/GetStudentSubmissionHistory.md): This command gets the history of submissions for an item in the gradebook for the specified user enrollment. If the submission has been scored or responded to by a teacher, the submission entry includes the teacher response data. - [GetStudentSubmissionInfo](https://api.agilixbuzz.com/docs/entry/Command/GetStudentSubmissionInfo.md): This command retrieves information about one or more student submissions from the server. A student submission is content produced by a student in the process of consuming a course. - [GetTeacherResponse](https://api.agilixbuzz.com/docs/entry/Command/GetTeacherResponse.md): This command gets a teacher's response to a student's submission. A response is a zip-compressed file that can contain scores, feedback, rubric data, attached files, etc. With this command you can retrieve the entire response or individual parts of it. - [GetTeacherResponseInfo](https://api.agilixbuzz.com/docs/entry/Command/GetTeacherResponseInfo.md): This command retrieves information about teacher responses from the server. - [GetWorkInProgress2](https://api.agilixbuzz.com/docs/entry/Command/GetWorkInProgress2.md): This command gets a work-in-progress file. - [PutItemActivity](https://api.agilixbuzz.com/docs/entry/Command/PutItemActivity.md): This command reports per-item student time spent to the server. Note that this API is subject to API rate limiting. See the API Rate Limiting concept for more information. - [PutScoData](https://api.agilixbuzz.com/docs/entry/Command/PutScoData.md): This command puts a user's SCORM data for a SCO activity to the server. The data is a list of name-value pairs where each name is a SCORM run-time data-model variable name. For details about the SCORM run-time environment and the variables it defines, see the official SCORM Runtime Environment reference manual at http://www.adlnet.gov/capabilities/scorm. As per the SCORM spec, *PutScoData* strips read-only fields from the data and accumulates *cmi.total\_time*. It also automatically generates a corresponding Submission for the SCO data when *cmi.completion\_status* is *completed*, and any of *cmi.score.scaled*, *cmi.score.raw*, *cmi.score.max*, or *cmi.completion\_status* changes from the previous call to *PutScoData* for the same *enrollmentid* and *itemid*. If *PutScoData* generates a *Submission* and the SCO data contains a score, *PutScoData* also automatically generates a corresponding Response. - [PutStudentSubmission](https://api.agilixbuzz.com/docs/entry/Command/PutStudentSubmission.md): This command puts a student submission for an activity to the server. A student submission is a zip-compressed file that contains a Submission XML file named meta.xml and additional supporting attached files. If the submission has no supporting files, you can put just the Submission data. - [PutTeacherResponse](https://api.agilixbuzz.com/docs/entry/Command/PutTeacherResponse.md): This command puts teacher response data including scores, comments, and grade status flags to the server. A teacher response is a zip-compressed file that contains a Response XML file named meta.xml and additional supporting attached files. If the teacher response has no supporting files, you can put just the Response data. If you are putting only status or score information then PutTeacherResponses is more efficient. - [PutTeacherResponses](https://api.agilixbuzz.com/docs/entry/Command/PutTeacherResponses.md): This command puts one or more teacher responses including scores and grade status flags to the server. This command is more efficient than PutTeacherResponse when putting only status and score information. - [PutWorkInProgress](https://api.agilixbuzz.com/docs/entry/Command/PutWorkInProgress.md): This command puts a work-in-progress file on the server in preparation for a student submission. Call SubmitWorkInProgress to submit the work. - [SubmitWorkInProgress](https://api.agilixbuzz.com/docs/entry/Command/SubmitWorkInProgress.md): This command submits work-in-progress files on the server as a completed submission for the student. You must call PutWorkInProgress to put work-in-progress files on the server before calling *SubmitWorkInProgress*. ### Users - [CreateUsers2](https://api.agilixbuzz.com/docs/entry/Command/CreateUsers2.md): This command creates one or more users. - [DeleteUsers](https://api.agilixbuzz.com/docs/entry/Command/DeleteUsers.md): This command deletes one or more users from the server. When a user is deleted, all related enrollments are deleted as well. Note that in order to prevent abuse, users who have DeleteUser rights will be denied access to delete another user in their domain when that user has any domain privilege in any domain they do not. Further, if the target user has a cross-domain enrollment with rights other than ReadCourse/Section and Participate in any other domain, the user requesting the deletion must also have DeleteUser rights in the domain of that enrollment. Also, this function cannot be used to delete the account that is performing the deletion (so you can't accidentally delete yourself). - [GetActiveUserCount](https://api.agilixbuzz.com/docs/entry/Command/GetActiveUserCount.md): Gets the number of active users either currently or for the given date range. If the date range specified includes a partial unit of the grouping unit specified, only the activity in the partial unit specified is counted. For example, if the date range specified is 2012-01-15 through 2012-02-15 and the data is grouped by month, the user activity between 2012-01-15 and 2012-01-31 will be returned in one row and the user activity between 2012-02-01 and 2012-02-15 will be returned in another row. For the purposes of this function, an active user is any user that was logged in at any point before the end of the specified time window and was logged out at any point after the start of the specified time window. The user logout will be estimated as 15 minutes after the last user activity. This function only works in terms of days (so you can't specify 1:00 PM-2:00 PM on the same day and get any results). For finer granularity, use the user activity details (GetUserActivity). - [GetDomainActivity](https://api.agilixbuzz.com/docs/entry/Command/GetDomainActivity.md): This command lists activity for all users in a specified domain. - [GetProfilePicture](https://api.agilixbuzz.com/docs/entry/Command/GetProfilePicture.md): This command gets binary content for the user's profile picture if it exists. If the user's profile references an absolute URL, then this command redirects to that URL through an HTTP 302. If the user's profile picture is not configured, a default image will be used. The default image is configurable in the Buzz settings. - [GetUser2](https://api.agilixbuzz.com/docs/entry/Command/GetUser2.md): This command gets information for a particular user. - [GetUserActivity](https://api.agilixbuzz.com/docs/entry/Command/GetUserActivity.md): This command lists the login activity for a user. - [GetUserActivityStream](https://api.agilixbuzz.com/docs/entry/Command/GetUserActivityStream.md): This command lists activities in a user's activity stream. Activities are created when events specified in ActivityStreamType occur. Activities are returned sorted by date with the most recent first. Activities older than 90 days are not returned. - [ListUsers](https://api.agilixbuzz.com/docs/entry/Command/ListUsers.md): This command lists users. - [RestoreUser](https://api.agilixbuzz.com/docs/entry/Command/RestoreUser.md): This command restores a deleted user. - [UpdateUsers](https://api.agilixbuzz.com/docs/entry/Command/UpdateUsers.md): This command updates the first name, last name, reference field, e-mail address, and flags for one or more users. If you omit an optional attribute (like domainid or firstname) that attribute remains unchanged. If the Buzz application settings prevent students from updating their own email address or profile picture, those restrictions will be enforced here. - [VerifyUserEmail](https://api.agilixbuzz.com/docs/entry/Command/VerifyUserEmail.md): This command verifies a messaging account associated with a user. Administrators should only verify an account that is owned by the institution (e.g., school email address) and has confirmed that the account is associated with the correct user. All other accounts must be verified by the user. ### Wikis - [CopyWikiPages](https://api.agilixbuzz.com/docs/entry/Command/CopyWikiPages.md): This command copies one or more wiki pages from the specified source course, item and group to the specified destination course, item and group. - [DeleteWikiPages](https://api.agilixbuzz.com/docs/entry/Command/DeleteWikiPages.md): This command deletes one or more wiki pages from a course. - [GetWikiPage](https://api.agilixbuzz.com/docs/entry/Command/GetWikiPage.md): This command retrieves a wiki page from the server. - [GetWikiPageList](https://api.agilixbuzz.com/docs/entry/Command/GetWikiPageList.md): This command lists metadata for wiki pages. - [ListRestorableWikiPages](https://api.agilixbuzz.com/docs/entry/Command/ListRestorableWikiPages.md): This command lists wiki pages that have been deleted from a course or section and can be restored. - [PutWikiPage](https://api.agilixbuzz.com/docs/entry/Command/PutWikiPage.md): This command puts a wiki page to the server. - [RestoreWikiPages](https://api.agilixbuzz.com/docs/entry/Command/RestoreWikiPages.md): This command restores one or more wiki pages in a course or section. - [UpdateWikiPageViewed](https://api.agilixbuzz.com/docs/entry/Command/UpdateWikiPageViewed.md): This command updates a user’s viewed state of one or more wiki pages. ## Obsolete Commands - [CreateUsers](https://api.agilixbuzz.com/docs/entry/Command/CreateUsers.md): This command creates one or more users. - [GenerateSubmission](https://api.agilixbuzz.com/docs/entry/Command/GenerateSubmission.md): This command generates an assessment submission by processing assessment and randomization criteria from the assessment definition. Call GenerateSubmission to retrieve an initial submission for Assessment and Homework items. This call takes an optional template, use it to generate additional attempts for Homework items. GenerateSubmission will generate a new submission based on the template, preserving question order and parameter values if possible. When adding this new submission to an existing submission, you need to update the new partid values to unique numbers. - [GetCookie](https://api.agilixbuzz.com/docs/entry/Command/GetCookie.md): Each API command automatically refreshes the API authorization token, extending the expiration for the duration originally specified at login, but if you need to keep the extend the token life without making any specific API call, this command will simply extend the token duration. For example, if the interval between API calls in your application is long (over 10 minutes), you can call GetCookie more frequently than every 10 minutes to keep the user authorized. - [GetCourse](https://api.agilixbuzz.com/docs/entry/Command/GetCourse.md): This command gets information for a course. - [GetDomain](https://api.agilixbuzz.com/docs/entry/Command/GetDomain.md): This command gets information for the specified domain. - [GetEnrollment2](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollment2.md): This command gets enrollment data for a particular enrollment. - [GetEnrollmentGradebook](https://api.agilixbuzz.com/docs/entry/Command/GetEnrollmentGradebook.md): This command gets the gradebook detail for the specified user enrollment in a section. You can specify a special itemid to obtain the final course grade or other grading-period grades. (See PutTeacherResponse for more information.) - [GetEntityEnrollmentList](https://api.agilixbuzz.com/docs/entry/Command/GetEntityEnrollmentList.md): This command gets the list of users enrolled in the specified course. - [GetEntityEnrollmentList2](https://api.agilixbuzz.com/docs/entry/Command/GetEntityEnrollmentList2.md): This command gets the list of users enrolled in the specified entity. - [GetLoginActivity](https://api.agilixbuzz.com/docs/entry/Command/GetLoginActivity.md): This command gets the login activity detail for a user or domain. - [GetQuestionList](https://api.agilixbuzz.com/docs/entry/Command/GetQuestionList.md): This command lists one or more questions in a course. - [GetRecord](https://api.agilixbuzz.com/docs/entry/Command/GetRecord.md): This command gets one content record that you can use in course development. - [GetResourceList](https://api.agilixbuzz.com/docs/entry/Command/GetResourceList.md): This command lists metadata for entity resources. - [GetUser](https://api.agilixbuzz.com/docs/entry/Command/GetUser.md): This command gets information for a particular user. - [GetUserEnrollmentList2](https://api.agilixbuzz.com/docs/entry/Command/GetUserEnrollmentList2.md): This command lists enrollments for the specified user. - [GetUserList](https://api.agilixbuzz.com/docs/entry/Command/GetUserList.md): This command lists users. - [GetWorkInProgress](https://api.agilixbuzz.com/docs/entry/Command/GetWorkInProgress.md): This command gets a work-in-progress file. - [Login2](https://api.agilixbuzz.com/docs/entry/Command/Login2.md): This command authenticates a user on the server and initiates a session for them. A token is returned in the response, along with the number of minutes before the token will expire. This token provides access to subsequent calls to API commands within the specified time period, and must be passed as the \_token parameter on the GET portion of the URL or in the XML or JSON part of a POST command in the same context where the API command is specified. Each API command will extend the expiration of the session associated with the token. If you just need to extend the session and don't want to make a API call, the ExtendSession command will do nothing other than extend the session. The use of cookies for authentication tokens has been deprecated due to security concerns from cross-site scripting issues which are not fully addressed by the CORS standard. Keeping the token value returned from Login2 and passing it on to each subsequent API command as \_token helps prevent cross-site scripting because the value isn't automatically sent with every cross-site request. Passing tokens in an Authorization: Bearer header is also now supported. Unlike most other API commands, callers must support several different error codes returned by this function in different ways. InvalidCredentials will be returned if the username/password combination is not valid. DeactivatedUserOrDomain will be returned if the user or domain was explicitly deactivated. LicenseLimitExceeded will be returned if the domain's license limit is exceeded for one or more of the user's corresponding personas. NoLicense will be returned if the domain doesn't have a license and no ancestor domain has a license. LicenseExpired will be returned if the domain's license has expired. LicenseNotYetValid will be returned if the domain's license is not yet valid (ie. it's before the start date of the license). PasswordExpired will be returned if the user's password has expired due to the domain's password policy and the user must change their password (in this case, UpdatePassword is the only DLAP function that will be allowed for this user until their password is changed). AccountLockout will be returned if the user's account has been locked out due to too many contiguous password login failures. LoginMethodNotAllowed will be returned if the account doesn't allow the type of login being attempted (password login is not allowed for SSO-only users, for example). PasswordPolicyRequirementsNotMet will be returned if the password does not meet the active password policy requirements, and the policy is configured to force a password reset under these conditions. SecondFactorRequired will be returned if the user has opted for multi-factor authentication and the password was correct, but the caller must provide the seond factor to complete authentication. SecondFactorConfigurationNowRequired will be returned if the password policy now requires a second factor but the user has not yet configured the second factor. The user will be logged in, but will only be allowed to configure a second factor before doing anything else. For this API, a warning may also be returned to the caller as a "warning" property on the response object. The value of this property will indicate what the problem is.For login, the only possibly value is currently PasswordPolicyRequirementsNotMet, which indicates that the login succeeded, but the password policy is configured to warn users when the password they use to login no longer meets the active policy requirements, either because the policy changed, because the entropy calculation changed and caused this password to fall below the minimum level, or because the password was found in one or more publicly-available account breaches. An appropriate warning should be issued indicating that it is recommended that the user change their password, but the user should be allowed to proceed after the warning. - [PutItemStatus](https://api.agilixbuzz.com/docs/entry/Command/PutItemStatus.md): This command is obsolete. Use PutTeacherResponse or PutTeacherResponses or PutStudentSubmission instead. This command puts student item status and/or student scores to the server. ## Enumerations - [AccessPrivilege](https://api.agilixbuzz.com/docs/entry/Enum/AccessPrivilege.md): Content commands such as GetRecordList include an access privilege attribute that can contain one of these values. - [ActivityStreamType](https://api.agilixbuzz.com/docs/entry/Enum/ActivityStreamType.md): The GetUserActivityStream command includes a type attribute that can contain one of these values. - [CompletionTrigger](https://api.agilixbuzz.com/docs/entry/Enum/CompletionTrigger.md): Commands such as PutItems include a completiontrigger attribute that can contain one of these values. When the completiontrigger attribute is not set, completion is determined by a score on the activity. - [CourseDataFlags](https://api.agilixbuzz.com/docs/entry/Enum/CourseDataFlags.md): The Course Data schema has a flags attribute that can contain a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [CourseVariables](https://api.agilixbuzz.com/docs/entry/Enum/CourseVariables.md): Course Variables Course variables can be used to customize course content to the user's context. - [DropboxElement](https://api.agilixbuzz.com/docs/entry/Enum/DropboxElement.md): Commands such as PutItems include an dropbox2 node that can contain a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [DropboxNotesType](https://api.agilixbuzz.com/docs/entry/Enum/DropboxNotesType.md): Commands such as PutItems include a dropbox2 node that can contain one of these values: - [DropboxType](https://api.agilixbuzz.com/docs/entry/Enum/DropboxType.md): This enumeration has been deprecated. Use dropbox2 in Item Data instead. Commands such as PutItems include a dropboxtype attribute that can contain one of these values: - [EnrollmentMetricsChangeReason](https://api.agilixbuzz.com/docs/entry/Enum/EnrollmentMetricsChangeReason.md): Commands such as GetEnrollment3 include Enrollment Metrics elements that may contain a change reason: - [EnrollmentStatus](https://api.agilixbuzz.com/docs/entry/Enum/EnrollmentStatus.md): Commands such as GetEnrollment2 and CreateEnrollments include a status attribute that can contain one of these values. - [EntityFlags](https://api.agilixbuzz.com/docs/entry/Enum/EntityFlags.md): Some entities and entity signals (see Signal Types) contain attributes whose value is a number that is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). Not all of these values apply to all entities. - [ExamFlags](https://api.agilixbuzz.com/docs/entry/Enum/ExamFlags.md): Commands such as PutItems include an examflags attribute that can contain a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [GradeFlags](https://api.agilixbuzz.com/docs/entry/Enum/GradeFlags.md): Commands such as PutItems include a gradeflags attribute that can contain a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [GradeLevels](https://api.agilixbuzz.com/docs/entry/Enum/GradeLevels.md): Enumerates flags used to specify one or more grade levels in learning objectives whose value is a number that is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML) - [GradeRule](https://api.agilixbuzz.com/docs/entry/Enum/GradeRule.md): Commands such as PutItems include a graderule attribute that can contain these values: - [GradeStatus](https://api.agilixbuzz.com/docs/entry/Enum/GradeStatus.md): Grade commands such as PutTeacherResponse or GetEntityGradebook3 include a grade status attribute that can contain a bitwise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [GradeView](https://api.agilixbuzz.com/docs/entry/Enum/GradeView.md): Commands such as PutItems include a flags attribute that can contain a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). If this enumeration is used for grade entry, only the values Points, Percent, and Grade are valid. - [HomeworkGroupFlags](https://api.agilixbuzz.com/docs/entry/Enum/HomeworkGroupFlags.md): Commands such as PutItems include a flags attribute that can contain a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [IndexRule](https://api.agilixbuzz.com/docs/entry/Enum/IndexRule.md): Course commands such as CreateCourses include an indexrule parameter that controls whether the course content is indexed and, therefore, searchable with the Search2 command. These are the possible values for an IndexRule: - [InstructionType](https://api.agilixbuzz.com/docs/entry/Enum/InstructionType.md): Content commands such as GetRecordList include an instruction type attribute that can contain a bitwise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [InteractionFlags](https://api.agilixbuzz.com/docs/entry/Enum/InteractionFlags.md): Commands such as PutQuestions and GetQuestionList include an element named interaction that has an attribute named flags whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [ItemFlags](https://api.agilixbuzz.com/docs/entry/Enum/ItemFlags.md): Commands such as PutItems include a flags attribute that can contain a bitwise-OR of one or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [ItemType](https://api.agilixbuzz.com/docs/entry/Enum/ItemType.md): Represents the type of a manifest item or activity. Commands such as PutItems include a type attribute that can contain one of these names: - [LTIServices](https://api.agilixbuzz.com/docs/entry/Enum/LTIServices.md): Tool element in the DomainData include an enabledltiservices attribute that can contain a bit-wise OR of zero or more of these vallues to determine what LTI Advantage specifications are enabled for the registered LTI tool (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [LTIUserFieldstoBeSent](https://api.agilixbuzz.com/docs/entry/Enum/LTIUserFieldsToBeSent.md): Tool element in the DomainData include an userfieldstobesent attribute that can contain a bit-wise OR of zero or more of these vallues to determine what user fields to be sent as part of a LTI launch request (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [MapFlags](https://api.agilixbuzz.com/docs/entry/Enum/MapFlags.md): The objectivemaps and map elements in Course Data include a flags attribute whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML): - [MediaType](https://api.agilixbuzz.com/docs/entry/Enum/MediaType.md): Content commands such as GetRecordList include a media type attribute that can contain one of these values. - [Min and Max Date](https://api.agilixbuzz.com/docs/entry/Enum/MinMaxDate.md): Commands such as PutAnnouncement and CreateCourses accept start- and end-date values. When specifying the minimum date (to indicate no start date), specify 1753-01-01T00:00:00Z. When specifying the maximum date (to indicate no end date), specify 9999-12-31T00:00:00Z. - [ObjectiveSetFlags](https://api.agilixbuzz.com/docs/entry/Enum/ObjectiveSetFlags.md): Commands such as CreateObjectiveSets include an attribute named flags whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [PeerReviewEntry](https://api.agilixbuzz.com/docs/entry/Enum/PeerReviewEntry.md): Commands such as PutItems include a peerreviewentry attribute that can contain one of these values: - [Persona](https://api.agilixbuzz.com/docs/entry/Enum/Persona.md): Represents a job or role a user plays in the system based on their security privileges. - [PasswordPolicyEnforcement](https://api.agilixbuzz.com/docs/entry/Enum/PasswordPolicyEnforcement.md): A value to indicate how to handle both logins and password update requests where the given password no longer meets the password policy requirements. Note that the string values are generally used for this enum. Numeric values will work, but the strings are preferred. - [ResourceFlags](https://api.agilixbuzz.com/docs/entry/Enum/ResourceFlags.md): Commands such as GetResourceList include an attribute named flags whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [ResponseFlags](https://api.agilixbuzz.com/docs/entry/Enum/ResponseFlags.md): Commands such as PutTeacherResponse include an attribute named flags whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). - [RightsFlags](https://api.agilixbuzz.com/docs/entry/Enum/RightsFlags.md): Commands such as CreateEnrollments, GetRights, and UpdateRights include an attribute named flags whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). The value of -1 equates to all rights and is typically granted to domain administrators. If any new rights flags are created in the future, users who have domain rights value of -1 automatically receive the newly created rights. - [SubmissionGradeAction](https://api.agilixbuzz.com/docs/entry/Enum/SubmissionGradeAction.md): Commands such as PutItems include a submissiongradeaction attribute that can contain these values: - [SubscriptionFlags](https://api.agilixbuzz.com/docs/entry/Enum/SubscriptionFlags.md): Commands such as UpdateSubscriptions include an attribute whose value is a bit-wise OR of zero or more of these values (although we document them in hex format for readability, you specify them in decimal format when you actually use them in XML). ## Schemas - [Announcement](https://api.agilixbuzz.com/docs/entry/Schema/Announcement.md): Commands such as PutAnnouncement and GetAnnouncement operate on Announcements, which are zip-compressed files named guid.zip, where guid is a 32-character GUID. For example, 96446b6cb26c4fc39fff6dd80be7d956.zip is a valid name. The .zip file contains an XML file named meta.xml that follows the format below. It also contains any images referenced by the announcement body. - [Attempt Question](https://api.agilixbuzz.com/docs/entry/Schema/AttemptQuestion.md): The Question Attempt format defines the format for a student's attempt to answer an exam question. This format appears within the Submission format when the submission is for question attempts. - [Course](https://api.agilixbuzz.com/docs/entry/Schema/Course.md): Calls such as ListCourses and GetCourse2 include XML elements that conform to this format. - [Course Data](https://api.agilixbuzz.com/docs/entry/Schema/CourseData.md): This section describes the format of a course's data element,which API clients define in their calls to CreateCourses and UpdateCourses.(See Free-form Data for more details.) - [Course Enrollment Metrics](https://api.agilixbuzz.com/docs/entry/Schema/CourseEnrollmentMetrics.md): Calls such as ListCourses and GetCourse2 include XML elements that conform to this format. - [Domain](https://api.agilixbuzz.com/docs/entry/Schema/Domain.md): Calls such as ListDomains and GetDomain2 include XML elements that conform to this format. - [Domain Data](https://api.agilixbuzz.com/docs/entry/Schema/DomainData.md): This section describes the elements of a domain's data element. You can edit this data when calling CreateDomains or UpdateDomains. - [Enrollment](https://api.agilixbuzz.com/docs/entry/Schema/Enrollment.md): Calls such as ListEnrollments and GetEnrollment3 include XML elements that conform to this format. - [Enrollment Metrics](https://api.agilixbuzz.com/docs/entry/Schema/EnrollmentMetrics.md): Calls such as ListEnrollments and GetEnrollment3 include XML elements that conform to this format. - [Enrollment-Entity](https://api.agilixbuzz.com/docs/entry/Schema/EnrollmentEntity.md): Calls such as GetUserEnrollmentList2 and GetUserGradebook2 include elements that conform to this format, which is an enrollment node with a child entity node. - [Enrollment-User](https://api.agilixbuzz.com/docs/entry/Schema/EnrollmentUser.md): Calls such as GetEntityEnrollmentList2 and GetEntityGradebook3 include elements that conform to this format, which is an enrollment node with a child user node. - [Enrollment-User-Entity](https://api.agilixbuzz.com/docs/entry/Schema/EnrollmentUserEntity.md): Calls such as GetEnrollment2 and GetEnrollmentGradebook2 include elements that conform to this format, which is an enrollment node with a child user node and a child entity node. - [Grade](https://api.agilixbuzz.com/docs/entry/Schema/Grade.md): Calls such as GetGrade include XML elements that conform to this format. - [Grades](https://api.agilixbuzz.com/docs/entry/Schema/Grades.md): Calls such as GetEnrollmentGradebook2 and CalculateEnrollmentScenario include elements that conform to this format. - [Group](https://api.agilixbuzz.com/docs/entry/Schema/Group.md): Commands such as GetGroup and GetGroupList include XML elements that conform to this format. - [Item Data](https://api.agilixbuzz.com/docs/entry/Schema/ItemData.md): This section describes the elements of the item data field defined and used by the API. For example, this data field is often used when calling PutItems. (See Free-form Data for more details.) - [License Contact](https://api.agilixbuzz.com/docs/entry/Schema/LicenseContact.md): Information for a contact on a license such as a SystemLicense. - [License Limit](https://api.agilixbuzz.com/docs/entry/Schema/LicenseLimit.md): Used on licenses such as a SystemLicense to specify the limit of resources an organization can consume. - [Likert Question](https://api.agilixbuzz.com/docs/entry/Schema/LikertQuestion.md): Likert questions are XML files named guid.xml, where guid is a 32-character GUID. For example, B2946662-8AB5-45F3-9A8F-0B0E602CC28A.xml is a valid name. These files follow the format shown below. - [Likert Scale](https://api.agilixbuzz.com/docs/entry/Schema/LikertScale.md): Likert scales are XML files named guid.xml, where guid is a 32-character GUID. For example, B2946662-8AB5-45F3-9A8F-0B0E602CC28A.xml is a valid name. These files follow the format shown below. - [Mail](https://api.agilixbuzz.com/docs/entry/Schema/Mail.md): The SendMail command accepts XML content that conforms to the format shown below. All recipients must be enrolled in the same entity that the sender is, as specified by the enrollmentid parameter in the SendMail command. - [Message](https://api.agilixbuzz.com/docs/entry/Schema/Message.md): Commands such as PutBlog and GetBlog operate on Messages, which are zip-compressed files named guid.zip, where guid is a 32-character GUID. For example, 96446b6cb26c4fc39fff6dd80be7d956.zip is a valid name. The .zip file contains an XML file named meta.xml that follows the format below. The .zip file also contains any attachment files or images referenced by the message. - [ObjectiveSet](https://api.agilixbuzz.com/docs/entry/Schema/ObjectiveSet.md): Calls such as ListObjectiveSets and GetObjectiveSet2 include XML elements that conform to this format. - [PasswordPolicy](https://api.agilixbuzz.com/docs/entry/Schema/PasswordPolicy.md): the GetPasswordPolicy command gets a password policy for a given domain. The password policy controls what kinds of passwords are allowed to be used by users logging into the domain, including various complexity measures, existence in breaches, expiration, stale accounts, multi-factor, etc. The password policy is defined in the /data/customization/passwordpolicy section of the domain's data property. Some parts of this specification are preliminary and the corresponding restrictions are not yet enforced. For privileged users, further system-wide restrictions may be applied based on the user's persona. - [Question](https://api.agilixbuzz.com/docs/entry/Schema/Question.md): Exam questions (such as those used in PutQuestions and GetQuestion) contain XML that conforms to the format shown below. When searching for questions using Free-Form Data Query in GetQuestionList, treat the attributes in the question element as if they were elements. For example, to query for partial use '/partial'. - [Response](https://api.agilixbuzz.com/docs/entry/Schema/Response.md): Teachers respond to student assignment and exam Submissions with Response XML that conforms to the format shown below. (See PutTeacherResponse and GetTeacherResponse for more details.) Response by peers as peer review follows the same format. The response format is recursive; that is, a response can contain other responses, which can contain other responses, etc. - [Role](https://api.agilixbuzz.com/docs/entry/Schema/Role.md): Calls such as ListRoles and GetRole include XML elements that conform to this format. - [Rubric](https://api.agilixbuzz.com/docs/entry/Schema/Rubric.md): Rubrics are XML files that you typically store as course resources. Items that use the rubric for grading or peer-review grading refer to the resource in their Item Data. Rubric resources follow the format shown below. Note: Rubrics created in versions prior to December 2011 follow a different, obsolete format. - [Session](https://api.agilixbuzz.com/docs/entry/Schema/Session.md): Calls such as GetUser2 and ListUsers can include XML elements that conform to this format. - [Submission](https://api.agilixbuzz.com/docs/entry/Schema/Submission.md): Students submissions (such as those used in PutStudentSubmission and GetStudentSubmission) for assignments and exams contain XML that conforms to the format shown below. The submission format is recursive; that is, a submission can contain other submissions, which can contain other submissions, etc. - [System License](https://api.agilixbuzz.com/docs/entry/Schema/SystemLicense.md): Calls such as PutSystemLicense and GetSystemLicense include XML elements that conform to this format. - [System License Counters](https://api.agilixbuzz.com/docs/entry/Schema/SystemLicenseCounters.md): Calls such as GetSystemLicenseCounters include XML elements that conform to this format. - [User](https://api.agilixbuzz.com/docs/entry/Schema/User.md): Calls such as ListUsers and GetUser2 include XML elements that conform to this format. - [User Data](https://api.agilixbuzz.com/docs/entry/Schema/UserData.md): This section describes the elements of the user data field defined and used by the API. For example, clients include this data field when calling UpdateUsers. (See Free-form Data for more details.) When managing resources (PutResource or GetResource) referred to by User Data, use the User's ID for entityid. - [WorkInProgressFileInfo](https://api.agilixbuzz.com/docs/entry/Schema/WorkInProgressFileInfo.md): The WorkInProgressFileInfo format represents the metadata returned by GetWorkInProgress when using a *packagetype* of *filehistory* or *fileinfo*. - [Other](https://api.agilixbuzz.com/docs/entry/Schema/Other.md): Other Schemas API clients upload files by using commands such as PutResource. - [Copyright](https://api.agilixbuzz.com/docs/entry/Concept/Copyright.md): © 2007-2014 Agilix Labs, Inc. - [Open Source Licenses](https://api.agilixbuzz.com/docs/entry/Concept/OpenSourceLicenses.md): Open Source Licenses The DLAP API includes third party software subject to the following copyrights: * * * AngleSharp ``` The MIT License (MIT) Copyright (c) 2013 - 2015 AngleSharp Permission is hereb ## Full Reference - [Complete Command Reference](https://api.agilixbuzz.com/docs/all.md): All commands in a single Markdown document