SOAP-to-REST Migration: Mapping

Document created by scott.hurrey on Oct 25, 2018
Version 1Show Document
  • View in full screen mode

The purpose of this document is to provide a mapping from SOAP Web Service calls to REST API Endpoints. This is meant to be a quick-start guide to the migration process. With SOAP being deprecated in the near term future and removed from Blackboard Learn following the public API Deprecation Policy, it is our intention to provide you the information you need in order to migrate as painlessly as possible. This is a living document and will up updated as the last few remaining gaps in functionality are closed.

 

New REST APIs are rolled out in new versions of Blackboard Learn, but never back-ported to previous releases. To be sure the endpoint you require is available, be sure to visit the Developer Portal and check the individual endpoints you need.

 

 

Announcements

 

Use CaseSOAP WS CallREST Endpoint
Create Course AnnouncementAnnouncementWS.createCourseAnnouncements()Coming Soon
Read Course AnnouncementAnnouncementWS.getCourseAnnouncements()Coming Soon
Read All Course AnnouncementsAnnouncementWS.getCourseAnnouncements()Coming Soon
Update Course AnnouncementAnnouncementWS.updateCourseAnnouncements()Coming Soon
Delete Course AnnouncementAnnouncementWS.deleteCourseAnnouncements()Coming Soon
Create Organization AnnouncementAnnouncementWS.createOrgAnnouncements()Coming Soon
Read Organization AnnouncementAnnouncementWS.getOrgAnnouncements()Coming Soon
Read All Organization AnnouncementsAnnouncementWS.getOrgAnnouncements()Coming Soon
Update Organization AnnouncementAnnouncementWS.updateOrgAnnouncements()Coming Soon
Delete Organization AnnouncementAnnouncementWS.deleteOrgAnnouncements()Coming Soon
Create System AnnouncementAnnouncementWS.createSystemAnnouncements()POST /learn/api/public/v1/announcements
Read System AnnouncementAnnouncementWS.getSystemAnnouncements()GET /learn/api/public/v1/announcements/{announcementId}
Read All System AnnouncementsAnnouncementWS.getSystemAnnouncements()GET /learn/api/public/v1/announcements
Update System AnnouncementAnnouncementWS.updateSystemAnnouncements()PATCH /learn/api/public/v1/announcements/{announcementId}
Delete System AnnouncementAnnouncementWS.deleteSystemAnnouncements()DELETE /learn/api/public/v1/announcements/{announcementId}

 

Calendar

 

Use Case
SOAP WS CallREST Endpoint
Create a Course Calendar Item

CalendarWS.createCourseCalendarItem()

CalendarWS.saveCourseCalendarItem()

POST /learn/api/public/v1/calendars/items
Read a Course Calendar ItemCalendarWS.getCalendarItem()GET /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Read all Course Calendar ItemsCalendarWS.getCalendarItem()

GET /learn/api/public/v1/calendars

GET /learn/api/public/v1/calendars/items

Update a Course Calendar Item

CalendarWS.updateCourseCalendarItem()

CalendarWS.saveCourseCalendarItem()

PATCH /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Delete a Course Calendar ItemCalendarWS.deleteCourseCalendarItem()DELETE /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Create an Institutional Calendar Item

CalendarWS.createInstitutionalCalendarItem()

CalendarWS.saveInstitutionalCalendarItem()

POST /learn/api/public/v1/calendars/items
Read an Institutional Calendar ItemCalendarWS.getCalendarItem()GET /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Read all Institutional Calendar ItemsCalendarWS.getCalendarItem()

GET /learn/api/public/v1/calendars

GET /learn/api/public/v1/calendars/items

Update an Institutional Calendar Item

CalendarWS.updateInstitutionalCalendarItem()

CalendarWS.saveInstitutionalCalendarItem()

PATCH /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Delete an Institutional Calendar ItemCalendarWS.deleteInstitutionalCalendarItem()DELETE /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Create a Personal Calendar Item

CalendarWS.createPersonalCalendarItem()

CalendarWS.savePersonalCalendarItem()

POST /learn/api/public/v1/calendars/items
Read a Personal Calendar ItemCalendarWS.getCalendarItem()GET /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Read all Personal Calendar ItemsCalendarWS.getCalendarItem()

GET /learn/api/public/v1/calendars

GET /learn/api/public/v1/calendars/items

Update a Personal Calendar Item

CalendarWS.updatePersonalCalendarItem()

CalendarWS.savePersonalCalendarItem()

PATCH /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}
Delete a Personal Calendar ItemCalendarWS.deletePersonalCalendarItem()DELETE /learn/api/public/v1/calendars/items/{calendar type}/{calendar item id}

 

Content

 

Use CaseSOAP WS CallREST Endpoint
Create Course TOCContentWS.saveCourseTOC()POST /learn/api/public/v1/courses/{courseId}/contents
Read Course TOCContentWS.getTOCsByCourseId()GET /learn/api/public/v1/courses/{courseId}/contents/{content ID}
Read All Course TOCContentWS.getTOCsByCourseId()GET /learn/api/public/v1/courses/{courseId}/contents
Update Course TOCContentWS.saveCourseTOC()PATCH /learn/api/public/v1/courses/{courseId}/contents
Delete Course TOCContentWS.deleteCourseTOCs()DELETE /learn/api/public/v1/courses/{courseId}/contents
Create Content ItemContentWS.saveContent()POST /learn/api/public/v1/courses/{courseId}/contents/{content ID)/children
Read Content ItemContentWS.getFilteredContent()GET /learn/api/public/v1/courses/{courseId}/contents/{content ID}
Read All Content ItemsContentWS.getFilteredContent()GET /learn/api/public/v1/courses/{courseId}/contents/{content ID)/children
Update Content ItemContentWS.saveContent()PATCH /learn/api/public/v1/courses/{courseId}/contents
Delete Content ItemContentWS.deleteContents()DELETE /learn/api/public/v1/courses/{courseId}/contents
Attach FileContentWS.addContentFile()POST /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment
Remove FileContentWS.deleteContentFiles()DELETE /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment/{attachment ID}
Update FileContentWS.updateContentFileLinkName()DELETE /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment/{attachment ID}
POST /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment
Read Content FileContentWS.getContentFiles()GET /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment/{attachment ID}
Read All Content FilesContentWS.getContentFiles()GET /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment
Download Content FileContentWS.getContentFiles()GET /learn/api/public/v1/courses/{courseId}/contents/{content ID}/attachment/{attachment ID}/downloads
Create LinkContentWS.saveLink()POST /learn/api/public/v1/courses/{courseId}/contents/{content ID}/children
Read Link

ContentWS.getLinksByReferredToType()

ContentWS.getLinksByReferrerType()

GET /learn/api/public/v1/courses/{courseId}/contents/{content ID}
Read All Links

ContentWS.getLinksByReferredToType()

ContentWS.getLinksByReferrerType()

GET /learn/api/public/v1/courses/{courseId}/contents
Update LinkContentWS.saveLink()PATCH /learn/api/public/v1/courses/{courseId}/contents/{content ID}
Delete LinkContentWS.deleteLink()DELETE /learn/api/public/v1/courses/{courseId}/contents/{content ID}
Get Reviewed StatusContentWS.getReviewStatusByCourseId()2019 Roadmap
Set Reviewed StatusContentWS.setContentReviewed()2019 Roadmap


Context

 

Use CaseSOAP WS CallREST Endpoint
Register ToolContextWS.registerTool()N/A
Emulate a UserContextWS.emulateUser()

GET /learn/api/public/v1/oauth2/authorizationcode

POST /learn/api/public/v1/oauth2/token

Extend Session LifeContextWS.extendSessionLife()POST /learn/api/public/v1/oauth2/token
Get Memberships By UserIDContextWS.getMemberships()GET /learn/api/public/v1/users/{user id}/courses
Get Current User's MembershipsContextWS.getMyMemberships()GET /learn/api/public/v1/users/me/courses
Get System Installation IDContextWS.getSystemInstallationId()Use LTI
Login as UserContextWS.login()

GET /learn/api/public/v1/oauth2/authorizationcode

POST /learn/api/public/v1/oauth2/token

Login with Access TicketContextWS.loginTicket()N/A
Login as ToolContextWS.loginTool()

POST /learn/api/public/v1/oauth2/token

LogoutContextWS.logout()N/A

 

Courses

 

Use CaseSOAP WS CallREST Endpoint
Create Course

CourseWS.createCourse()

CourseWS.saveCourse()

POST /learn/api/public/v2/courses
Read CourseCourseWS.getCourse()GET /learn/api/public/v2/courses/{courseId}
Read All CoursesCourseWS.getCourse()GET /learn/api/public/v2/courses
Update CourseCourseWS.saveCourse()PATCH /learn/api/public/v2/courses/{courseId}
Update Course BatchUIDCourseWS.changeCourseBatchUid()PATCH /learn/api/public/v2/courses/{courseId}
Update Course CategoryCourseWS.changeCourseCategoryBatchUid()Coming Soon
Update Course DatasourceCourseWS.changeCourseDataSourceId()PATCH /learn/api/public/v2/courses/{courseId}
Delete CourseCourseWS.deleteCourse()DELETE /learn/api/public/v2/courses/{courseId}
Create OrganizationCourseWS.createOrg()POST /learn/api/public/v2/courses
Read OrganizationCourseWS.getOrg()GET /learn/api/public/v2/courses/{courseId}
Read All OrganizationsCourseWS.getOrg()GET /learn/api/public/v2/courses
Update OrganizationCourseWS.saveCourse()PATCH /learn/api/public/v2/courses/{courseId}
Update Organization BatchUIDCourseWS.changeOrgBatchUid()PATCH /learn/api/public/v2/courses/{courseId}
Update Organization CategoryCourseWS.changeOrgCategoryBatchUid()Coming Soon
Update Organization DatasourceCourseWS.changeOrgDataSourceId()PATCH /learn/api/public/v2/courses/{courseId}
Delete OrganizationCourseWS.deleteOrg()DELETE /learn/api/public/v2/courses/{courseId}
Create GroupCourseWS.saveGroup()POST /learn/api/public/v1/courses/{courseId}/groups
Read GroupCourseWS.getGroup()GET /learn/api/public/v1/courses/{courseId}/groups/{group Id}
Read All GroupsCourseWS.getGroup()GET /learn/api/public/v1/courses/{courseId}/groups
Update GroupCourseWS.saveGroup()PATCH /learn/api/public/v1/courses/{courseId}/groups/{group Id}
Delete GroupCourseWS.deleteGroup()DELETE /learn/api/public/v1/courses/{courseId}/groups/{group Id}
Create TermCourseWS.saveTerm()POST /learn/api/public/v1/terms
Read Term

CourseWS.loadTerm()

CourseWS.loadTermByCourseId()

GET /learn/api/public/v1/terms/{term id}
Read All Terms

CourseWS.loadTerms()

CourseWS.loadTermsByName()

GET /learn/api/public/v1/terms
Update TermCourseWS.saveTerm()PATCH /learn/api/public/v1/terms/{term id}
Delete TermCourseWS.deleteTerm()DELETE /learn/api/public/v1/terms/{term id}
Add Course to TermCourseWS.addCourseToTerm()PATCH /learn/api/public/v2/courses/{courseId}
Get Courses in TermCourseWS.loadCoursesInTerm()GET /learn/api/public/v2/courses?termId={term id}
Remove Course From TermCourseWS.removeCourseFromTerm()PATCH /learn/api/public/v2/courses/{courseId}
Create Course CategoryCourseWS.saveCourseCategory()Coming Soon
Read Course CategoryCourseWS.getCategories()Coming Soon
Read All Course CategoriesCourseWS.getCategories()Coming Soon
Update Course CategoryCourseWS.saveCourseCategory()Coming Soon
Delete Course CategoryCourseWS.deleteCourseCategory()Coming Soon
Create Course Category MembershipCourseWS.saveCourseCategoryMembership()Coming Soon
Read Course Category MembershipCourseWS.getCourseCategoryMembership()Coming Soon
Read All Course Category MembershipsCourseWS.getCourseCategoryMembership()Coming Soon
Update Course Category MembershipCourseWS.saveCourseCategoryMembership()Coming Soon
Delete Course Category MembershipCourseWS.deleteCourseCategoryMembership()Coming Soon
Create Organization CategoryCourseWS.saveOrgCategory()Coming Soon
Read Organization CategoryCourseWS.getCategories()Coming Soon
Read All Organization CategoriesCourseWS.getCategories()Coming Soon
Update Organization CategoryCourseWS.saveOrgCategory()Coming Soon
Delete Organization CategoryCourseWS.deleteOrgCategory()Coming Soon
Create Organization Category MembershipCourseWS.saveOrgCategoryMembership()Coming Soon
Read Organization Category MembershipCourseWS.getOrgCategoryMembership()Coming Soon
Read All Organization Category MembershipsCourseWS..getOrgCategoryMembership()Coming Soon
Update Organization Category MembershipCourseWS.saveOrgCategoryMembership()Coming Soon
Delete Organization Category MembershipCourseWS.deleteOrgCategoryMembership()Coming Soon
Create CartridgeCourseWS.saveCartridge()N/A
Read CartridgeCourseWS.getCartridge()N/A
Update CartridgeCourseWS.saveCartridge()N/A
Delete CartridgeCourseWS.deleteCartridge()N/A
Create StaffInfoCourseWS.saveStaffInfo()

POST /learn/api/public/v1/users

PUT /learn/api/public/v1/courses/{course id}/users/{user id}

Read StaffInfoCourseWS.getStaffInfo()GET /learn/api/public/v1/users/{user id}
Update StaffInfoCourseWS.saveStaffInfo()PATCH /learn/api/public/v1/users/{user id}
Delete StaffInfoCourseWS.deleteStaffInfo()DELETE /learn/api/public/v1/users/{user id}
Set Course BannerCourseWS.setCourseBannerImage()N/A
Get Group ToolsCourseWS.getAvailableGroupTools()2019 Roadmap
Read ClassificationCourseWS.getClassifications()N/A

 

Course Memberships

 

Use CaseSOAP WS CallREST Endpoint
Create Course MembershipCourseMembershipWS.saveCourseMembership()PUT /learn/api/public/v1/courses/{courseId}/users/{user id}
Read Course MembershipCourseMembershipWS.getCourseMembership()GET /learn/api/public/v1/courses/{courseId}/users/{user id}
Read All Course MembershipsCourseMembershipWS.getCourseMembership()GET /learn/api/public/v1/courses/{courseId}/users
Update Course MembershipsCourseMembershipWS.saveCourseMembership()PATCH /learn/api/public/v1/courses/{courseId}/users/{userId}
Delete Course MembershipsCourseMembershipWS.deleteCourseMembership()DELETE /learn/api/public/v1/courses/{courseId}/users/{userId}
Create Organization MembershipCourseMembershipWS.saveCourseMembership()PUT /learn/api/public/v1/courses/{courseId}/users/{user id}
Read Organization MembershipCourseMembershipWS.getCourseMembership()GET /learn/api/public/v1/courses/{courseId}/users/{user id}
Read All Organization MembershipsCourseMembershipWS.getCourseMembership()GET /learn/api/public/v1/courses/{courseId}/users
Update Organization MembershipsCourseMembershipWS.saveCourseMembership()PATCH /learn/api/public/v1/courses/{courseId}/users/{userId}
Delete Organization MembershipsCourseMembershipWS.deleteCourseMembership()DELETE /learn/api/public/v1/courses/{courseId}/users/{userId}
Create Group MembershipCourseMembershipWS.saveGroupMembership()PUT /learn/api/public/v1/courses/{courseId}/groups/{groupId}/users/{userId}
Read Group MembershipCourseMembershipWS.getGroupMembership()GET /learn/api/public/v1/courses/{courseId}/groups/{groupId}/users/{userId}
Read All Group MembershipsCourseMembershipWS.getGroupMembership()GET /learn/api/public/v1/courses/{courseId}/groups/{groupId}/users
Delete Group MembershipsCourseMembershipWS.deleteGroupMembership()DELETE /learn/api/public/v1/courses/{courseId}/groups/{groupId}/users/{userId}
Get Course RolesCourseMembershipWS.getCourseRoles()GET /learn/api/public/v1/courseRoles

 

Gradebook

 

Use CaseSOAP WS CallREST Endpoint
Create an AttemptGradebookWS.saveAttempts()POST /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts
Read an AttemptGradebookWS.getAttempts()GET /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts/{attempt id}
Read All AttemptsGradebookWS.getAttempts()GET /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts
Update an AttemptGradebookWS.saveAttempts()PATCH /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts/{attempt id}
Delete an AttemptGradebookWS.deleteAttempts()PATCH /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts/{attempt id} (set to 0)
Create a ColumnGradebookWS.saveColumns()POST /learn/api/public/v2/course/{courseId}/gradebook/columns
Read a ColumnGradebookWS.getGradebookColumns()GET /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}
Read All ColumnsGradebookWS.getGradebookColumns()GET /learn/api/public/v2/course/{courseId}/gradebook/columns
Update a ColumnGradebookWS.saveColumns()PATCH /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}
Delete a ColumnGradebookWS.deleteColumns()DELETE /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}
Create a Gradebook TypeGradebookWS.saveGradebookTypes()POST /learn/api/public/v2/course/{courseId}/gradebook/columns
Read a Gradebook TypeGradebookWS.getGradebookTypes()GET /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}
Read All Gradebook TypesGradebookWS.getGradebookTypes()GET /learn/api/public/v2/course/{courseId}/gradebook/columns
Update a Gradebook TypeGradebookWS.saveGradebookTypes()PATCH /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}
Delete a Gradebook TypeGradebookWS.deleteGradebookTypes()DELETE /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}
Create a GradeGradebookWS.saveGrades()POST /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts
Read a GradeGradebookWS.getGrades()GET /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts/{attempt id}
Read All GradesGradebookWS.getGrades()GET /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts
Update a GradeGradebookWS.saveGrades()PATCH /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts/{attempt id}
Delete a GradeGradebookWS.deleteGrades()PATCH /learn/api/public/v2/course/{courseId}/gradebook/columns/{column id}/attempts/{attempt id} (set to 0)
Create a Grading SchemaGradebookWS.saveGradingSchemas()POST /learn/api/public/v1/courses/{course id]/gradebook/schemas
Read a Grading SchemaGradebookWS.getGradingSchemas()GET /learn/api/public/v1/courses/{course id]/gradebook/schemas/{schema id}
Read All Grading SchemasGradebookWS.getGradingSchemas()GET /learn/api/public/v1/courses/{course id]/gradebook/schemas
Update a Grading SchemaGradebookWS.saveGradingSchemas()PATCH /learn/api/public/v1/courses/{course id]/gradebook/schemas/{schema id}
Delete a Grading Schema GradebookWS.deleteGradingSchemas()DELETE /learn/api/public/v1/courses/{course id]/gradebook/schemas/{schema id}

 

Users

 

Use CaseSOAP WS CallREST Endpoint
Create a UserUserWS.saveUser()POST /learn/api/public/v1/users
Read a UserUserWS.getUser()GET /learn/api/public/v1/users/{userId}
Read All UsersUserWS.getUser()GET /learn/api/public/v1/users
Update a UserUserWS.saveUser()PATCH /learn/api/public/v1/users/{userId}
Delete a UserUserWS.deleteUser()DELETE /learn/api/public/v1/users/{userId}
Update a User's BatchUidUserWS.changeUserBatchUid()PATCH /learn/api/public/v1/users/{userId}
Update a User's DataSource IDUserWS.changeUserDataSourceId()PATCH /learn/api/public/v1/users/{userId}
Delete User by RoleUserWS.deleteUserByInstitutionRole()N/A
Create a User's Address Book EntryUserWS.saveAddressbookEntry()POST /learn/api/public/v1/users
Read a User's Address Book EntryUserWS.getAddressbookEntry()GET /learn/api/public/v1/users/{userId}
Read All a User's Address Book EntriesUserWS.getAddressbookEntry()GET /learn/api/public/v1/users
Update a User's Address Book EntryUserWS.saveAddressBbookEntry()PATCH /learn/api/public/v1/users/{userId}
Delete a User's Address Book EntryUserWS.deleteAddressBookEntry()DELETE /learn/api/public/v1/users/{userId}
Read All Institution RolesUserWS.getInstitutionRoles()GET /learn/api/public/v1/institutionRoles
Read All System RolesUserWS.getSystemRoles()GET /learn/api/public/v1/systemRoles
Read All Institution Roles Assigned to a UserUserWS.getUserInstitutionRoles()GET /learn/api/public/v1/users/{userId}
Create Observer AssociationUserWS.saveObserverAssociation()Coming Soon
Read Observer AssociationUserWS.getObservee()Coming Soon
Read All Observer AssociationsUserWS.getObservee()Coming Soon
Update Observer AssociationUserWS.saveObserverAssociation()Coming Soon
Delete Observer AssociationUserWS.deleteOverserverAssociation()Coming Soon

 

Util

 

Use CaseSOAP WS CallREST Endpoint
Read All DatasourcesUtilWS.getDataSources()GET /learn/api/public/v1/dataSources
Get Required Entitlements By MethodUtilWS.getRequiredEntitlements()N/A
Check a User's EntitlementsUtilWS.checkEntitlement()N/A
Create a SettingUtilWS.saveSetting()N/A
Load a SettingUtilWS.loadSetting()N/A
Update a SettingUtilWS.saveSetting()N/A
Delete a SettingUtilWS.deleteSetting()N/A

Attachments

    Outcomes