@iblai/data-layer 1.9.4 → 1.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -39052,6 +39052,7 @@ exports.SERVICES = void 0;
39052
39052
  SERVICES["LMS"] = "LMS";
39053
39053
  SERVICES["DM"] = "DM";
39054
39054
  SERVICES["AXD"] = "AXD";
39055
+ SERVICES["STUDIO"] = "STUDIO";
39055
39056
  })(exports.SERVICES || (exports.SERVICES = {}));
39056
39057
 
39057
39058
  class Config {
@@ -39061,6 +39062,7 @@ Config.lmsUrl = 'https://learn.iblai.app';
39061
39062
  Config.dmUrl = 'https://base.manager.iblai.app';
39062
39063
  Config.axdUrl = 'https://base.manager.iblai.app';
39063
39064
  Config.mentorIframeUrl = 'https://mentor.iblai.tech';
39065
+ Config.studioUrl = 'https://studio.iblai.app';
39064
39066
  Config.httpErrorHandlers = {};
39065
39067
 
39066
39068
  class IblDataLayer {
@@ -39127,10 +39129,23 @@ const getServiceUrl = (service) => {
39127
39129
  return Config.lmsUrl;
39128
39130
  case exports.SERVICES.DM:
39129
39131
  return Config.dmUrl;
39132
+ case exports.SERVICES.STUDIO:
39133
+ return Config.studioUrl;
39130
39134
  default:
39131
39135
  return Config.dmUrl;
39132
39136
  }
39133
39137
  };
39138
+ /**
39139
+ * Read a cookie value by name. Returns null outside the browser or when the
39140
+ * cookie is absent. Used for Studio's CSRF token (`csrftoken`).
39141
+ */
39142
+ const getCookieValue = (name) => {
39143
+ if (typeof document === 'undefined') {
39144
+ return null;
39145
+ }
39146
+ const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${name}=([^;]*)`));
39147
+ return match ? decodeURIComponent(match[1]) : null;
39148
+ };
39134
39149
  /**
39135
39150
  * Get the headers required for API requests based on the provided service type.
39136
39151
  */
@@ -39154,7 +39169,8 @@ const getHeaders = async (service) => {
39154
39169
  return; // No Authorization header when no valid token
39155
39170
  }
39156
39171
  let prefix;
39157
- if (service === exports.SERVICES.LMS) {
39172
+ // Studio (Open edX CMS) accepts the same edX token as the LMS.
39173
+ if (service === exports.SERVICES.LMS || service === exports.SERVICES.STUDIO) {
39158
39174
  if (token.length > 30) {
39159
39175
  prefix = 'JWT';
39160
39176
  }
@@ -39257,7 +39273,7 @@ const isErrorObject = (data) => {
39257
39273
  const baseQuery = (service, jsonContentType = true, contentType, skipAuth = false) => query.fetchBaseQuery({
39258
39274
  baseUrl: getServiceUrl(service),
39259
39275
  timeout: 30000, // 30 second timeout
39260
- credentials: service === exports.SERVICES.LEGACY_LMS ? 'include' : 'omit',
39276
+ credentials: service === exports.SERVICES.LEGACY_LMS || service === exports.SERVICES.STUDIO ? 'include' : 'omit',
39261
39277
  prepareHeaders: async (headers) => {
39262
39278
  // Only add auth headers if skipAuth is false
39263
39279
  if (!skipAuth) {
@@ -39275,6 +39291,18 @@ const baseQuery = (service, jsonContentType = true, contentType, skipAuth = fals
39275
39291
  if (contentType) {
39276
39292
  headers.set('Content-Type', contentType);
39277
39293
  }
39294
+ // Studio (Open edX CMS) endpoints require the Django CSRF token and only
39295
+ // return JSON when asked for it explicitly.
39296
+ if (service === exports.SERVICES.STUDIO) {
39297
+ const csrfToken = getCookieValue('csrftoken');
39298
+ if (csrfToken) {
39299
+ headers.set('X-CSRFToken', csrfToken);
39300
+ }
39301
+ if (!headers.has('Accept')) {
39302
+ headers.set('Accept', 'application/json');
39303
+ }
39304
+ headers.set('X-Requested-With', 'XMLHttpRequest');
39305
+ }
39278
39306
  // Add CSRF protection headers for LMS service
39279
39307
  if (service === exports.SERVICES.LMS) {
39280
39308
  // Use mentorIframeUrl for both origin and referer
@@ -40782,6 +40810,83 @@ const coreApiSlice = react.createApi({
40782
40810
  return response.json();
40783
40811
  }),
40784
40812
  }),
40813
+ // ── RBAC resource discovery (incremental resource-path builder) ──
40814
+ // Custom calls: the pinned @iblai/iblai-api client does not expose the
40815
+ // discovery endpoint yet, and list_url is a dynamic relative URL returned
40816
+ // by the discovery response rather than a fixed generated route.
40817
+ getRbacResourceDiscovery: builder.query({
40818
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
40819
+ // URLSearchParams escapes the slashes in `path` for us.
40820
+ const queryParams = new URLSearchParams({ path: args.path });
40821
+ if (args.platformKey)
40822
+ queryParams.set('platform_key', args.platformKey);
40823
+ const url = `${OpenAPI.BASE}/api/core/rbac/resources/?${queryParams.toString()}`;
40824
+ const response = await fetch(url, {
40825
+ method: 'GET',
40826
+ headers: OpenAPI.HEADERS,
40827
+ credentials: 'omit',
40828
+ });
40829
+ if (!response.ok) {
40830
+ throw Object.assign(new Error('Failed to fetch RBAC resource discovery'), {
40831
+ status: response.status,
40832
+ body: await response.text(),
40833
+ });
40834
+ }
40835
+ return response.json();
40836
+ }),
40837
+ }),
40838
+ getRbacResourceList: builder.query({
40839
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
40840
+ var _a, _b, _c, _d, _e, _f;
40841
+ const url = new URL(`${OpenAPI.BASE}${args.listUrl}`);
40842
+ for (const [key, value] of Object.entries((_a = args.searchParams) !== null && _a !== void 0 ? _a : {})) {
40843
+ if (value !== '')
40844
+ url.searchParams.set(key, value);
40845
+ }
40846
+ const response = await fetch(url.toString(), {
40847
+ method: 'GET',
40848
+ headers: OpenAPI.HEADERS,
40849
+ credentials: 'omit',
40850
+ });
40851
+ if (!response.ok) {
40852
+ throw Object.assign(new Error('Failed to fetch RBAC resource list'), {
40853
+ status: response.status,
40854
+ body: await response.text(),
40855
+ });
40856
+ }
40857
+ const raw = await response.json();
40858
+ // The list endpoints vary per collection: bare arrays, DRF
40859
+ // envelopes ({results}), or nested ({results: {data}} / {data}).
40860
+ const rows = Array.isArray(raw)
40861
+ ? raw
40862
+ : Array.isArray(raw === null || raw === void 0 ? void 0 : raw.results)
40863
+ ? raw.results
40864
+ : Array.isArray((_b = raw === null || raw === void 0 ? void 0 : raw.results) === null || _b === void 0 ? void 0 : _b.data)
40865
+ ? raw.results.data
40866
+ : Array.isArray(raw === null || raw === void 0 ? void 0 : raw.data)
40867
+ ? raw.data
40868
+ : [];
40869
+ const pkField = (_d = (_c = args.resultFields) === null || _c === void 0 ? void 0 : _c.pk) !== null && _d !== void 0 ? _d : 'id';
40870
+ const nameField = (_f = (_e = args.resultFields) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : 'name';
40871
+ const items = rows
40872
+ .filter((row) => (row === null || row === void 0 ? void 0 : row[pkField]) !== undefined && (row === null || row === void 0 ? void 0 : row[pkField]) !== null)
40873
+ .map((row) => {
40874
+ // Some rows (e.g. platform users) have a blank name — fall back
40875
+ // to their email, then to the pk, so the picker never shows an
40876
+ // empty label.
40877
+ const rawName = row[nameField];
40878
+ const name = (typeof rawName === 'string' ? rawName.trim() : rawName) ||
40879
+ (typeof row.email === 'string' ? row.email : '') ||
40880
+ String(row[pkField]);
40881
+ return {
40882
+ pk: row[pkField],
40883
+ name: String(name),
40884
+ raw: row,
40885
+ };
40886
+ });
40887
+ return { items, raw };
40888
+ }),
40889
+ }),
40785
40890
  getRbacTeamsAccessList: builder.query({
40786
40891
  ...buildEndpointFromDmService(CoreService.coreRbacTeamsAccessList),
40787
40892
  providesTags: ['RbacTeamsAccess'],
@@ -40867,7 +40972,7 @@ const coreApiSlice = react.createApi({
40867
40972
  }),
40868
40973
  }),
40869
40974
  });
40870
- const { useCreateRedirectTokenMutation, useGetPlatformInfoQuery, useGetRbacPermissionsMutation, useLazyGetPlatformInfoQuery, useUpdatePlatformInfoMutation, useUpdateUserStatusMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, useGetRbacGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useGetRbacGroupDetailsQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetRbacRolesQuery, useLazyGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, usePartialUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetDepartmentMemberCheckQuery, useLazyGetDepartmentMemberCheckQuery, useGetRbacMentorAccessListQuery, useUpdateRbacMentorAccessMutation, useGetRbacActionsDefinitionQuery, useLazyGetRbacActionsDefinitionQuery, useGetRbacTeamsAccessListQuery, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation,
40975
+ const { useCreateRedirectTokenMutation, useGetPlatformInfoQuery, useGetRbacPermissionsMutation, useLazyGetPlatformInfoQuery, useUpdatePlatformInfoMutation, useUpdateUserStatusMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, useGetRbacGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useGetRbacGroupDetailsQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetRbacRolesQuery, useLazyGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, usePartialUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetDepartmentMemberCheckQuery, useLazyGetDepartmentMemberCheckQuery, useGetRbacMentorAccessListQuery, useUpdateRbacMentorAccessMutation, useGetRbacActionsDefinitionQuery, useLazyGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useLazyGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useLazyGetRbacResourceListQuery, useGetRbacTeamsAccessListQuery, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation,
40871
40976
  // LTI Keys
40872
40977
  useGetLtiKeysQuery, useGetLtiKeyDetailQuery, useLazyGetLtiKeyDetailQuery, useCreateLtiKeyMutation, useUpdateLtiKeyMutation, useDeleteLtiKeyMutation,
40873
40978
  // LTI Agent (Mentor) Links
@@ -42757,6 +42862,155 @@ const edxSsoApiSlice = react.createApi({
42757
42862
  });
42758
42863
  const { useGetEdxSSOTokenQuery, useLazyGetEdxSSOTokenQuery } = edxSsoApiSlice;
42759
42864
 
42865
+ const STUDIO_AUTHORING_ENDPOINTS = {
42866
+ CREATE_COURSE: {
42867
+ path: (contentType) => `/api/ibl/manage/${contentType}/`,
42868
+ service: exports.SERVICES.STUDIO,
42869
+ },
42870
+ DELETE_COURSE: {
42871
+ path: () => '/api/ibl/manage/course/delete',
42872
+ service: exports.SERVICES.STUDIO,
42873
+ },
42874
+ COURSE_SETTINGS: {
42875
+ path: (contentType) => `/api/ibl/v1/${contentType}_settings/`,
42876
+ service: exports.SERVICES.STUDIO,
42877
+ },
42878
+ CREATE_XBLOCK: {
42879
+ path: () => '/xblock/',
42880
+ service: exports.SERVICES.STUDIO,
42881
+ },
42882
+ UPDATE_XBLOCK: {
42883
+ path: (locator) => `/xblock/${locator}`,
42884
+ service: exports.SERVICES.STUDIO,
42885
+ },
42886
+ SCORM_SUBMIT: {
42887
+ path: (locator) => `/xblock/${locator}/handler/studio_submit`,
42888
+ service: exports.SERVICES.STUDIO,
42889
+ },
42890
+ UPLOAD_ASSET: {
42891
+ path: (courseKey) => `/assets/${courseKey}/`,
42892
+ service: exports.SERVICES.STUDIO,
42893
+ },
42894
+ ADVANCED_SETTINGS: {
42895
+ path: (courseKey) => `/settings/advanced/${courseKey}`,
42896
+ service: exports.SERVICES.STUDIO,
42897
+ },
42898
+ VIDEO_UPLOAD: {
42899
+ path: (courseKey) => `/api/v1/ibl/course/${courseKey}/s3-upload`,
42900
+ service: exports.SERVICES.STUDIO,
42901
+ },
42902
+ };
42903
+
42904
+ /**
42905
+ * Studio (Open edX CMS) course-authoring endpoints. These hit the Studio host
42906
+ * (`Config.studioUrl`) with cookie-session auth + CSRF token, mirroring how
42907
+ * Studio's own frontend talks to it.
42908
+ */
42909
+ const studioAuthoringApiSlice = react.createApi({
42910
+ reducerPath: 'studioAuthoringApiSlice',
42911
+ baseQuery: iblFetchBaseQuery,
42912
+ endpoints: (builder) => ({
42913
+ /** Create the course (or library) shell. Returns `course_key`. */
42914
+ createStudioCourse: builder.mutation({
42915
+ query: ({ courseData, contentType = 'course' }) => ({
42916
+ url: STUDIO_AUTHORING_ENDPOINTS.CREATE_COURSE.path(contentType),
42917
+ service: STUDIO_AUTHORING_ENDPOINTS.CREATE_COURSE.service,
42918
+ method: 'POST',
42919
+ body: courseData,
42920
+ }),
42921
+ }),
42922
+ /** Delete a course — used as rollback when a later creation step fails. */
42923
+ deleteStudioCourse: builder.mutation({
42924
+ query: ({ courseKey }) => ({
42925
+ url: STUDIO_AUTHORING_ENDPOINTS.DELETE_COURSE.path(),
42926
+ service: STUDIO_AUTHORING_ENDPOINTS.DELETE_COURSE.service,
42927
+ method: 'POST',
42928
+ body: { course_key: courseKey },
42929
+ }),
42930
+ }),
42931
+ /** Set the full course settings/metadata payload. */
42932
+ updateStudioCourseSettings: builder.mutation({
42933
+ query: ({ settings, contentType = 'course' }) => ({
42934
+ url: STUDIO_AUTHORING_ENDPOINTS.COURSE_SETTINGS.path(contentType),
42935
+ service: STUDIO_AUTHORING_ENDPOINTS.COURSE_SETTINGS.service,
42936
+ method: 'POST',
42937
+ body: settings,
42938
+ }),
42939
+ }),
42940
+ /**
42941
+ * Create an xblock node (chapter / sequential / vertical / video / scorm)
42942
+ * under `parent_locator`.
42943
+ */
42944
+ createStudioXblock: builder.mutation({
42945
+ query: (blockData) => ({
42946
+ url: STUDIO_AUTHORING_ENDPOINTS.CREATE_XBLOCK.path(),
42947
+ service: STUDIO_AUTHORING_ENDPOINTS.CREATE_XBLOCK.service,
42948
+ method: 'POST',
42949
+ body: blockData,
42950
+ }),
42951
+ }),
42952
+ /**
42953
+ * Update an existing xblock by locator — used for video metadata and for
42954
+ * publishing a unit (`{ publish: 'make_public' }`).
42955
+ */
42956
+ updateStudioXblock: builder.mutation({
42957
+ query: ({ locator, blockData }) => ({
42958
+ url: STUDIO_AUTHORING_ENDPOINTS.UPDATE_XBLOCK.path(encodeURIComponent(locator)),
42959
+ service: STUDIO_AUTHORING_ENDPOINTS.UPDATE_XBLOCK.service,
42960
+ method: 'POST',
42961
+ body: blockData,
42962
+ }),
42963
+ }),
42964
+ /** Upload the SCORM zip to the scorm xblock's `studio_submit` handler. */
42965
+ uploadStudioScormPackage: builder.mutation({
42966
+ query: ({ locator, formData }) => ({
42967
+ url: STUDIO_AUTHORING_ENDPOINTS.SCORM_SUBMIT.path(encodeURIComponent(locator)),
42968
+ service: STUDIO_AUTHORING_ENDPOINTS.SCORM_SUBMIT.service,
42969
+ method: 'POST',
42970
+ body: formData,
42971
+ isJson: false,
42972
+ }),
42973
+ }),
42974
+ /** Upload a course asset (e.g. the course card image). */
42975
+ uploadStudioCourseAsset: builder.mutation({
42976
+ query: ({ courseKey, formData }) => ({
42977
+ url: STUDIO_AUTHORING_ENDPOINTS.UPLOAD_ASSET.path(encodeURIComponent(courseKey)),
42978
+ service: STUDIO_AUTHORING_ENDPOINTS.UPLOAD_ASSET.service,
42979
+ method: 'POST',
42980
+ body: formData,
42981
+ isJson: true,
42982
+ // Asset upload is authenticated by the Studio session cookie + CSRF
42983
+ // token alone; no Authorization header.
42984
+ skipAuth: true,
42985
+ // Matches how Studio's own frontend requests the asset endpoint. Set
42986
+ // explicitly so the base query keeps it instead of defaulting to
42987
+ // `application/json`.
42988
+ headers: { Accept: 'application/json, text/plain, */*' },
42989
+ }),
42990
+ }),
42991
+ /** Set Studio advanced settings (e.g. enable the `scorm` module). */
42992
+ setStudioAdvancedSettings: builder.mutation({
42993
+ query: ({ courseKey, settings }) => ({
42994
+ url: STUDIO_AUTHORING_ENDPOINTS.ADVANCED_SETTINGS.path(encodeURIComponent(courseKey)),
42995
+ service: STUDIO_AUTHORING_ENDPOINTS.ADVANCED_SETTINGS.service,
42996
+ method: 'POST',
42997
+ body: settings,
42998
+ }),
42999
+ }),
43000
+ /** Upload a raw video file to course storage; returns `{ file_url }`. */
43001
+ uploadStudioCourseVideo: builder.mutation({
43002
+ query: ({ courseKey, formData }) => ({
43003
+ url: STUDIO_AUTHORING_ENDPOINTS.VIDEO_UPLOAD.path(encodeURIComponent(courseKey)),
43004
+ service: STUDIO_AUTHORING_ENDPOINTS.VIDEO_UPLOAD.service,
43005
+ method: 'POST',
43006
+ body: formData,
43007
+ isJson: false,
43008
+ }),
43009
+ }),
43010
+ }),
43011
+ });
43012
+ const { useCreateStudioCourseMutation, useDeleteStudioCourseMutation, useUpdateStudioCourseSettingsMutation, useCreateStudioXblockMutation, useUpdateStudioXblockMutation, useUploadStudioScormPackageMutation, useUploadStudioCourseAssetMutation, useSetStudioAdvancedSettingsMutation, useUploadStudioCourseVideoMutation, } = studioAuthoringApiSlice;
43013
+
42760
43014
  const searchApiSlice = react.createApi({
42761
43015
  reducerPath: 'searchApiSlice',
42762
43016
  baseQuery: iblFakeBaseQuery,
@@ -46170,6 +46424,7 @@ const mentorReducer = {
46170
46424
  [coursesApiSlice.reducerPath]: coursesApiSlice.reducer,
46171
46425
  [courseMetadataApiSlice.reducerPath]: courseMetadataApiSlice.reducer,
46172
46426
  [edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
46427
+ [studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
46173
46428
  [clawApiSlice.reducerPath]: clawApiSlice.reducer,
46174
46429
  [evaluationsApiSlice.reducerPath]: evaluationsApiSlice.reducer,
46175
46430
  [watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
@@ -46227,6 +46482,7 @@ const mentorMiddleware = [
46227
46482
  coursesApiSlice.middleware,
46228
46483
  courseMetadataApiSlice.middleware,
46229
46484
  edxSsoApiSlice.middleware,
46485
+ studioAuthoringApiSlice.middleware,
46230
46486
  clawApiSlice.middleware,
46231
46487
  evaluationsApiSlice.middleware,
46232
46488
  watchedGroupsApiSlice.middleware,
@@ -46272,6 +46528,7 @@ const skillsReducer = {
46272
46528
  [coursesApiSlice.reducerPath]: coursesApiSlice.reducer,
46273
46529
  [courseMetadataApiSlice.reducerPath]: courseMetadataApiSlice.reducer,
46274
46530
  [edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
46531
+ [studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
46275
46532
  [watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
46276
46533
  [chatPrivacyApiSlice.reducerPath]: chatPrivacyApiSlice.reducer,
46277
46534
  };
@@ -46313,16 +46570,20 @@ const skillsMiddleware = [
46313
46570
  coursesApiSlice.middleware,
46314
46571
  courseMetadataApiSlice.middleware,
46315
46572
  edxSsoApiSlice.middleware,
46573
+ studioAuthoringApiSlice.middleware,
46316
46574
  watchedGroupsApiSlice.middleware,
46317
46575
  chatPrivacyApiSlice.middleware,
46318
46576
  ];
46319
46577
 
46320
- const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}) => {
46578
+ const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}, studioUrl) => {
46321
46579
  IblDataLayer.storage = storageService;
46322
46580
  Config.dmUrl = dmUrl;
46323
46581
  Config.lmsUrl = lmsUrl;
46324
46582
  Config.legacyLmsUrl = legacyLmsUrl;
46325
46583
  Config.httpErrorHandlers = httpErrorHandler;
46584
+ if (studioUrl) {
46585
+ Config.studioUrl = studioUrl;
46586
+ }
46326
46587
  };
46327
46588
 
46328
46589
  exports.APP_IDENTIFIERS = APP_IDENTIFIERS;
@@ -46390,6 +46651,7 @@ exports.PROJECTS_QUERY_KEYS = PROJECTS_QUERY_KEYS;
46390
46651
  exports.QUERY_PARAMS = QUERY_PARAMS;
46391
46652
  exports.RETIREMENT_ENDPOINTS = RETIREMENT_ENDPOINTS;
46392
46653
  exports.STORAGE_KEYS = STORAGE_KEYS;
46654
+ exports.STUDIO_AUTHORING_ENDPOINTS = STUDIO_AUTHORING_ENDPOINTS;
46393
46655
  exports.SUGGESTED_PRIVACY_ENTITIES = SUGGESTED_PRIVACY_ENTITIES;
46394
46656
  exports.TENANT_IDENTIFIERS = TENANT_IDENTIFIERS;
46395
46657
  exports.TENANT_LOGO_ENDPOINTS = TENANT_LOGO_ENDPOINTS;
@@ -46479,6 +46741,7 @@ exports.skillsApiSlice = skillsApiSlice;
46479
46741
  exports.skillsMiddleware = skillsMiddleware;
46480
46742
  exports.skillsReducer = skillsReducer;
46481
46743
  exports.stripeApiSlice = stripeApiSlice;
46744
+ exports.studioAuthoringApiSlice = studioAuthoringApiSlice;
46482
46745
  exports.tenantApiReducer = tenantApiReducer;
46483
46746
  exports.tenantApiSlice = tenantApiSlice;
46484
46747
  exports.tenantLogoApiSlice = tenantLogoApiSlice;
@@ -46559,6 +46822,8 @@ exports.useCreateSessionIdMutation = useCreateSessionIdMutation;
46559
46822
  exports.useCreateShareableLinkMutation = useCreateShareableLinkMutation;
46560
46823
  exports.useCreateStripeCheckoutSessionMutation = useCreateStripeCheckoutSessionMutation;
46561
46824
  exports.useCreateStripeCustomerPortalMutation = useCreateStripeCustomerPortalMutation;
46825
+ exports.useCreateStudioCourseMutation = useCreateStudioCourseMutation;
46826
+ exports.useCreateStudioXblockMutation = useCreateStudioXblockMutation;
46562
46827
  exports.useCreateTrainingDocumentRetrainScheduleMutation = useCreateTrainingDocumentRetrainScheduleMutation;
46563
46828
  exports.useCreateUserCompanyMutation = useCreateUserCompanyMutation;
46564
46829
  exports.useCreateUserEducationMutation = useCreateUserEducationMutation;
@@ -46607,6 +46872,7 @@ exports.useDeleteRbacGroupMutation = useDeleteRbacGroupMutation;
46607
46872
  exports.useDeleteRbacPolicyMutation = useDeleteRbacPolicyMutation;
46608
46873
  exports.useDeleteRbacRoleMutation = useDeleteRbacRoleMutation;
46609
46874
  exports.useDeleteRecommendedPromptMutation = useDeleteRecommendedPromptMutation;
46875
+ exports.useDeleteStudioCourseMutation = useDeleteStudioCourseMutation;
46610
46876
  exports.useDeleteTrainingDocumentMutation = useDeleteTrainingDocumentMutation;
46611
46877
  exports.useDeleteUserEducationMutation = useDeleteUserEducationMutation;
46612
46878
  exports.useDeleteUserExperienceMutation = useDeleteUserExperienceMutation;
@@ -46770,6 +47036,8 @@ exports.useGetRbacMentorAccessListQuery = useGetRbacMentorAccessListQuery;
46770
47036
  exports.useGetRbacPermissionsMutation = useGetRbacPermissionsMutation;
46771
47037
  exports.useGetRbacPoliciesQuery = useGetRbacPoliciesQuery;
46772
47038
  exports.useGetRbacPolicyDetailsQuery = useGetRbacPolicyDetailsQuery;
47039
+ exports.useGetRbacResourceDiscoveryQuery = useGetRbacResourceDiscoveryQuery;
47040
+ exports.useGetRbacResourceListQuery = useGetRbacResourceListQuery;
46773
47041
  exports.useGetRbacRoleDetailsQuery = useGetRbacRoleDetailsQuery;
46774
47042
  exports.useGetRbacRolesQuery = useGetRbacRolesQuery;
46775
47043
  exports.useGetRbacTeamsAccessListQuery = useGetRbacTeamsAccessListQuery;
@@ -46966,6 +47234,8 @@ exports.useLazyGetPublicPlatformImageAssetFileUrlQuery = useLazyGetPublicPlatfor
46966
47234
  exports.useLazyGetPublicPlatformMembershipQuery = useLazyGetPublicPlatformMembershipQuery;
46967
47235
  exports.useLazyGetPublicPricingQuery = useLazyGetPublicPricingQuery;
46968
47236
  exports.useLazyGetRbacActionsDefinitionQuery = useLazyGetRbacActionsDefinitionQuery;
47237
+ exports.useLazyGetRbacResourceDiscoveryQuery = useLazyGetRbacResourceDiscoveryQuery;
47238
+ exports.useLazyGetRbacResourceListQuery = useLazyGetRbacResourceListQuery;
46969
47239
  exports.useLazyGetRbacRolesQuery = useLazyGetRbacRolesQuery;
46970
47240
  exports.useLazyGetRbacTeamsAccessListQuery = useLazyGetRbacTeamsAccessListQuery;
46971
47241
  exports.useLazyGetRecentMessageQuery = useLazyGetRecentMessageQuery;
@@ -47084,6 +47354,7 @@ exports.useSendNotificationMutation = useSendNotificationMutation;
47084
47354
  exports.useSetCurrentVersionMutation = useSetCurrentVersionMutation;
47085
47355
  exports.useSetPlatformConfigurationsMutation = useSetPlatformConfigurationsMutation;
47086
47356
  exports.useSetStudentMentorCreationStatusMutation = useSetStudentMentorCreationStatusMutation;
47357
+ exports.useSetStudioAdvancedSettingsMutation = useSetStudioAdvancedSettingsMutation;
47087
47358
  exports.useStarMentorMutation = useStarMentorMutation;
47088
47359
  exports.useStarredMentorsQuery = useStarredMentorsQuery;
47089
47360
  exports.useStartEvalRunMutation = useStartEvalRunMutation;
@@ -47137,6 +47408,8 @@ exports.useUpdateRbacRoleMutation = useUpdateRbacRoleMutation;
47137
47408
  exports.useUpdateRecommendedPromptMutation = useUpdateRecommendedPromptMutation;
47138
47409
  exports.useUpdateSessionDisableChathistoryMutation = useUpdateSessionDisableChathistoryMutation;
47139
47410
  exports.useUpdateShareableLinkMutation = useUpdateShareableLinkMutation;
47411
+ exports.useUpdateStudioCourseSettingsMutation = useUpdateStudioCourseSettingsMutation;
47412
+ exports.useUpdateStudioXblockMutation = useUpdateStudioXblockMutation;
47140
47413
  exports.useUpdateTemplateMutation = useUpdateTemplateMutation;
47141
47414
  exports.useUpdateTenantChatPrivacyConfigMutation = useUpdateTenantChatPrivacyConfigMutation;
47142
47415
  exports.useUpdateTenantMetadataMutation = useUpdateTenantMetadataMutation;
@@ -47161,6 +47434,9 @@ exports.useUploadDarkLogoMutation = useUploadDarkLogoMutation;
47161
47434
  exports.useUploadEvalDatasetCsvMutation = useUploadEvalDatasetCsvMutation;
47162
47435
  exports.useUploadLightLogoMutation = useUploadLightLogoMutation;
47163
47436
  exports.useUploadProfileImageMutation = useUploadProfileImageMutation;
47437
+ exports.useUploadStudioCourseAssetMutation = useUploadStudioCourseAssetMutation;
47438
+ exports.useUploadStudioCourseVideoMutation = useUploadStudioCourseVideoMutation;
47439
+ exports.useUploadStudioScormPackageMutation = useUploadStudioScormPackageMutation;
47164
47440
  exports.useUsersGradesPassedQuery = useUsersGradesPassedQuery;
47165
47441
  exports.useValidateWorkflowMutation = useValidateWorkflowMutation;
47166
47442
  exports.userApiSlice = userApiSlice;