@iblai/data-layer 0.0.3

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.
Files changed (72) hide show
  1. package/README.md +24 -0
  2. package/dist/config.d.ts +5 -0
  3. package/dist/constants.d.ts +31 -0
  4. package/dist/core/index.d.ts +4 -0
  5. package/dist/features/api-keys/api-slice.d.ts +594 -0
  6. package/dist/features/catalog/api-slice.d.ts +1 -0
  7. package/dist/features/chat/api-slice.d.ts +429 -0
  8. package/dist/features/chat/chat-slice.d.ts +15 -0
  9. package/dist/features/chat-history/api-slice.d.ts +956 -0
  10. package/dist/features/constants.d.ts +3 -0
  11. package/dist/features/core/api-slice.d.ts +164 -0
  12. package/dist/features/credentials/api-slice.d.ts +531 -0
  13. package/dist/features/datasets/api-slice.d.ts +267 -0
  14. package/dist/features/index.d.ts +1 -0
  15. package/dist/features/llms/api-slice.d.ts +267 -0
  16. package/dist/features/mentor/api-slice.d.ts +1816 -0
  17. package/dist/features/mentor/constants.d.ts +15 -0
  18. package/dist/features/mentor/types.d.ts +43 -0
  19. package/dist/features/mentor-categories/api-slice.d.ts +267 -0
  20. package/dist/features/platform/api-slice.d.ts +735 -0
  21. package/dist/features/prompts/api-slice.d.ts +1014 -0
  22. package/dist/features/skills/api-slice.d.ts +795 -0
  23. package/dist/features/tenant/api-slice.d.ts +536 -0
  24. package/dist/features/tenant/constants.d.ts +11 -0
  25. package/dist/features/tenant/types.d.ts +18 -0
  26. package/dist/features/tools/api-slice.d.ts +267 -0
  27. package/dist/features/training-documents/api-slice.d.ts +750 -0
  28. package/dist/features/user/api-slice.d.ts +751 -0
  29. package/dist/features/user/constants.d.ts +19 -0
  30. package/dist/features/user/types.d.ts +64 -0
  31. package/dist/features/user-invitations/api-slice.d.ts +428 -0
  32. package/dist/features/utils.d.ts +46 -0
  33. package/dist/hooks/index.d.ts +2 -0
  34. package/dist/index.d.ts +23 -0
  35. package/dist/index.esm.js +27414 -0
  36. package/dist/index.esm.js.map +1 -0
  37. package/dist/index.js +27514 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/node_modules/@reduxjs/toolkit/dist/uncheckedindexed.d.ts +5 -0
  40. package/dist/reducers/index.d.ts +1 -0
  41. package/dist/reducers/mentor.d.ts +124 -0
  42. package/dist/services/StorageService.d.ts +5 -0
  43. package/dist/src/config.d.ts +5 -0
  44. package/dist/src/constants.d.ts +30 -0
  45. package/dist/src/core/index.d.ts +4 -0
  46. package/dist/src/features/api-keys/api-slice.d.ts +594 -0
  47. package/dist/src/features/catalog/api-slice.d.ts +1 -0
  48. package/dist/src/features/chat/chat-slice.d.ts +15 -0
  49. package/dist/src/features/datasets/api-slice.d.ts +267 -0
  50. package/dist/src/features/index.d.ts +1 -0
  51. package/dist/src/features/llms/api-slice.d.ts +267 -0
  52. package/dist/src/features/mentor/api-slice.d.ts +1919 -0
  53. package/dist/src/features/mentor-categories/api-slice.d.ts +267 -0
  54. package/dist/src/features/platform/api-slice.d.ts +139 -0
  55. package/dist/src/features/tenant/api-slice.d.ts +536 -0
  56. package/dist/src/features/tenant/constants.d.ts +11 -0
  57. package/dist/src/features/tenant/types.d.ts +18 -0
  58. package/dist/src/features/tools/api-slice.d.ts +267 -0
  59. package/dist/src/features/user/api-slice.d.ts +268 -0
  60. package/dist/src/features/user/constants.d.ts +11 -0
  61. package/dist/src/features/user/types.d.ts +44 -0
  62. package/dist/src/features/utils.d.ts +46 -0
  63. package/dist/src/hooks/index.d.ts +2 -0
  64. package/dist/src/index.d.ts +12 -0
  65. package/dist/src/reducers/index.d.ts +1 -0
  66. package/dist/src/reducers/mentor.d.ts +63 -0
  67. package/dist/src/services/StorageService.d.ts +5 -0
  68. package/dist/tests/features/user/api-slice.test.d.ts +1 -0
  69. package/dist/tests/features/user/constants.test.d.ts +1 -0
  70. package/dist/tests/setupTests.d.ts +1 -0
  71. package/dist/utils/index.d.ts +2 -0
  72. package/package.json +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../node_modules/@iblai/iblai-api/dist/index.esm.js","../src/constants.ts","../src/config.ts","../src/core/index.ts","../src/features/utils.ts","../src/features/api-keys/api-slice.ts","../src/features/chat-history/api-slice.ts","../src/features/chat/api-slice.ts","../src/features/llms/api-slice.ts","../src/features/mentor/api-slice.ts","../src/features/mentor-categories/api-slice.ts","../src/features/prompts/api-slice.ts","../src/features/tenant/constants.ts","../src/features/tenant/api-slice.ts","../src/features/training-documents/api-slice.ts","../src/features/constants.ts","../src/features/platform/api-slice.ts","../src/features/user/constants.ts","../src/features/user/api-slice.ts","../src/features/core/api-slice.ts","../src/features/skills/api-slice.ts","../src/features/credentials/api-slice.ts","../src/features/user-invitations/api-slice.ts","../src/features/tools/api-slice.ts","../src/reducers/mentor.ts","../src/utils/index.ts"],"sourcesContent":["class ApiError extends Error {\n constructor(request, response, message) {\n super(message);\n this.name = 'ApiError';\n this.url = response.url;\n this.status = response.status;\n this.statusText = response.statusText;\n this.body = response.body;\n this.request = request;\n }\n}\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nclass CancelError extends Error {\n constructor(message) {\n super(message);\n this.name = 'CancelError';\n }\n get isCancelled() {\n return true;\n }\n}\nclass CancelablePromise {\n #isResolved;\n #isRejected;\n #isCancelled;\n #cancelHandlers;\n #promise;\n #resolve;\n #reject;\n constructor(executor) {\n this.#isResolved = false;\n this.#isRejected = false;\n this.#isCancelled = false;\n this.#cancelHandlers = [];\n this.#promise = new Promise((resolve, reject) => {\n this.#resolve = resolve;\n this.#reject = reject;\n const onResolve = value => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isResolved = true;\n if (this.#resolve) this.#resolve(value);\n };\n const onReject = reason => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isRejected = true;\n if (this.#reject) this.#reject(reason);\n };\n const onCancel = cancelHandler => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#cancelHandlers.push(cancelHandler);\n };\n Object.defineProperty(onCancel, 'isResolved', {\n get: () => this.#isResolved\n });\n Object.defineProperty(onCancel, 'isRejected', {\n get: () => this.#isRejected\n });\n Object.defineProperty(onCancel, 'isCancelled', {\n get: () => this.#isCancelled\n });\n return executor(onResolve, onReject, onCancel);\n });\n }\n get [Symbol.toStringTag]() {\n return \"Cancellable Promise\";\n }\n then(onFulfilled, onRejected) {\n return this.#promise.then(onFulfilled, onRejected);\n }\n catch(onRejected) {\n return this.#promise.catch(onRejected);\n }\n finally(onFinally) {\n return this.#promise.finally(onFinally);\n }\n cancel() {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isCancelled = true;\n if (this.#cancelHandlers.length) {\n try {\n for (const cancelHandler of this.#cancelHandlers) {\n cancelHandler();\n }\n } catch (error) {\n console.warn('Cancellation threw an error', error);\n return;\n }\n }\n this.#cancelHandlers.length = 0;\n if (this.#reject) this.#reject(new CancelError('Request aborted'));\n }\n get isCancelled() {\n return this.#isCancelled;\n }\n}\n\nconst OpenAPI = {\n BASE: 'https://base.manager.iblai.app',\n VERSION: '3.40.0-ai-plus',\n WITH_CREDENTIALS: false,\n CREDENTIALS: 'include',\n TOKEN: undefined,\n USERNAME: undefined,\n PASSWORD: undefined,\n HEADERS: undefined,\n ENCODE_PATH: undefined\n};\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `Unaccepted` - Unaccepted\n * * `Accepted` - Accepted\n * * `Rejected` - Rejected\n */\nvar AcceptanceEnum;\n(function (AcceptanceEnum) {\n AcceptanceEnum[\"UNACCEPTED\"] = \"Unaccepted\";\n AcceptanceEnum[\"ACCEPTED\"] = \"Accepted\";\n AcceptanceEnum[\"REJECTED\"] = \"Rejected\";\n})(AcceptanceEnum || (AcceptanceEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `public` - Public\n * * `private` - Private\n */\nvar AccessEnum;\n(function (AccessEnum) {\n AccessEnum[\"PUBLIC\"] = \"public\";\n AccessEnum[\"PRIVATE\"] = \"private\";\n})(AccessEnum || (AccessEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `left` - Left\n * * `right` - Right\n */\nvar AlignMentorBubbleEnum;\n(function (AlignMentorBubbleEnum) {\n AlignMentorBubbleEnum[\"LEFT\"] = \"left\";\n AlignMentorBubbleEnum[\"RIGHT\"] = \"right\";\n})(AlignMentorBubbleEnum || (AlignMentorBubbleEnum = {}));\n\nvar BlankEnum;\n(function (BlankEnum) {})(BlankEnum || (BlankEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `unhealthy` - unhealthy\n * * `healthy` - healthy\n */\nvar CeleryHeartbeatFailStatusEnum;\n(function (CeleryHeartbeatFailStatusEnum) {\n CeleryHeartbeatFailStatusEnum[\"UNHEALTHY\"] = \"unhealthy\";\n CeleryHeartbeatFailStatusEnum[\"HEALTHY\"] = \"healthy\";\n})(CeleryHeartbeatFailStatusEnum || (CeleryHeartbeatFailStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `healthy` - healthy\n * * `unhealthy` - unhealthy\n */\nvar CeleryHeartbeatStatusEnum;\n(function (CeleryHeartbeatStatusEnum) {\n CeleryHeartbeatStatusEnum[\"HEALTHY\"] = \"healthy\";\n CeleryHeartbeatStatusEnum[\"UNHEALTHY\"] = \"unhealthy\";\n})(CeleryHeartbeatStatusEnum || (CeleryHeartbeatStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `html` - Html\n * * `multiple_choice` - Multiple Choice\n */\nvar ComponentBlockTypeEnum;\n(function (ComponentBlockTypeEnum) {\n ComponentBlockTypeEnum[\"HTML\"] = \"html\";\n ComponentBlockTypeEnum[\"MULTIPLE_CHOICE\"] = \"multiple_choice\";\n})(ComponentBlockTypeEnum || (ComponentBlockTypeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `Pending` - Pending\n * * `Scheduled` - Scheduled\n * * `Success` - Success\n * * `Failed` - Failed\n * * `Cancelled` - Cancelled\n * * `In Progress` - In Progress\n */\nvar CourseCreationTaskStatusEnum;\n(function (CourseCreationTaskStatusEnum) {\n CourseCreationTaskStatusEnum[\"PENDING\"] = \"Pending\";\n CourseCreationTaskStatusEnum[\"SCHEDULED\"] = \"Scheduled\";\n CourseCreationTaskStatusEnum[\"SUCCESS\"] = \"Success\";\n CourseCreationTaskStatusEnum[\"FAILED\"] = \"Failed\";\n CourseCreationTaskStatusEnum[\"CANCELLED\"] = \"Cancelled\";\n CourseCreationTaskStatusEnum[\"IN_PROGRESS\"] = \"In Progress\";\n})(CourseCreationTaskStatusEnum || (CourseCreationTaskStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `pending` - Pending\n * * `processing` - Processing\n * * `completed` - Completed\n * * `failed` - Failed\n */\nvar DataSetStatusEnum;\n(function (DataSetStatusEnum) {\n DataSetStatusEnum[\"PENDING\"] = \"pending\";\n DataSetStatusEnum[\"PROCESSING\"] = \"processing\";\n DataSetStatusEnum[\"COMPLETED\"] = \"completed\";\n DataSetStatusEnum[\"FAILED\"] = \"failed\";\n})(DataSetStatusEnum || (DataSetStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `ACCOUNT_ACTIVE` - Account Active\n * * `ACCOUNT_PENDING` - Account Pending\n */\nvar GooglePayAccountResponseStatusEnum;\n(function (GooglePayAccountResponseStatusEnum) {\n GooglePayAccountResponseStatusEnum[\"ACCOUNT_ACTIVE\"] = \"ACCOUNT_ACTIVE\";\n GooglePayAccountResponseStatusEnum[\"ACCOUNT_PENDING\"] = \"ACCOUNT_PENDING\";\n})(GooglePayAccountResponseStatusEnum || (GooglePayAccountResponseStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `proactive_prompt` - Proactive Prompt\n * * `proactive_response` - Proactive Response\n */\nvar GreetingMethodEnum;\n(function (GreetingMethodEnum) {\n GreetingMethodEnum[\"PROACTIVE_PROMPT\"] = \"proactive_prompt\";\n GreetingMethodEnum[\"PROACTIVE_RESPONSE\"] = \"proactive_response\";\n})(GreetingMethodEnum || (GreetingMethodEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `university` - University\n * * `college` - College\n * * `institute` - Institute\n * * `academy` - Academy\n * * `other` - Other\n */\nvar InstitutionTypeEnum;\n(function (InstitutionTypeEnum) {\n InstitutionTypeEnum[\"UNIVERSITY\"] = \"university\";\n InstitutionTypeEnum[\"COLLEGE\"] = \"college\";\n InstitutionTypeEnum[\"INSTITUTE\"] = \"institute\";\n InstitutionTypeEnum[\"ACADEMY\"] = \"academy\";\n InstitutionTypeEnum[\"OTHER\"] = \"other\";\n})(InstitutionTypeEnum || (InstitutionTypeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `course` - Course\n * * `unit` - Unit\n * * `resource` - Resource\n * * `course_unit` - Course and Unit\n * * `course_resource` - Course and Resource\n * * `unit_resource` - Unit and Resource\n * * `all` - Course, Unit, and Resource\n */\nvar ItemTypeEnum;\n(function (ItemTypeEnum) {\n ItemTypeEnum[\"COURSE\"] = \"course\";\n ItemTypeEnum[\"UNIT\"] = \"unit\";\n ItemTypeEnum[\"RESOURCE\"] = \"resource\";\n ItemTypeEnum[\"COURSE_UNIT\"] = \"course_unit\";\n ItemTypeEnum[\"COURSE_RESOURCE\"] = \"course_resource\";\n ItemTypeEnum[\"UNIT_RESOURCE\"] = \"unit_resource\";\n ItemTypeEnum[\"ALL\"] = \"all\";\n})(ItemTypeEnum || (ItemTypeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `KnowledgeGap` - KnowledgeGap\n * * `LessonsLearned` - LessonsLearned\n * * `HelpRequest` - HelpRequest\n */\nvar KindEnum;\n(function (KindEnum) {\n KindEnum[\"KNOWLEDGE_GAP\"] = \"KnowledgeGap\";\n KindEnum[\"LESSONS_LEARNED\"] = \"LessonsLearned\";\n KindEnum[\"HELP_REQUEST\"] = \"HelpRequest\";\n})(KindEnum || (KindEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `video` - Video\n * * `image` - Image\n * * `document` - Document\n * * `audio` - Audio\n * * `other` - Other\n */\nvar MediaTypeEnum;\n(function (MediaTypeEnum) {\n MediaTypeEnum[\"VIDEO\"] = \"video\";\n MediaTypeEnum[\"IMAGE\"] = \"image\";\n MediaTypeEnum[\"DOCUMENT\"] = \"document\";\n MediaTypeEnum[\"AUDIO\"] = \"audio\";\n MediaTypeEnum[\"OTHER\"] = \"other\";\n})(MediaTypeEnum || (MediaTypeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `viewable_by_tenant_admins` - Viewable By Tenant Admins\n * * `viewable_by_tenant_students` - Viewable By Tenant Students\n * * `viewable_by_anyone` - Viewable By Anyone\n */\nvar MentorVisibilityEnum;\n(function (MentorVisibilityEnum) {\n MentorVisibilityEnum[\"VIEWABLE_BY_TENANT_ADMINS\"] = \"viewable_by_tenant_admins\";\n MentorVisibilityEnum[\"VIEWABLE_BY_TENANT_STUDENTS\"] = \"viewable_by_tenant_students\";\n MentorVisibilityEnum[\"VIEWABLE_BY_ANYONE\"] = \"viewable_by_anyone\";\n})(MentorVisibilityEnum || (MentorVisibilityEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `subscription` - subscription\n * * `payment` - payment\n * * `setup` - setup\n */\nvar ModeEnum;\n(function (ModeEnum) {\n ModeEnum[\"SUBSCRIPTION\"] = \"subscription\";\n ModeEnum[\"PAYMENT\"] = \"payment\";\n ModeEnum[\"SETUP\"] = \"setup\";\n})(ModeEnum || (ModeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `email` - email\n * * `username` - username\n * * `platform` - platform\n * * `csv` - csv\n * * `department` - department\n * * `pathway` - pathway\n * * `program` - program\n */\nvar NotificationSourceTypeEnum;\n(function (NotificationSourceTypeEnum) {\n NotificationSourceTypeEnum[\"EMAIL\"] = \"email\";\n NotificationSourceTypeEnum[\"USERNAME\"] = \"username\";\n NotificationSourceTypeEnum[\"PLATFORM\"] = \"platform\";\n NotificationSourceTypeEnum[\"CSV\"] = \"csv\";\n NotificationSourceTypeEnum[\"DEPARTMENT\"] = \"department\";\n NotificationSourceTypeEnum[\"PATHWAY\"] = \"pathway\";\n NotificationSourceTypeEnum[\"PROGRAM\"] = \"program\";\n})(NotificationSourceTypeEnum || (NotificationSourceTypeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `READ` - Read\n * * `UNREAD` - Unread\n * * `CANCELLED` - Cancelled\n */\nvar NotificationStatusEnum;\n(function (NotificationStatusEnum) {\n NotificationStatusEnum[\"READ\"] = \"READ\";\n NotificationStatusEnum[\"UNREAD\"] = \"UNREAD\";\n NotificationStatusEnum[\"CANCELLED\"] = \"CANCELLED\";\n})(NotificationStatusEnum || (NotificationStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `success` - Success\n * * `error` - Error\n * * `running` - Running\n */\nvar PeriodicAgentLogStatusEnum;\n(function (PeriodicAgentLogStatusEnum) {\n PeriodicAgentLogStatusEnum[\"SUCCESS\"] = \"success\";\n PeriodicAgentLogStatusEnum[\"ERROR\"] = \"error\";\n PeriodicAgentLogStatusEnum[\"RUNNING\"] = \"running\";\n})(PeriodicAgentLogStatusEnum || (PeriodicAgentLogStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `-2` - FAILED\n * * `-1` - TERMINATED\n * * `0` - PENDING\n * * `1` - BUILDING\n * * `2` - RUNNING\n * * `3` - PAUSED\n * * `4` - STOPPING\n * * `5` - STOPPED\n * * `6` - REPAIR\n */\nvar PlatformListStatusEnum;\n(function (PlatformListStatusEnum) {\n PlatformListStatusEnum[PlatformListStatusEnum[\"_-2\"] = -2] = \"_-2\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_-1\"] = -1] = \"_-1\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_0\"] = 0] = \"_0\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_1\"] = 1] = \"_1\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_2\"] = 2] = \"_2\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_3\"] = 3] = \"_3\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_4\"] = 4] = \"_4\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_5\"] = 5] = \"_5\";\n PlatformListStatusEnum[PlatformListStatusEnum[\"_6\"] = 6] = \"_6\";\n})(PlatformListStatusEnum || (PlatformListStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `success` - Success\n * * `error` - Error\n * * `running` - Running\n * * `pending` - Pending\n */\nvar PreviousAgentStatusEnum;\n(function (PreviousAgentStatusEnum) {\n PreviousAgentStatusEnum[\"SUCCESS\"] = \"success\";\n PreviousAgentStatusEnum[\"ERROR\"] = \"error\";\n PreviousAgentStatusEnum[\"RUNNING\"] = \"running\";\n PreviousAgentStatusEnum[\"PENDING\"] = \"pending\";\n})(PreviousAgentStatusEnum || (PreviousAgentStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `bachelors` - Bachelor's Degree\n * * `masters` - Master's Degree\n * * `phd` - PhD\n * * `diploma` - Diploma\n * * `certificate` - Certificate\n * * `ungraded` - Ungraded\n * * `other` - Other\n */\nvar ProgramTypeEnum;\n(function (ProgramTypeEnum) {\n ProgramTypeEnum[\"BACHELORS\"] = \"bachelors\";\n ProgramTypeEnum[\"MASTERS\"] = \"masters\";\n ProgramTypeEnum[\"PHD\"] = \"phd\";\n ProgramTypeEnum[\"DIPLOMA\"] = \"diploma\";\n ProgramTypeEnum[\"CERTIFICATE\"] = \"certificate\";\n ProgramTypeEnum[\"UNGRADED\"] = \"ungraded\";\n ProgramTypeEnum[\"OTHER\"] = \"other\";\n})(ProgramTypeEnum || (ProgramTypeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `viewable_by_tenant_admins` - Viewable By Tenant Admins\n * * `viewable_by_tenant_students` - Viewable By Tenant Students\n * * `viewable_by_anyone` - Viewable By Anyone\n */\nvar PromptVisibilityEnum;\n(function (PromptVisibilityEnum) {\n PromptVisibilityEnum[\"VIEWABLE_BY_TENANT_ADMINS\"] = \"viewable_by_tenant_admins\";\n PromptVisibilityEnum[\"VIEWABLE_BY_TENANT_STUDENTS\"] = \"viewable_by_tenant_students\";\n PromptVisibilityEnum[\"VIEWABLE_BY_ANYONE\"] = \"viewable_by_anyone\";\n})(PromptVisibilityEnum || (PromptVisibilityEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `webex` - Webex\n * * `slack` - Slack\n * * `whatsapp` - Whatsapp\n * * `discord` - Discord\n * * `teams` - Teams\n */\nvar Provider05cEnum;\n(function (Provider05cEnum) {\n Provider05cEnum[\"WEBEX\"] = \"webex\";\n Provider05cEnum[\"SLACK\"] = \"slack\";\n Provider05cEnum[\"WHATSAPP\"] = \"whatsapp\";\n Provider05cEnum[\"DISCORD\"] = \"discord\";\n Provider05cEnum[\"TEAMS\"] = \"teams\";\n})(Provider05cEnum || (Provider05cEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `openai` - Openai\n */\nvar Provider63aEnum;\n(function (Provider63aEnum) {\n Provider63aEnum[\"OPENAI\"] = \"openai\";\n})(Provider63aEnum || (Provider63aEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `1` - Up Vote\n * * `-1` - Down Vote\n */\nvar RatingEnum;\n(function (RatingEnum) {\n RatingEnum[RatingEnum[\"_1\"] = 1] = \"_1\";\n RatingEnum[RatingEnum[\"_-1\"] = -1] = \"_-1\";\n})(RatingEnum || (RatingEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `scrapped` - Scraped\n * * `failed` - Failed\n * * `pending` - Pending\n * * `unscrapped` - Unscraped\n */\nvar ResourceScrappedDataStatusEnum;\n(function (ResourceScrappedDataStatusEnum) {\n ResourceScrappedDataStatusEnum[\"SCRAPPED\"] = \"scrapped\";\n ResourceScrappedDataStatusEnum[\"FAILED\"] = \"failed\";\n ResourceScrappedDataStatusEnum[\"PENDING\"] = \"pending\";\n ResourceScrappedDataStatusEnum[\"UNSCRAPPED\"] = \"unscrapped\";\n})(ResourceScrappedDataStatusEnum || (ResourceScrappedDataStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `pending` - Pending\n * * `running` - Running\n * * `accumulating` - Accumulating\n * * `processing` - Processing\n * * `storing` - Storing\n * * `completed` - Completed\n * * `cancelled` - Cancelled\n * * `error` - Error\n * * `expired` - Expired\n */\nvar StateEnum;\n(function (StateEnum) {\n StateEnum[\"PENDING\"] = \"pending\";\n StateEnum[\"RUNNING\"] = \"running\";\n StateEnum[\"ACCUMULATING\"] = \"accumulating\";\n StateEnum[\"PROCESSING\"] = \"processing\";\n StateEnum[\"STORING\"] = \"storing\";\n StateEnum[\"COMPLETED\"] = \"completed\";\n StateEnum[\"CANCELLED\"] = \"cancelled\";\n StateEnum[\"ERROR\"] = \"error\";\n StateEnum[\"EXPIRED\"] = \"expired\";\n})(StateEnum || (StateEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `published` - Published\n * * `draft` - Unsynced\n * * `error` - Error\n * * `syncing` - Syncing\n */\nvar Status6eeEnum;\n(function (Status6eeEnum) {\n Status6eeEnum[\"PUBLISHED\"] = \"published\";\n Status6eeEnum[\"DRAFT\"] = \"draft\";\n Status6eeEnum[\"ERROR\"] = \"error\";\n Status6eeEnum[\"SYNCING\"] = \"syncing\";\n})(Status6eeEnum || (Status6eeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `completed` - Completed\n * * `failed` - Failed\n * * `pending` - Pending\n */\nvar StepStatusEnum;\n(function (StepStatusEnum) {\n StepStatusEnum[\"COMPLETED\"] = \"completed\";\n StepStatusEnum[\"FAILED\"] = \"failed\";\n StepStatusEnum[\"PENDING\"] = \"pending\";\n})(StepStatusEnum || (StepStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `Safety System` - Safety System\n * * `Moderation System` - Moderation System\n */\nvar TargetSystemEnum;\n(function (TargetSystemEnum) {\n TargetSystemEnum[\"SAFETY_SYSTEM\"] = \"Safety System\";\n TargetSystemEnum[\"MODERATION_SYSTEM\"] = \"Moderation System\";\n})(TargetSystemEnum || (TargetSystemEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `dark` - Dark\n * * `light` - Light\n */\nvar ThemeEnum;\n(function (ThemeEnum) {\n ThemeEnum[\"DARK\"] = \"dark\";\n ThemeEnum[\"LIGHT\"] = \"light\";\n})(ThemeEnum || (ThemeEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `trained` - Trained\n * * `failed` - Failed\n * * `pending` - Pending\n * * `untrained` - Untrained\n */\nvar TrainingStatusEnum;\n(function (TrainingStatusEnum) {\n TrainingStatusEnum[\"TRAINED\"] = \"trained\";\n TrainingStatusEnum[\"FAILED\"] = \"failed\";\n TrainingStatusEnum[\"PENDING\"] = \"pending\";\n TrainingStatusEnum[\"UNTRAINED\"] = \"untrained\";\n})(TrainingStatusEnum || (TrainingStatusEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `sse` - Sse\n * * `websocket` - Websocket\n */\nvar TransportEnum;\n(function (TransportEnum) {\n TransportEnum[\"SSE\"] = \"sse\";\n TransportEnum[\"WEBSOCKET\"] = \"websocket\";\n})(TransportEnum || (TransportEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `tutorial` - Tutorial\n * * `assessment` - Assessment\n */\nvar TypeC42Enum;\n(function (TypeC42Enum) {\n TypeC42Enum[\"TUTORIAL\"] = \"tutorial\";\n TypeC42Enum[\"ASSESSMENT\"] = \"assessment\";\n})(TypeC42Enum || (TypeC42Enum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n/**\n * * `openai` - Openai\n * * `google` - Google\n * * `elevenlabs` - Elevenlabs\n */\nvar VoiceProviderEnum;\n(function (VoiceProviderEnum) {\n VoiceProviderEnum[\"OPENAI\"] = \"openai\";\n VoiceProviderEnum[\"GOOGLE\"] = \"google\";\n VoiceProviderEnum[\"ELEVENLABS\"] = \"elevenlabs\";\n})(VoiceProviderEnum || (VoiceProviderEnum = {}));\n\n/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nconst isDefined = value => {\n return value !== undefined && value !== null;\n};\nconst isString = value => {\n return typeof value === 'string';\n};\nconst isStringWithValue = value => {\n return isString(value) && value !== '';\n};\nconst isBlob = value => {\n return typeof value === 'object' && typeof value.type === 'string' && typeof value.stream === 'function' && typeof value.arrayBuffer === 'function' && typeof value.constructor === 'function' && typeof value.constructor.name === 'string' && /^(Blob|File)$/.test(value.constructor.name) && /^(Blob|File)$/.test(value[Symbol.toStringTag]);\n};\nconst isFormData = value => {\n return value instanceof FormData;\n};\nconst base64 = str => {\n try {\n return btoa(str);\n } catch (err) {\n // @ts-ignore\n return Buffer.from(str).toString('base64');\n }\n};\nconst getQueryString = params => {\n const qs = [];\n const append = (key, value) => {\n qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n };\n const process = (key, value) => {\n if (isDefined(value)) {\n if (Array.isArray(value)) {\n value.forEach(v => {\n process(key, v);\n });\n } else if (typeof value === 'object') {\n Object.entries(value).forEach(([k, v]) => {\n process(`${key}[${k}]`, v);\n });\n } else {\n append(key, value);\n }\n }\n };\n Object.entries(params).forEach(([key, value]) => {\n process(key, value);\n });\n if (qs.length > 0) {\n return `?${qs.join('&')}`;\n }\n return '';\n};\nconst getUrl = (config, options) => {\n const encoder = config.ENCODE_PATH || encodeURI;\n const path = options.url.replace('{api-version}', config.VERSION).replace(/{(.*?)}/g, (substring, group) => {\n if (options.path?.hasOwnProperty(group)) {\n return encoder(String(options.path[group]));\n }\n return substring;\n });\n const url = `${config.BASE}${path}`;\n if (options.query) {\n return `${url}${getQueryString(options.query)}`;\n }\n return url;\n};\nconst getFormData = options => {\n if (options.formData) {\n const formData = new FormData();\n const process = (key, value) => {\n if (isString(value) || isBlob(value)) {\n formData.append(key, value);\n } else {\n formData.append(key, JSON.stringify(value));\n }\n };\n Object.entries(options.formData).filter(([_, value]) => isDefined(value)).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(v => process(key, v));\n } else {\n process(key, value);\n }\n });\n return formData;\n }\n return undefined;\n};\nconst resolve = async (options, resolver) => {\n if (typeof resolver === 'function') {\n return resolver(options);\n }\n return resolver;\n};\nconst getHeaders = async (config, options) => {\n const [token, username, password, additionalHeaders] = await Promise.all([resolve(options, config.TOKEN), resolve(options, config.USERNAME), resolve(options, config.PASSWORD), resolve(options, config.HEADERS)]);\n const headers = Object.entries({\n Accept: 'application/json',\n ...additionalHeaders,\n ...options.headers\n }).filter(([_, value]) => isDefined(value)).reduce((headers, [key, value]) => ({\n ...headers,\n [key]: String(value)\n }), {});\n if (isStringWithValue(token)) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n if (isStringWithValue(username) && isStringWithValue(password)) {\n const credentials = base64(`${username}:${password}`);\n headers['Authorization'] = `Basic ${credentials}`;\n }\n if (options.body !== undefined) {\n if (options.mediaType) {\n headers['Content-Type'] = options.mediaType;\n } else if (isBlob(options.body)) {\n headers['Content-Type'] = options.body.type || 'application/octet-stream';\n } else if (isString(options.body)) {\n headers['Content-Type'] = 'text/plain';\n } else if (!isFormData(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n }\n return new Headers(headers);\n};\nconst getRequestBody = options => {\n if (options.body !== undefined) {\n if (options.mediaType?.includes('/json')) {\n return JSON.stringify(options.body);\n } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\n return options.body;\n } else {\n return JSON.stringify(options.body);\n }\n }\n return undefined;\n};\nconst sendRequest = async (config, options, url, body, formData, headers, onCancel) => {\n const controller = new AbortController();\n const request = {\n headers,\n body: body ?? formData,\n method: options.method,\n signal: controller.signal\n };\n if (config.WITH_CREDENTIALS) {\n request.credentials = config.CREDENTIALS;\n }\n onCancel(() => controller.abort());\n return await fetch(url, request);\n};\nconst getResponseHeader = (response, responseHeader) => {\n if (responseHeader) {\n const content = response.headers.get(responseHeader);\n if (isString(content)) {\n return content;\n }\n }\n return undefined;\n};\nconst getResponseBody = async response => {\n if (response.status !== 204) {\n try {\n const contentType = response.headers.get('Content-Type');\n if (contentType) {\n const jsonTypes = ['application/json', 'application/problem+json'];\n const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type));\n if (isJSON) {\n return await response.json();\n } else {\n return await response.text();\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n return undefined;\n};\nconst catchErrorCodes = (options, result) => {\n const errors = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n ...options.errors\n };\n const error = errors[result.status];\n if (error) {\n throw new ApiError(options, result, error);\n }\n if (!result.ok) {\n const errorStatus = result.status ?? 'unknown';\n const errorStatusText = result.statusText ?? 'unknown';\n const errorBody = (() => {\n try {\n return JSON.stringify(result.body, null, 2);\n } catch (e) {\n return undefined;\n }\n })();\n throw new ApiError(options, result, `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`);\n }\n};\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise<T>\n * @throws ApiError\n */\nconst request = (config, options) => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n try {\n const url = getUrl(config, options);\n const formData = getFormData(options);\n const body = getRequestBody(options);\n const headers = await getHeaders(config, options);\n if (!onCancel.isCancelled) {\n const response = await sendRequest(config, options, url, body, formData, headers, onCancel);\n const responseBody = await getResponseBody(response);\n const responseHeader = getResponseHeader(response, options.responseHeader);\n const result = {\n url,\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseHeader ?? responseBody\n };\n catchErrorCodes(options, result);\n resolve(result.body);\n }\n } catch (error) {\n reject(error);\n }\n });\n};\n\nclass AiAccountService {\n /**\n * Retrieve LLM credentials for an organization.\n *\n * Query Parameters:\n * name (optional): Filter results by LLM provider name\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: List of LLM credentials for the organization\n *\n * Raises:\n * NotFound: When organization is not found or when no credentials match the filters\n * ValidationError: When query parameters are invalid\n * @param org\n * @param name Filter credentials by provider name (e.g., 'openai', 'google')\n * @returns LLMCredentialResponse\n * @throws ApiError\n */\n static aiAccountOrgsCredentialRetrieve(org, name) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-account/orgs/{org}/credential/',\n path: {\n 'org': org\n },\n query: {\n 'name': name\n }\n });\n }\n /**\n * Create a new LLM credential for an organization.\n *\n * Args:\n * request: The HTTP request containing credential information\n * org: Organization key identifier\n *\n * Returns:\n * Response: Created LLM credential\n *\n * Raises:\n * NotFound: When organization is not found\n * ValidationError: When request data is invalid\n * @param org\n * @param requestBody\n * @returns LLMCredentialResponse\n * @throws ApiError\n */\n static aiAccountOrgsCredentialCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-account/orgs/{org}/credential/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Update an existing LLM credential for an organization.\n *\n * Args:\n * request: The HTTP request containing updated credential information\n * org: Organization key identifier\n *\n * Returns:\n * Response: Updated LLM credential\n *\n * Raises:\n * NotFound: When organization or credential is not found\n * ValidationError: When request data is invalid\n * @param org\n * @param requestBody\n * @returns LLMCredentialResponse\n * @throws ApiError\n */\n static aiAccountOrgsCredentialPartialUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-account/orgs/{org}/credential/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve integration credentials for an organization.\n *\n * Query Parameters:\n * name (optional): Filter results by integration service name\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: List of integration credentials for the organization\n *\n * Raises:\n * NotFound: When organization is not found or when no credentials match the filters\n * ValidationError: When query parameters are invalid\n * @param org\n * @param name Filter credentials by provider name (e.g., 'openai', 'google')\n * @returns IntegrationCredential\n * @throws ApiError\n */\n static aiAccountOrgsIntegrationCredentialRetrieve(org, name) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-account/orgs/{org}/integration-credential/',\n path: {\n 'org': org\n },\n query: {\n 'name': name\n }\n });\n }\n /**\n * Create a new integration credential for an organization.\n *\n * Args:\n * request: The HTTP request containing credential information\n * org: Organization key identifier\n *\n * Returns:\n * Response: Created integration credential\n *\n * Raises:\n * NotFound: When organization is not found\n * ValidationError: When request data is invalid\n * @param org\n * @param requestBody\n * @returns IntegrationCredential\n * @throws ApiError\n */\n static aiAccountOrgsIntegrationCredentialCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-account/orgs/{org}/integration-credential/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Update an existing integration credential for an organization.\n *\n * Args:\n * request: The HTTP request containing updated credential information\n * org: Organization key identifier\n *\n * Returns:\n * Response: Updated integration credential\n *\n * Raises:\n * NotFound: When organization or credential is not found\n * ValidationError: When request data is invalid\n * @param org\n * @param requestBody\n * @returns IntegrationCredential\n * @throws ApiError\n */\n static aiAccountOrgsIntegrationCredentialPartialUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-account/orgs/{org}/integration-credential/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve platform metadata for a specific organization.\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: Platform metadata including service configurations and active services\n *\n * Raises:\n * NotFound: When platform metadata is not found\n * @param org\n * @returns IBLAIPlatformMeta\n * @throws ApiError\n */\n static aiAccountOrgsPlatformMetadataList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-account/orgs/{org}/platform-metadata/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Create or update platform metadata for a specific organization.\n *\n * Args:\n * request: The HTTP request containing metadata information\n * org: Organization key identifier\n *\n * Returns:\n * Response: Created/updated platform metadata\n *\n * Raises:\n * NotFound: When platform is not found\n * ValidationError: When request data is invalid\n * @param org\n * @param requestBody\n * @returns IBLAIPlatformMeta\n * @throws ApiError\n */\n static aiAccountOrgsPlatformMetadataCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-account/orgs/{org}/platform-metadata/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Update specific fields of platform metadata for an organization.\n *\n * This endpoint allows updating the active LLM provider and available LLMs.\n *\n * Args:\n * request: The HTTP request containing update information\n * org: Organization key identifier\n *\n * Returns:\n * Response: Updated platform metadata\n *\n * Raises:\n * NotFound: When platform metadata is not found\n * ValidationError: When request data is invalid\n * @param org\n * @param requestBody\n * @returns IBLAIPlatformMeta\n * @throws ApiError\n */\n static aiAccountOrgsPlatformMetadataUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-account/orgs/{org}/platform-metadata/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve weekly token usage statistics for an organization.\n *\n * Query Parameters:\n * username (optional): Filter results by specific username\n * session_id (optional): Filter results by specific session ID\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: List of weekly token usage records with prompt and completion tokens\n *\n * Raises:\n * NotFound: When organization is not found or when no sessions match the filters\n * ValidationError: When query parameters are invalid\n * @param org\n * @param sessionId Filter token usage by specific chat session ID\n * @param username Filter token usage by specific username\n * @returns APITokenCost\n * @throws ApiError\n */\n static aiAccountOrgsTokensList(org, sessionId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-account/orgs/{org}/tokens/',\n path: {\n 'org': org\n },\n query: {\n 'session_id': sessionId,\n 'username': username\n }\n });\n }\n /**\n * Enable or disable the use of main LLM credentials for an organization.\n *\n * Request Body:\n * enable (boolean): Set to true to enable main credentials\n * disable (boolean): Set to true to disable main credentials\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: Confirmation message\n *\n * Raises:\n * ValidationError: When neither enable nor disable is specified\n * @param org\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n static aiAccountOrgsUseDefaultLlmKeyCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-account/orgs/{org}/use-default-llm-key/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Enable, disable, or update free trial settings for an organization.\n *\n * Request Body:\n * enable (boolean): Set to true to enable free trial\n * disable (boolean): Set to true to disable free trial\n * metadata (object, optional): Additional metadata for the free trial\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: Confirmation message\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static aiAccountOrgsUseFreeTrialCreate(org) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-account/orgs/{org}/use-free-trial/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Retrieve the status of main LLM credential usage for an organization.\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n * user_id: User identifier\n *\n * Returns:\n * Response: Status of main LLM credential usage\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static aiAccountOrgsUsersDefaultLlmKeyUsageRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-account/orgs/{org}/users/{user_id}/default-llm-key-usage',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve the free trial status for an organization.\n *\n * Args:\n * request: The HTTP request\n * org: Organization key identifier\n *\n * Returns:\n * Response: Free trial status (boolean)\n *\n * Raises:\n * NotFound: When organization is not found\n * @param org\n * @param userId\n * @returns any\n * @throws ApiError\n */\n static aiAccountOrgsUsersFreeTrialRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-account/orgs/{org}/users/{user_id}/free-trial',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n}\n\nclass AiAnalyticsService {\n /**\n * Get active user counts over time.\n *\n * This endpoint provides daily counts of active users (users with known activity)\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily active user counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * An active user is defined as a user with any activity within the past 30 days.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsActiveUsersOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/active-users/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get active user counts on a per-course basis.\n *\n * This endpoint provides counts of active users for each course within\n * the specified date range.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n *\n * Returns:\n * A list of courses with their active user counts.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns ActiveUsersPerCourse\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsActiveUsersPerCourseRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/active-users/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get a list of active users with activity metrics.\n *\n * This endpoint provides a paginated list of users who have had activity\n * within the specified date range.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n * course_id (str, optional): Filter by course ID\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of active users with their activity metrics.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns ActiveUsersList\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsActiveUsersUsersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/active-users/users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Get enrollment or unenrollment counts over time.\n *\n * This endpoint provides daily counts of new enrollments or unenrollments\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * active (bool): Get enrollments when true, unenrollments when false\n *\n * Returns:\n * Daily counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param courseId\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsEnrollmentsCoursesOverTimeRetrieve(courseId, org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/enrollments/courses/{course_id}/over-time',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List users enrolled in a specific course.\n *\n * This endpoint provides a list of users who are enrolled or unenrolled\n * in a specified course.\n *\n * Query Parameters:\n * course_id (str): The course ID to get enrollments for\n * active (bool): Filter for active enrollments when true, inactive when false\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of users with:\n * - Username\n * - Full name\n * - Email\n * - Enrollment timestamp\n * @param courseId\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns EnrollmentsPerUser\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsEnrollmentsCoursesUsersRetrieve(courseId, org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/enrollments/courses/{course_id}/users',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get enrollment or unenrollment counts over time.\n *\n * This endpoint provides daily counts of new enrollments or unenrollments\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * active (bool): Get enrollments when true, unenrollments when false\n *\n * Returns:\n * Daily counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsEnrollmentsOverTimeRetrieve(org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/enrollments/over-time',\n path: {\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List enrollment statistics on a per-course basis.\n *\n * This endpoint provides enrollment counts for all courses, with options\n * to filter for active or inactive enrollments and to include time-based data.\n *\n * Query Parameters:\n * active (bool): Filter for active enrollments when true, inactive when false\n * start_date (str, optional): Start date for time-based filtering (ISO format)\n * end_date (str, optional): End date for time-based filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their enrollment counts and percentages.\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns Enrollments\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsEnrollmentsPerCourseRetrieve(org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/enrollments/per-course',\n path: {\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * List all learners on the platform with aggregated metrics.\n *\n * This endpoint returns a paginated list of all learners with key metrics including:\n * - Enrollment counts\n * - Completion counts\n * - Time spent on platform\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter learners by username, email, or name\n *\n * Returns:\n * A paginated list of learners with their associated metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param search Search string for learner\n * @returns PerlearnerUserList\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsRegisteredUsersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/registered-users/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'search': search\n }\n });\n }\n /**\n * Get registered user counts over time.\n *\n * This endpoint provides daily counts of new user registrations over a\n * specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily registration counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsRegisteredUsersOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/registered-users/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List enrollment statistics on a per-course basis.\n *\n * This endpoint provides enrollment counts for all courses, with options\n * to filter for active or inactive enrollments and to include time-based data.\n *\n * Query Parameters:\n * active (bool): Filter for active enrollments when true, inactive when false\n * start_date (str, optional): Start date for time-based filtering (ISO format)\n * end_date (str, optional): End date for time-based filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their enrollment counts and percentages.\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns Enrollments\n * @throws ApiError\n */\n static aiAnalyticsAudienceOrgsRegisteredUsersPerCourseRetrieve(org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/audience/orgs/{org}/registered-users/per-course',\n path: {\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Retrieve paginated LLM usage costs aggregated by tenant.\n * @param endDate\n * @param startDate\n * @returns CostPerTenant\n * @throws ApiError\n */\n static aiAnalyticsCostsPertenantList(endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/costs/pertenant/',\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`\n }\n });\n }\n /**\n * Get a list of departments with metrics and filtering options.\n *\n * This endpoint provides a paginated list of departments with aggregated metrics\n * about learner performance, course completions, and skill acquisition.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n * program (str, optional): Filter by program\n * pathway (str, optional): Filter by pathway\n * departments (list, optional): Filter by department ids\n * department_id (str, optional): Filter by department id\n * location (str, optional): Filter by location\n * is_enrolled (bool, optional): Filter for departments with enrolled users\n * start_date (date, optional): Filter by learner join date (start range)\n * end_date (date, optional): Filter by learner join date (end range)\n *\n * Returns:\n * A paginated list of departments with comprehensive metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param departments Departments search string. Single string or list of strings. e.g 'sample_department' or `['department', 'another department']`\n * @param endDate Filter by learners date_joined. Start date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param isEnrolled Filter for users who have at least an enro;lment\n * @param length Size of data to return\n * @param location Location search string\n * @param page Page offset\n * @param pathway Pathway string\n * @param program Program search string\n * @param startDate Filter by learners date_joined. Start date. ISO 8601\n * @returns GroupList\n * @throws ApiError\n */\n static aiAnalyticsDepartmentsOrgsRetrieve(org, departmentId, departments, endDate, format = 'json', includeMainPlatform = true, isEnrolled, length, location, page, pathway, program, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/departments/orgs/{org}/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'departments': departments,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'is_enrolled': isEnrolled,\n 'length': length,\n 'location': location,\n 'page': page,\n 'pathway': pathway,\n 'program': program,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get engagement metrics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with engagement metrics\n * including activity counts, time spent, and interaction data.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their engagement metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns EngagementPerCourse\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsActivityRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/activity',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Completion count per user per course across the platform\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCourseCompletionOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/course_completion/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List course completion metrics on a per-course basis.\n *\n * This endpoint provides a paginated table of courses with enrollment and\n * completion statistics for each course.\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Enrollment count\n * - Completion count\n * - Average completion rate\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns CourseCompletionPerCourse\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCourseCompletionPerCourseRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/course_completion/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Average time spent in secs on a per-day basis\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * 3. course_id <optional>\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns AverageOvertime\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesTimeAverageRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/time/average',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent per course in secs in a tree like form\n *\n * Kwargs\n * course_id e.g course-v1:Org+Course4+Run\n *\n * Query Params\n * 1. start_date <optional> e.g 2020-10-01\n * 2. end_date <optional> e.g 2020-10-10\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns TimeDetail\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesTimeDetailRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/time/detail',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Time spent per course in secs on a per-day basis\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * Kwargs\n * 3. course_id\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesTimeOverTimeRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/time/over-time',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent by users in a course\n *\n * Query Params\n * course_id e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns TimeSpentByUsersInCourse\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesTimeUsersRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/time/users',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent within a course in ordered hierarchical format\n *\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * Query Params\n * 3. start_date <optional> e.g 2020-10-01\n * 4. end_date <optional> e.g 2020-10-10\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerLearnerTimeSpentInCourseTree\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesTimeUsersDetailRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/time/users/{user_id}/detail',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent in secs on a per-day basis\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * 3. start_date e.g 2020-10-01\n * 4. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesTimeUsersOverTimeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/time/users/{user_id}/over-time',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get video engagement metrics for a specific course.\n *\n * This endpoint provides detailed video engagement statistics for a single course,\n * including view counts, completion rates, and time spent on videos.\n *\n * Query Parameters:\n * course_id (str): The course ID to get video engagement data for\n *\n * Returns:\n * Detailed video engagement metrics for the specified course.\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns VideosSpecificCourse\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesVideosRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/videos/',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesVideosOverTimeRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/videos/over-time',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get a summary of video watch statistics for a specific course.\n *\n * This endpoint provides a structured summary of video watch data for a course,\n * organized in a tree-like format by course sections and subsections.\n *\n * Query Parameters:\n * course_id (str): The course ID to get video summary for\n *\n * Returns:\n * A hierarchical structure of video watch data for the course, including:\n * - Section and subsection organization\n * - Video identification and metadata\n * - Watch counts and completion rates\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns VideosInCourseSummary\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesVideosSummaryRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/videos/summary',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * List of users' videos completed records for a specific course\n *\n * Kwargs\n * course_id e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns WatchedVideosPerUser\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsCoursesVideosUsersRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/courses/{course_id}/videos/users',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Average time spent by a learner in enrolled courses. Gives a rough estimate of whats the average time\n * that would be spent by a learner in a course\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns AverageOvertime\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsTimeAveragePerlearnerPercourseRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/time/average-perlearner-percourse',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Average time spent in secs on a per-day basis\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * 3. course_id <optional>\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns AverageOvertime\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsTimeAverageWithOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/time/average-with-over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get time spent on the platform over time.\n *\n * This endpoint provides daily time spent values (in seconds) across the\n * platform over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily time spent values over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsTimeOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/time/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get time spent statistics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with the total time\n * spent by users in each course.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Total time spent (in seconds)\n * - Formatted time spent (human-readable)\n * - Percentage of total platform time\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns TimeSpentPerCourse\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsTimePerCourseRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/time/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get video engagement metrics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with video engagement metrics\n * including view counts, completion rates, and time spent on videos.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their video engagement metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns VideoEngagementPerCourse\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsVideosRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/videos/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsEngagementOrgsVideosOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/engagement/orgs/{org}/videos/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Retrieve average message counts per session over time.\n *\n * This endpoint returns data on the average number of messages exchanged in each\n * conversation session within a specified date range, with options for filtering\n * by mentor and aggregating by different time periods (hourly, daily, weekly).\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Time series of average message counts and session totals.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * mentor_id (str): Filter by mentor unique ID.\n * aggregation (str): Time aggregation level (hourly, daily, weekly) - default: daily.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily, weekly)\n * @param groupBy\n * @param mentorId Filter by mentor unique ID\n * @returns MessageStatistics\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersAverageMessagesPerSessionList(endDate, org, startDate, userId, aggregation = 'daily', groupBy = 'day', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/average-messages-per-session/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'group_by': groupBy,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * API viewset for retrieving and filtering chat message history.\n *\n * This viewset provides endpoints for retrieving chat message history\n * within an organization, with extensive filtering options by date range,\n * user, topic, mentor, and sentiment.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param endDate\n * @param mentor\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param sentiment\n * @param startDate\n * @param topics\n * @param userId\n * @returns PaginatedConversationsList\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryList(org, userId, endDate, mentor, page, pageSize, sentiment, startDate, topics) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'page': page,\n 'page_size': pageSize,\n 'sentiment': sentiment,\n 'start_date': startDate,\n 'topics': topics,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for retrieving and filtering chat message history.\n *\n * This viewset provides endpoints for retrieving chat message history\n * within an organization, with extensive filtering options by date range,\n * user, topic, mentor, and sentiment.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param requestBody\n * @param endDate\n * @param mentor\n * @param sentiment\n * @param startDate\n * @param topics\n * @param userId\n * @returns Conversations\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryCreate(org, userId, requestBody, endDate, mentor, sentiment, startDate, topics) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'sentiment': sentiment,\n 'start_date': startDate,\n 'topics': topics,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve filter options for chat message history.\n *\n * This endpoint returns data on available filter options for the chat message\n * history endpoint, including topics, date ranges (weekly or monthly),\n * sentiments, and users who have chat history.\n *\n * Args:\n * request: The HTTP request containing query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Available filter options for chat message history.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n *\n * Query Parameters:\n * monthly_range (bool): Whether to return monthly or weekly date ranges.\n * mentor_id (str): Filter users by those who have chatted with a specific mentor.\n * @param org\n * @param userId\n * @param endDate\n * @param mentorId\n * @param monthlyRange\n * @param startDate\n * @returns ChatHistoryFilterData\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryFilterRetrieve(org, userId, endDate, mentorId, monthlyRange = false, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history-filter/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor_id': mentorId,\n 'monthly_range': monthlyRange,\n 'start_date': startDate\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * API viewset for retrieving and filtering chat message history.\n *\n * This viewset provides endpoints for retrieving chat message history\n * within an organization, with extensive filtering options by date range,\n * user, topic, mentor, and sentiment.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A UUID string identifying this session.\n * @param org\n * @param userId\n * @param endDate\n * @param mentor\n * @param sentiment\n * @param startDate\n * @param topics\n * @param userId\n * @returns Conversations\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryRetrieve(id, org, userId, endDate, mentor, sentiment, startDate, topics) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'sentiment': sentiment,\n 'start_date': startDate,\n 'topics': topics,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for retrieving and filtering chat message history.\n *\n * This viewset provides endpoints for retrieving chat message history\n * within an organization, with extensive filtering options by date range,\n * user, topic, mentor, and sentiment.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A UUID string identifying this session.\n * @param org\n * @param userId\n * @param requestBody\n * @param endDate\n * @param mentor\n * @param sentiment\n * @param startDate\n * @param topics\n * @param userId\n * @returns Conversations\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryUpdate(id, org, userId, requestBody, endDate, mentor, sentiment, startDate, topics) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'sentiment': sentiment,\n 'start_date': startDate,\n 'topics': topics,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for retrieving and filtering chat message history.\n *\n * This viewset provides endpoints for retrieving chat message history\n * within an organization, with extensive filtering options by date range,\n * user, topic, mentor, and sentiment.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A UUID string identifying this session.\n * @param org\n * @param userId\n * @param endDate\n * @param mentor\n * @param sentiment\n * @param startDate\n * @param topics\n * @param userId\n * @param requestBody\n * @returns Conversations\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryPartialUpdate(id, org, userId, endDate, mentor, sentiment, startDate, topics, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'sentiment': sentiment,\n 'start_date': startDate,\n 'topics': topics,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for retrieving and filtering chat message history.\n *\n * This viewset provides endpoints for retrieving chat message history\n * within an organization, with extensive filtering options by date range,\n * user, topic, mentor, and sentiment.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A UUID string identifying this session.\n * @param org\n * @param userId\n * @param endDate\n * @param mentor\n * @param sentiment\n * @param startDate\n * @param topics\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersChatHistoryDestroy(id, org, userId, endDate, mentor, sentiment, startDate, topics) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/chat-history/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'sentiment': sentiment,\n 'start_date': startDate,\n 'topics': topics,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve conversation volume data over time.\n *\n * This endpoint returns data on the number of conversations that occurred\n * within a specified date range, with options for different time aggregations\n * (hourly, daily, weekly). Results can be filtered by mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: User identifier (not used in the implementation).\n *\n * Returns:\n * Response: Time series data of conversation counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * mentor_id (str): Filter by mentor unique ID.\n * aggregation (str): Time aggregation level (hourly, daily, weekly) - default: daily.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily, weekly)\n * @param mentorId Filter by mentor unique ID\n * @returns ConversationVolume\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersConversationList(endDate, org, startDate, userId, aggregation = 'daily', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/conversation/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve a summary of conversation metrics.\n *\n * This endpoint returns aggregated metrics about conversations within an organization,\n * including:\n * - Total number of conversations\n * - Total number of human messages\n * - Total number of AI messages\n *\n * Results can be filtered by mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Summary of conversation metrics.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n *\n * Query Parameters:\n * mentor_id (str): Filter by mentor unique ID.\n * @param org\n * @param userId\n * @param groupBy\n * @param mentorId Filter by mentor unique ID\n * @returns ConversationSummary\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersConversationSummaryRetrieve(org, userId, groupBy = 'day', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/conversation-summary/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'group_by': groupBy,\n 'mentor_id': mentorId\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve the model costs for a tenant\n *\n * Filter parameters for period are start_date and enddate\n *\n * Accessible to tenant Admins only.\n * @param endDate\n * @param org\n * @param startDate\n * @param userId\n * @returns ModelCost\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersCostsModelRetrieve(endDate, org, startDate, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/costs/model/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n }\n });\n }\n /**\n * Retrieve LLM usage costs aggregated by mentor.\n *\n * This endpoint returns data on the total cost of LLM usage for each mentor\n * within a specified date range, with pagination support. The costs are\n * calculated by summing the costs of all observations associated with\n * traces from the mentor's sessions.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Paginated list of mentors with their total LLM usage costs.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * limit (int): Number of results per page - default: 5.\n * offset (int): Offset for pagination - default: 0.\n * @param endDate\n * @param org\n * @param startDate\n * @param userId\n * @returns TenantMentorTraces\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersCostsPermentorRetrieve(endDate, org, startDate, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/costs/permentor/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve LLM usage costs aggregated by user.\n *\n * This endpoint returns data on the total cost of LLM usage for each user\n * within a specified date range, with pagination support. The costs are\n * calculated by summing the costs of all observations associated with\n * traces from the user's sessions.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Paginated list of users with their total LLM usage costs.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * limit (int): Number of results per page - default: 10.\n * offset (int): Offset for pagination - default: 0.\n * @param endDate\n * @param org\n * @param startDate\n * @param userId\n * @returns LLMTracesListResponse\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersCostsPeruserRetrieve(endDate, org, startDate, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/costs/peruser/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve summary statistics about mentors.\n *\n * This endpoint returns aggregated statistics about mentors within an organization,\n * including total mentors, active mentors (mentors with at least one session),\n * questions answered, and ratings.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Summary statistics about mentors.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * @param org\n * @param userId\n * @returns MentorDetailAnalytics\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersMentorDetailRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/mentor-detail/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve summary statistics about mentors.\n *\n * This endpoint returns aggregated statistics about mentors within an organization,\n * including total mentors, active mentors (mentors with at least one session),\n * questions answered, and ratings.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Summary statistics about mentors.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * @param org\n * @param userId\n * @returns MentorDetailAnalytics\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersMentorSummaryRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/mentor-summary/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve LLM usage costs for a specific mentor.\n *\n * This endpoint returns data on the total cost of LLM usage for a specific mentor\n * within a specified date range. The cost is calculated by summing the costs\n * of all observations associated with traces from the tenant's sessions.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * mentor_unique_id: User key identifier.\n *\n * Returns:\n * Response: Total LLM usage cost for the specified tenant.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * @param endDate\n * @param mentorUniqueId\n * @param org\n * @param startDate\n * @param userId\n * @returns Cost\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersMentorsCostRetrieve(endDate, mentorUniqueId, org, startDate, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/mentors/{mentor_unique_id}/cost/',\n path: {\n 'mentor_unique_id': mentorUniqueId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve the most discussed topics over time.\n *\n * This endpoint returns data on the frequency of topics discussed in conversations\n * within a specified date range, with options for filtering by mentor and\n * aggregating by different time periods (hourly, daily, weekly).\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: List of topics with their conversation counts, ordered by frequency.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * mentor_id (str): Filter by mentor unique ID.\n * aggregation (str): Time aggregation level (hourly, daily, weekly) - default: daily.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily, weekly)\n * @param groupBy\n * @param mentorId Filter by mentor unique ID\n * @returns TopicRecord\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersMostDiscussedTopicsList(endDate, org, startDate, userId, aggregation = 'daily', groupBy = 'day', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/most-discussed-topics/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'group_by': groupBy,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve an overview of key analytics metrics.\n *\n * This endpoint returns a comprehensive overview of key analytics metrics\n * for an organization, including:\n * - Conversation volume: Total sessions and month-over-month change\n * - Users: Total unique users and month-over-month change\n * - Topics: Total unique topics and month-over-month change\n * - User ratings: Total ratings and month-over-month change\n *\n * Results can be filtered by mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: User identifier (not used in the implementation).\n *\n * Returns:\n * Response: Overview of key analytics metrics with month-over-month changes.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n *\n * Query Parameters:\n * mentor_id (str): Filter analytics by mentor unique ID.\n * @param org\n * @param userId\n * @param groupBy\n * @param mentorId Filter analytics by mentor unique ID\n * @returns AnalyticsOverview\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersOverviewSummaryRetrieve(org, userId, groupBy = 'day', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/overview-summary/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'group_by': groupBy,\n 'mentor_id': mentorId\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve user rating metrics over time.\n *\n * This endpoint returns data on the number of user ratings submitted\n * within a specified date range, aggregated by day or hour.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Time series of rating counts aggregated by day or hour.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * group_by (str): Aggregation level (day or hour) - default: day.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param groupBy Aggregation level (day or hour)\n * @returns RatingRecord\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersRatingSummaryList(endDate, org, startDate, userId, groupBy = 'day') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/rating-summary/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'group_by': groupBy,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve trends of registered users over time.\n *\n * This endpoint returns data on the number of new user registrations\n * within a specified date range, with options for different time aggregations\n * (hourly, daily, weekly, monthly). The data is backfilled to ensure\n * continuous time series even for periods with zero registrations.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Time series of user registration counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * aggregation (str): Time aggregation level (hourly, daily, weekly, monthly) - default: daily.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily, weekly, monthly)\n * @param groupBy\n * @returns TrendEntry\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersRegisteredUsersTrendList(endDate, org, startDate, userId, aggregation = 'daily', groupBy = 'day') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/registered-users-trend/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'group_by': groupBy,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve user sentiment counts over time.\n *\n * This endpoint returns data on the number of user sentiment entries\n * within a specified time period, aggregated by date.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: User identifier.\n *\n * Returns:\n * Response: Time series data of sentiment counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * ValidationError: If the provided query parameters are invalid.\n *\n * Query Parameters:\n * period (str): Time period filter (today, yesterday, 7d, 30d, 90d) - default: 7d.\n * @param org\n * @param userId\n * @param period\n * @returns UserSentimentCountView\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersSentimentCountList(org, userId, period = '7d') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/sentiment-count/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'period': period\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve LLM usage costs for a specific tenant.\n *\n * This endpoint returns data on the total cost of LLM usage for a specific tenant\n * within a specified date range. The cost is calculated by summing the costs\n * of all observations associated with traces from the tenant's sessions.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Total LLM usage cost for the specified tenant.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * @param endDate\n * @param org\n * @param startDate\n * @param userId\n * @returns Cost\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTenantCostRetrieve(endDate, org, startDate, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/tenant-cost/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve the most engaged students based on chat message count.\n *\n * This endpoint returns data on the top 20 students with the highest number of\n * chat messages, with optional filtering by mentor and date range.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: User identifier (not used in the implementation).\n *\n * Returns:\n * Response: List of top students with their chat message counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * mentor_id (str): Filter by mentor unique ID.\n * start_date (str): Start date for filtering (YYYY-MM-DD).\n * end_date (str): End date for filtering (YYYY-MM-DD).\n * @param org\n * @param userId\n * @param groupBy\n * @returns StudentChatMessage\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTopStudentsByChatMessagesList(org, userId, groupBy = 'day') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/top-students-by-chat-messages/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'group_by': groupBy\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve aggregated topic statistics.\n *\n * This endpoint returns statistical information about topics within an organization,\n * including total topics, new topics, and percentage changes compared to the\n * previous month. Results can be filtered by mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Statistical information about topics.\n *\n * Raises:\n * NotFound: If the specified organization or mentor does not exist.\n *\n * Query Parameters:\n * mentor_id (str): Filter statistics by mentor unique ID.\n * @param org\n * @param userId\n * @param mentorId Filter statistics by mentor unique ID\n * @returns TopicStatisticsResponse\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTopicOverviewRetrieve(org, userId, mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/topic-overview/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'mentor_id': mentorId\n },\n errors: {\n 404: `Organization or mentor not found`\n }\n });\n }\n /**\n * Retrieve paginated statistics about topics.\n *\n * This endpoint returns detailed statistics about topics, including:\n * - Number of conversations related to each topic\n * - Total message count for each topic\n * - Average sentiment of conversations about each topic\n * - Average user rating for conversations about each topic\n *\n * Results can be filtered by mentor and date range, and are paginated.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Paginated list of topic statistics.\n *\n * Raises:\n * NotFound: If the specified organization or mentor does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD).\n * end_date (str): End date for filtering (YYYY-MM-DD).\n * mentor_id (str): Filter by mentor unique ID.\n * page (int): Page number for pagination - default: 1.\n * page_size (int): Number of results per page - default: 20.\n * @param org\n * @param userId\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param groupBy\n * @param mentorId Filter by mentor unique ID\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @returns PaginatedTopicStatisticsResponse\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTopicStatisticsRetrieve(org, userId, endDate, groupBy = 'day', mentorId, page = 1, pageSize = 20, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/topic-statistics/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'group_by': groupBy,\n 'mentor_id': mentorId,\n 'page': page,\n 'page_size': pageSize,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization or mentor not found`\n }\n });\n }\n /**\n * Retrieve a summary of the most frequent topics.\n *\n * This endpoint returns a summary of the top 10 topics discussed in chat sessions,\n * ordered by conversation count. Results can be filtered by mentor and date range.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: A list of the top 10 topics with their conversation counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided date format is invalid.\n *\n * Query Parameters:\n * mentor_id (str): Filter by mentor unique ID.\n * start_date (str): Start date for filtering (YYYY-MM-DD).\n * end_date (str): End date for filtering (YYYY-MM-DD).\n * @param org\n * @param userId\n * @param endDate\n * @param startDate\n * @returns TopicSummaryView\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTopicsSummaryList(org, userId, endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/topics/summary/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid date format`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve the total number of users interacting with mentors over time.\n *\n * This endpoint returns data on the number of unique users who interacted with\n * mentors each day or hour within a specified date range, with optional\n * filtering by specific mentor. If no date range is provided, the last 30 days\n * are used by default.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Time series of unique user counts.\n *\n * Raises:\n * NotFound: If the specified organization or mentor does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - defaults to 30 days ago.\n * end_date (str): End date for filtering (YYYY-MM-DD) - defaults to today.\n * aggregation (str): Time aggregation level (hourly, daily) - default: daily.\n * mentor_id (str): Filter by mentor unique ID.\n * @param org\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily)\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param groupBy\n * @param mentorId Filter by mentor unique ID\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @returns UserChatByPeriod\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTotalUsersByMentorList(org, userId, aggregation = 'daily', endDate, groupBy = 'day', mentorId, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/total-users-by-mentor/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'group_by': groupBy,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization or mentor not found`\n }\n });\n }\n /**\n * Retrieve message data from conversations.\n *\n * This endpoint returns data on messages within conversations, with options\n * for filtering by date range, topics, and mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: User identifier (not used in the implementation).\n *\n * Returns:\n * Response: A list of conversation message data.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * ValidationError: If the provided query parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD).\n * end_date (str): End date for filtering (YYYY-MM-DD).\n * topics (str): Comma-separated list of topics to filter by.\n * mentor (str): Filter by mentor unique ID.\n * @param org\n * @param userId\n * @param endDate\n * @param mentor\n * @param startDate\n * @param topics\n * @returns ConversationMessage\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersTranscriptsList(org, userId, endDate, mentor, startDate, topics) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/transcripts/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor': mentor,\n 'start_date': startDate,\n 'topics': topics\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve daily user engagement metrics with mentors.\n *\n * This endpoint returns data on the number of unique users who interact with\n * mentors each day within a specified date range.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Daily time series of unique user counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param groupBy\n * @returns UserCountRecord\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUsageSummaryList(endDate, org, startDate, userId, groupBy = 'day') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/usage-summary/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'group_by': groupBy,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve user cohort trends over time.\n *\n * This endpoint returns data on the distribution of new versus veteran users\n * over time, with options for different time aggregations and filtering by mentor.\n * New users are those who registered within the specified date range, while\n * veteran users are those who registered before the date range but were active\n * during it.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Time series of new and veteran user counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * aggregation (str): Time aggregation level (hourly, daily, weekly) - default: daily.\n * mentor_id (str): Filter by mentor unique ID.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily, weekly)\n * @param mentorId Filter by mentor unique ID\n * @returns UserTrendByPeriod\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUserCohortsOverTimeRetrieve(endDate, org, startDate, userId, aggregation = 'daily', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/user-cohorts-over-time/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve LLM usage costs for a specific user.\n *\n * This endpoint returns data on the total cost of LLM usage for a specific user\n * within a specified date range. The cost is calculated by summing the costs\n * of all observations associated with traces from the tenant's sessions.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: User key identifier.\n *\n * Returns:\n * Response: Total LLM usage cost for the specified tenant.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * @param endDate\n * @param org\n * @param startDate\n * @param userId\n * @param username\n * @returns Cost\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUserCostRetrieve(endDate, org, startDate, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/user-cost/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate,\n 'username': username\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve aggregated user chat feedback counts.\n *\n * This endpoint returns data on the number of user chat feedback entries\n * within a specified date range, with options for different time aggregations\n * (hourly, daily, weekly). Results can be filtered by mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Time series data of feedback counts.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * mentor_id (str): Filter by mentor unique ID.\n * aggregation (str): Time aggregation level (hourly, daily, weekly) - default: daily.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param aggregation Time aggregation level (hourly, daily, weekly)\n * @param mentorId Filter by mentor unique ID\n * @returns UserChatFeedbackCount\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUserFeedbackList(endDate, org, startDate, userId, aggregation = 'daily', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/user-feedback/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'aggregation': aggregation,\n 'end_date': endDate,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve comprehensive user metrics.\n *\n * This endpoint returns data on various user metrics with month-over-month\n * change calculations:\n * - Registered users: Total users registered on the platform\n * - New users: Users who joined in the current month\n * - Unique users: Distinct users who have had sessions\n * - Veteran users: Users who have been active for at least 6 months\n *\n * Results can be filtered by mentor.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Comprehensive user metrics with month-over-month changes.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n *\n * Query Parameters:\n * mentor_id (str): Filter metrics by mentor unique ID.\n * @param org\n * @param userId\n * @param groupBy\n * @param mentorId Filter metrics by mentor unique ID\n * @returns UserMetricsResponse\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUserMetricsRetrieve(org, userId, groupBy = 'day', mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/user-metrics/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'group_by': groupBy,\n 'mentor_id': mentorId\n },\n errors: {\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve user distribution data for pie charts.\n *\n * This endpoint returns data on the distribution of new versus returning users\n * within a specified date range, including both counts and percentages,\n * suitable for pie chart visualization.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Distribution of new versus returning users with counts and percentages.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * mentor_id (str): Filter by mentor unique ID.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param mentorId Filter by mentor unique ID\n * @returns PieChartData\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUserMetricsPieChartRetrieve(endDate, org, startDate, userId, mentorId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/user-metrics-pie-chart/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'mentor_id': mentorId,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Retrieve user sentiment distribution.\n *\n * This endpoint returns data on the distribution of user sentiments (positive,\n * negative, neutral) within a specified date range, expressed as percentages.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: Sentiment distribution percentages and total sentiment count.\n *\n * Raises:\n * NotFound: If the specified organization does not exist.\n * BadRequest: If the provided parameters are invalid.\n *\n * Query Parameters:\n * start_date (str): Start date for filtering (YYYY-MM-DD) - required.\n * end_date (str): End date for filtering (YYYY-MM-DD) - required.\n * @param endDate End date for filtering (YYYY-MM-DD)\n * @param org\n * @param startDate Start date for filtering (YYYY-MM-DD)\n * @param userId\n * @param groupBy\n * @returns SentimentSummary\n * @throws ApiError\n */\n static aiAnalyticsOrgsUsersUserSentimentRetrieve(endDate, org, startDate, userId, groupBy = 'day') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/orgs/{org}/users/{user_id}/user-sentiment/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'group_by': groupBy,\n 'start_date': startDate\n },\n errors: {\n 400: `Invalid parameters`,\n 404: `Organization not found`\n }\n });\n }\n /**\n * Get active user counts over time.\n *\n * This endpoint provides daily counts of active users (users with known activity)\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily active user counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * An active user is defined as a user with any activity within the past 30 days.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsOverviewOrgsActiveUsersRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/overview/orgs/{org}/active-users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static aiAnalyticsOverviewOrgsAverageGradeRetrieve(org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/overview/orgs/{org}/average-grade',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get course completion summary metrics over time.\n *\n * This endpoint provides completion statistics across the platform over a\n * specified time period, including daily completion counts and overall metrics.\n *\n * Query Parameters:\n * start_date (str): Start date for the time range (ISO format)\n * end_date (str): End date for the time range (ISO format)\n *\n * Returns:\n * Completion data including:\n * - Daily completion counts over time\n * - Total unique user count\n * - Total completion count\n * - Completion percentage\n * - Change metrics compared to previous periods\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns CourseCompletionSummaryOvertime\n * @throws ApiError\n */\n static aiAnalyticsOverviewOrgsCoursesCompletionsRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/overview/orgs/{org}/courses/completions',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List all learners on the platform with aggregated metrics.\n *\n * This endpoint returns a paginated list of all learners with key metrics including:\n * - Enrollment counts\n * - Completion counts\n * - Time spent on platform\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter learners by username, email, or name\n *\n * Returns:\n * A paginated list of learners with their associated metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param search Search string for learner\n * @returns PerlearnerUserList\n * @throws ApiError\n */\n static aiAnalyticsOverviewOrgsLearnersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/overview/orgs/{org}/learners',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'search': search\n }\n });\n }\n /**\n * Get time spent statistics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with the total time\n * spent by users in each course.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Total time spent (in seconds)\n * - Formatted time spent (human-readable)\n * - Percentage of total platform time\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns TimeSpentPerCourse\n * @throws ApiError\n */\n static aiAnalyticsOverviewOrgsMostActiveCoursesRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/overview/orgs/{org}/most-active-courses',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get registered user counts over time.\n *\n * This endpoint provides daily counts of new user registrations over a\n * specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily registration counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static aiAnalyticsOverviewOrgsRegisteredUsersRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/overview/orgs/{org}/registered-users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsCoursesGradingAverageRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/courses/{course_id}/grading/average',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Returns average course grade and grade cuttoff\n *\n * e.g\n * ```\n * {\n * \"data\": {\n * \"grade_cutoffs\": {\n * \"A\": 90,\n * \"B\": 80,\n * \"C\": 70,\n * },\n * \"average_grade\": 50.0,\n * }\n * }\n * ```\n *\n * Kwargs\n * course_id\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns AvgCourseGradeWithCutoff\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsCoursesGradingAverageWithCutoffRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/courses/{course_id}/grading/average-with-cutoff',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Grading summary for the entire course overview in a tree-like format\n *\n * Kwargs\n * course_id <required>\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns CourseGradingDetail\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsCoursesGradingDetailRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/courses/{course_id}/grading/detail',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Grading information per enrolled user in a course\n *\n * Kwargs\n * course_id <required>\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns GradingPerUser\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsCoursesGradingPerLearnerRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/courses/{course_id}/grading/per-learner',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Returns average grades across various assignment types in a course\n *\n * Query Params\n * course_id\n *\n * Returns:\n * dict\n * {\n * \"data\": [\n * {\n * \"assignment_type': <str>,\n * \"weight\": <float>,\n * \"average_weighted_grade\": <float>,\n * \"average_section_grade\": <float>\n * }, ...\n * ]\n * }\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns CourseGradeSummary\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsCoursesGradingSummaryRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/courses/{course_id}/grading/summary',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsGradingAverageRetrieve(org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/grading/average',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * List grade-related performance data for all courses.\n *\n * This endpoint provides a comprehensive view of grade performance across\n * courses, including enrollment counts, pass rates, and average grades.\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Enrollment count\n * - Number of students who passed\n * - Average grade\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns PerformanceGradesPerCourse\n * @throws ApiError\n */\n static aiAnalyticsPerformanceOrgsGradingPerCourseRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/performance/orgs/{org}/grading/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Enhanced API endpoint for listing learners with comprehensive filtering.\n *\n * This endpoint provides a paginated list of learners with detailed metrics\n * and supports advanced filtering options. It uses DM token authentication\n * and respects department-based access controls.\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter by username, email, or full name\n * program (str): Filter by program\n * location (str): Filter by location\n * is_enrolled (bool): Filter for users with enrollments\n * platform (str): Filter by platform\n * start_date (date): Filter by join date (start range)\n * end_date (date): Filter by join date (end range)\n *\n * Returns:\n * A paginated list of learners with comprehensive metrics including:\n * - Course enrollments and completions\n * - Time spent on platform\n * - Pathway progress\n * - Certificate and skill information\n * - Location data\n *\n * Access Control:\n * - Platform admins can see all learners\n * - Department admins can only see learners in their departments\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate Learner date_joined end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param isEnrolled Filter for users who have at least an enrollment\n * @param length Size of data to return\n * @param location Location search string\n * @param page Page offset\n * @param platform Platform search string\n * @param program Program search string\n * @param search Search string for learner. email, username or full name\n * @param startDate Learner date_joined start date. ISO 8601\n * @returns NewPerLearnerList\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsLearnersRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, isEnrolled, length, location, page, platform, program, search, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/learners',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'is_enrolled': isEnrolled,\n 'length': length,\n 'location': location,\n 'page': page,\n 'platform': platform,\n 'program': program,\n 'search': search,\n 'start_date': startDate\n }\n });\n }\n /**\n * List all learners on the platform with aggregated metrics.\n *\n * This endpoint returns a paginated list of all learners with key metrics including:\n * - Enrollment counts\n * - Completion counts\n * - Time spent on platform\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter learners by username, email, or name\n *\n * Returns:\n * A paginated list of learners with their associated metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param search Search string for learner\n * @returns PerlearnerUserList\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'search': search\n }\n });\n }\n /**\n * Provides information on user enrollments\n *\n * Params\n * user_id e.g developer@ibleducation.com| developer\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns ActivityAPI\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersActivityRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/activity/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Provides about a learner current grade in a course with the course cut\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerGradeWithCutOff\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesGradingCutoffsRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/grading/cutoffs',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns DetailedGradeView\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesGradingDetailRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/grading/detail',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Query Params\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerGradeSummary\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesGradingSummaryRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/grading/summary',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Average of days with atleast an activity within ENGAGEMENT_INDEX_PERIOD consecutive days for a learner in a course\n * @param courseId\n * @param org\n * @param userId\n * @returns Value\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesOverviewEngagementIndexRetrieve(courseId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/engagement-index',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Provides about a learner current grade in a course with the course cut\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerGradeWithCutOff\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesOverviewGradeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/grade',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Evaluates performance index for platform, per course, per user and per user-per course\n *\n * Query Params\n * course_id <optional>\n * learner_id <optional>\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Value\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesOverviewPerformanceIndexRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/performance-index',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent within a course in secs on a per-day basis\n *\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * Query Params\n * 3. start_date e.g 2020-10-01\n * 4. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesOverviewTimeOverTimeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/time/over-time',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List of videos within a course a learner has watched\n *\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n *\n * Default result when no query param is added is [], 0\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerLearnerCourseVideosWatched\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesVideosRetrieve(courseId, org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/videos',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersCoursesVideosOverTimeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/videos/over-time',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Summary Grading Information for a learner on a per-enrollment basis\n *\n * Query Params\n * 1. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerlearnerGradingPerCourseAPI\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersGradesPerCourseRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/grades/per-course',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Retrieve detailed information about a specific learner.\n *\n * This endpoint returns personal and activity information about a learner,\n * including profile data, activity metrics, and location information.\n *\n * Path Parameters:\n * user_id (str): The username or email of the learner\n *\n * Query Parameters:\n * meta (bool): Include additional analytics information when true\n *\n * Returns:\n * Detailed learner information including:\n * - Profile data (username, name, email)\n * - Registration and activity dates\n * - Activity metrics (assessments, time spent, videos watched)\n * - Location and browser information (when available)\n *\n * Access Control:\n * - Platform admins can access any learner\n * - Learners can access their own information\n * - Department admins can access learners in their departments\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param meta Include extra analytics information?\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param search\n * @returns LearnerInformationAPI\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersInfoRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true, meta = 'n', search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/info',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'meta': meta,\n 'search': search\n }\n });\n }\n /**\n * Last course accessed by a learner, includes upto unit information as well\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerLearnerLastAccess\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersLastAccessRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/last-access',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Average of days with atleast an activity within ENGAGEMENT_INDEX_PERIOD consecutive days\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Value\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersOverviewEngagementIndexRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/overview/engagement-index',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersOverviewGradesAverageRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/overview/grades/average',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Evaluates performance index for platform, per course, per user and per user-per course\n *\n * Query Params\n * course_id <optional>\n * learner_id <optional>\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Value\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersOverviewPerformanceIndexRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/overview/performance-index',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent in secs on a per-day basis\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * 3. start_date e.g 2020-10-01\n * 4. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersOverviewTimeOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/overview/time/over-time',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersVideosOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/videos/over-time',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Summary Videos watched data for a learner per enrollment\n *\n * Query Params\n * 1. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerEngagementVideosWatchedPerCourse\n * @throws ApiError\n */\n static aiAnalyticsPerlearnerOrgsUsersVideosPerCourseRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/perlearner/orgs/{org}/users/{user_id}/videos/per-course',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get a list of user groups with metrics and filtering options.\n *\n * This endpoint provides a paginated list of user groups with aggregated metrics\n * about learner performance, course completions, and skill acquisition.\n *\n * This endpoint uses DM token authentication and respects department-based\n * access controls.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n * program (str, optional): Filter by program\n * pathway (str, optional): Filter by pathway\n * groups (list, optional): Filter by group names\n * location (str, optional): Filter by location\n * is_enrolled (bool, optional): Filter for groups with enrolled users\n * start_date (date, optional): Filter by learner join date (start range)\n * end_date (date, optional): Filter by learner join date (end range)\n *\n * Returns:\n * A paginated list of user groups with comprehensive metrics.\n *\n * Access Control:\n * - Platform admins can see all groups\n * - Department admins can only see groups in their departments\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate Filter by learners date_joined. Start date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param groups Groups search string. Single string or list of strings. e.g 'sample_group' or `['group', 'another group']`\n * @param includeMainPlatform Include main platform data\n * @param isEnrolled Filter for users who have at least an enrollment\n * @param length Size of data to return\n * @param location Location search string\n * @param page Page offset\n * @param pathway Pathway string\n * @param program Program search string\n * @param startDate Filter by learners date_joined. Start date. ISO 8601\n * @returns GroupList\n * @throws ApiError\n */\n static aiAnalyticsUserGroupsOrgsRetrieve(org, departmentId, endDate, format = 'json', groups, includeMainPlatform = true, isEnrolled, length, location, page, pathway, program, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-analytics/user-groups/orgs/{org}/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'groups': groups,\n 'include_main_platform': includeMainPlatform,\n 'is_enrolled': isEnrolled,\n 'length': length,\n 'location': location,\n 'page': page,\n 'pathway': pathway,\n 'program': program,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass AiBotService {\n /**\n * Create modify and update bot information for a specific tenant.\n * @param org\n * @returns Bot\n * @throws ApiError\n */\n static aiBotV1BotsBotList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param org\n * @param requestBody\n * @returns BotCreate\n * @throws ApiError\n */\n static aiBotV1BotsBotCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/bot/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create slash commands for a specific bot\n * eg. /iblai-baseline\n * @param org\n * @returns BotCommand\n * @throws ApiError\n */\n static aiBotV1BotsBotCommandsList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot-commands/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Create slash commands for a specific bot\n * eg. /iblai-baseline\n * @param org\n * @param requestBody\n * @returns BotCommand\n * @throws ApiError\n */\n static aiBotV1BotsBotCommandsCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/bot-commands/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create slash commands for a specific bot\n * eg. /iblai-baseline\n * @param id A unique integer value identifying this bot command.\n * @param org\n * @returns BotCommand\n * @throws ApiError\n */\n static aiBotV1BotsBotCommandsRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot-commands/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create slash commands for a specific bot\n * eg. /iblai-baseline\n * @param id A unique integer value identifying this bot command.\n * @param org\n * @param requestBody\n * @returns BotCommand\n * @throws ApiError\n */\n static aiBotV1BotsBotCommandsUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/bot-commands/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create slash commands for a specific bot\n * eg. /iblai-baseline\n * @param id A unique integer value identifying this bot command.\n * @param org\n * @param requestBody\n * @returns BotCommand\n * @throws ApiError\n */\n static aiBotV1BotsBotCommandsPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot-commands/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create slash commands for a specific bot\n * eg. /iblai-baseline\n * @param id A unique integer value identifying this bot command.\n * @param org\n * @returns void\n * @throws ApiError\n */\n static aiBotV1BotsBotCommandsDestroy(id, org) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-bot/v1/bots/{org}/bot-commands/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns Bot\n * @throws ApiError\n */\n static aiBotV1BotsBotRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns BotCreate\n * @throws ApiError\n */\n static aiBotV1BotsBotUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns BotCreate\n * @throws ApiError\n */\n static aiBotV1BotsBotPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns void\n * @throws ApiError\n */\n static aiBotV1BotsBotDestroy(id, org) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns DiscordConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigDiscordRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/discord/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns DiscordConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigDiscordPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/discord/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns SlackConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigSlackRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/slack/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns SlackConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigSlackUpdateCreate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/slack/update/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns SlackConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigSlackUpdateUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/slack/update/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns SlackConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigSlackUpdatePartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/slack/update/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns TeamsConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigTeamsRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/teams/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns TeamsConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigTeamsUpdateCreate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/teams/update/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns TeamsConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigTeamsUpdateUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/teams/update/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns TeamsConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigTeamsUpdatePartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/teams/update/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns WebexConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigWebexRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/webex/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns WebexConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigWebexPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/webex/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @returns WhatsappConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotConfigWhatsappRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/config/whatsapp/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns WhatsappConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotWhatsappConfigUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/whatsapp-config/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create modify and update bot information for a specific tenant.\n * @param id A unique integer value identifying this bot.\n * @param org\n * @param requestBody\n * @returns WhatsappConfig\n * @throws ApiError\n */\n static aiBotV1BotsBotWhatsappConfigPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/bot/{id}/whatsapp-config/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup discord user id linkage with discord bots\n * this will be used to authenticate the user when interracting with discord bots.\n * the user id can be copied from the discord app after tapping on the user profile.\n * @param org\n * @returns DiscordUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsDiscordUserConfigList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/discord-user-config/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Setup discord user id linkage with discord bots\n * this will be used to authenticate the user when interracting with discord bots.\n * the user id can be copied from the discord app after tapping on the user profile.\n * @param org\n * @param requestBody\n * @returns DiscordUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsDiscordUserConfigCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/discord-user-config/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup discord user id linkage with discord bots\n * this will be used to authenticate the user when interracting with discord bots.\n * the user id can be copied from the discord app after tapping on the user profile.\n * @param id A unique integer value identifying this discord user config.\n * @param org\n * @returns DiscordUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsDiscordUserConfigRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/discord-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Setup discord user id linkage with discord bots\n * this will be used to authenticate the user when interracting with discord bots.\n * the user id can be copied from the discord app after tapping on the user profile.\n * @param id A unique integer value identifying this discord user config.\n * @param org\n * @param requestBody\n * @returns DiscordUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsDiscordUserConfigUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/discord-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup discord user id linkage with discord bots\n * this will be used to authenticate the user when interracting with discord bots.\n * the user id can be copied from the discord app after tapping on the user profile.\n * @param id A unique integer value identifying this discord user config.\n * @param org\n * @param requestBody\n * @returns DiscordUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsDiscordUserConfigPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/discord-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup discord user id linkage with discord bots\n * this will be used to authenticate the user when interracting with discord bots.\n * the user id can be copied from the discord app after tapping on the user profile.\n * @param id A unique integer value identifying this discord user config.\n * @param org\n * @returns void\n * @throws ApiError\n */\n static aiBotV1BotsDiscordUserConfigDestroy(id, org) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-bot/v1/bots/{org}/discord-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Setup slack username and domain linkage with slack bots\n * this will be used to authenticate the user when interracting with slack bots.\n * @param org\n * @returns SlackUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsSlackUserConfigList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/slack-user-config/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Setup slack username and domain linkage with slack bots\n * this will be used to authenticate the user when interracting with slack bots.\n * @param org\n * @param requestBody\n * @returns SlackUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsSlackUserConfigCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/slack-user-config/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup slack username and domain linkage with slack bots\n * this will be used to authenticate the user when interracting with slack bots.\n * @param id A unique integer value identifying this slack user config.\n * @param org\n * @returns SlackUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsSlackUserConfigRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/slack-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Setup slack username and domain linkage with slack bots\n * this will be used to authenticate the user when interracting with slack bots.\n * @param id A unique integer value identifying this slack user config.\n * @param org\n * @param requestBody\n * @returns SlackUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsSlackUserConfigUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/slack-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup slack username and domain linkage with slack bots\n * this will be used to authenticate the user when interracting with slack bots.\n * @param id A unique integer value identifying this slack user config.\n * @param org\n * @param requestBody\n * @returns SlackUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsSlackUserConfigPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/slack-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup slack username and domain linkage with slack bots\n * this will be used to authenticate the user when interracting with slack bots.\n * @param id A unique integer value identifying this slack user config.\n * @param org\n * @returns void\n * @throws ApiError\n */\n static aiBotV1BotsSlackUserConfigDestroy(id, org) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-bot/v1/bots/{org}/slack-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Setup phone number linkage with whatsapp bots\n * This phone number will be used to authenticate and allow access to whatsapp bots.\n * @param org\n * @returns WhatsappUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsWhatsappUserConfigList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/whatsapp-user-config/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Setup phone number linkage with whatsapp bots\n * This phone number will be used to authenticate and allow access to whatsapp bots.\n * @param org\n * @param requestBody\n * @returns WhatsappUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsWhatsappUserConfigCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/{org}/whatsapp-user-config/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup phone number linkage with whatsapp bots\n * This phone number will be used to authenticate and allow access to whatsapp bots.\n * @param id A unique integer value identifying this whatsapp user config.\n * @param org\n * @returns WhatsappUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsWhatsappUserConfigRetrieve(id, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/{org}/whatsapp-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Setup phone number linkage with whatsapp bots\n * This phone number will be used to authenticate and allow access to whatsapp bots.\n * @param id A unique integer value identifying this whatsapp user config.\n * @param org\n * @param requestBody\n * @returns WhatsappUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsWhatsappUserConfigUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-bot/v1/bots/{org}/whatsapp-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup phone number linkage with whatsapp bots\n * This phone number will be used to authenticate and allow access to whatsapp bots.\n * @param id A unique integer value identifying this whatsapp user config.\n * @param org\n * @param requestBody\n * @returns WhatsappUserConfig\n * @throws ApiError\n */\n static aiBotV1BotsWhatsappUserConfigPartialUpdate(id, org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-bot/v1/bots/{org}/whatsapp-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Setup phone number linkage with whatsapp bots\n * This phone number will be used to authenticate and allow access to whatsapp bots.\n * @param id A unique integer value identifying this whatsapp user config.\n * @param org\n * @returns void\n * @throws ApiError\n */\n static aiBotV1BotsWhatsappUserConfigDestroy(id, org) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-bot/v1/bots/{org}/whatsapp-user-config/{id}/',\n path: {\n 'id': id,\n 'org': org\n }\n });\n }\n /**\n * Webhook endpoint to receive and process discord messages.\n * @param name\n * @param org\n * @param requestBody\n * @returns DiscordWebhook\n * @throws ApiError\n */\n static aiBotV1BotsWebhooksDiscordCreate(name, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/webhooks/{org}/discord/{name}/',\n path: {\n 'name': name,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param name\n * @param org\n * @param requestBody\n * @returns SlackWebhook\n * @throws ApiError\n */\n static aiBotV1BotsWebhooksSlackCreate(name, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/webhooks/{org}/slack/{name}/',\n path: {\n 'name': name,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param name\n * @param org\n * @param requestBody\n * @returns TeamsWebhook\n * @throws ApiError\n */\n static aiBotV1BotsWebhooksTeamsCreate(name, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/webhooks/{org}/teams/{name}/',\n path: {\n 'name': name,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Webhook endpoint to receive and process discord messages.\n * @param name\n * @param org\n * @param requestBody\n * @returns WebexWebhook\n * @throws ApiError\n */\n static aiBotV1BotsWebhooksWebexCreate(name, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/webhooks/{org}/webex/{name}/',\n path: {\n 'name': name,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Respond to whatsapp's webhook challenge.\n * Parameters Required include the tenant key (org) and the name of the bot: (name)\n * @param name\n * @param org\n * @returns WhatAppWebHook\n * @throws ApiError\n */\n static aiBotV1BotsWebhooksWhatsappRetrieve(name, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-bot/v1/bots/webhooks/{org}/whatsapp/{name}/',\n path: {\n 'name': name,\n 'org': org\n }\n });\n }\n /**\n * Accept and process webhook events from whatsapp.\n * @param name\n * @param org\n * @param requestBody\n * @returns WhatAppWebHook\n * @throws ApiError\n */\n static aiBotV1BotsWebhooksWhatsappCreate(name, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-bot/v1/bots/webhooks/{org}/whatsapp/{name}/',\n path: {\n 'name': name,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n}\n\nclass AiFinetuningService {\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param username\n * @param dateCreated\n * @param numDataPoints\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param retryAttempts\n * @param search A search term.\n * @param status * `pending` - Pending\n * * `processing` - Processing\n * * `completed` - Completed\n * * `failed` - Failed\n * @returns PaginatedDataSetList\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserDatasetsList(org, username, dateCreated, numDataPoints, ordering, page, pageSize, retryAttempts, search, status) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/datasets/',\n path: {\n 'org': org,\n 'username': username\n },\n query: {\n 'date_created': dateCreated,\n 'num_data_points': numDataPoints,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'retry_attempts': retryAttempts,\n 'search': search,\n 'status': status\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param username\n * @param requestBody\n * @returns DataSetCreate\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserDatasetsCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/datasets/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this data set.\n * @param org\n * @param username\n * @returns DataSet\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserDatasetsRetrieve(id, org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/datasets/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this data set.\n * @param org\n * @param username\n * @param requestBody\n * @returns DataSet\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserDatasetsUpdate(id, org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/datasets/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this data set.\n * @param org\n * @param username\n * @param requestBody\n * @returns DataSet\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserDatasetsPartialUpdate(id, org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/datasets/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this data set.\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserDatasetsDestroy(id, org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/datasets/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param username\n * @param baseModelName\n * @param dataset\n * @param dateCreated\n * @param fineTunedModel\n * @param lastModified\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param preprocessDataset\n * @param provider * `openai` - Openai\n * @param search A search term.\n * @param status * `pending` - Pending\n * * `processing` - Processing\n * * `completed` - Completed\n * * `cancelled` - Cancelled\n * * `failed` - Failed\n * @returns PaginatedTrainingList\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsList(org, username, baseModelName, dataset, dateCreated, fineTunedModel, lastModified, ordering, page, pageSize, preprocessDataset, provider, search, status) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/',\n path: {\n 'org': org,\n 'username': username\n },\n query: {\n 'base_model_name': baseModelName,\n 'dataset': dataset,\n 'date_created': dateCreated,\n 'fine_tuned_model': fineTunedModel,\n 'last_modified': lastModified,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'preprocess_dataset': preprocessDataset,\n 'provider': provider,\n 'search': search,\n 'status': status\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param username\n * @param requestBody\n * @returns TrainingCreate\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this training.\n * @param org\n * @param username\n * @returns Training\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsRetrieve(id, org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this training.\n * @param org\n * @param username\n * @param requestBody\n * @returns TrainingCreate\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsUpdate(id, org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this training.\n * @param org\n * @param username\n * @param requestBody\n * @returns TrainingCreate\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsPartialUpdate(id, org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param id A UUID string identifying this training.\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsDestroy(id, org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * Retrieves a paginated list of completed fine-tuned models, excluding those without a fine-tuned model.\n * Filtering and pagination is allowed.\n *\n * NB: This is only a helper endpoint. The same functionality can be achieved with the appropriate filters using the\n * training list endpoint.\n * Returns:\n * Response: A paginated response containing the serialized fine-tuned models.\n * @param org\n * @param username\n * @returns Training\n * @throws ApiError\n */\n static aiFinetuningV1OrgUserTrainingsFinetunedModelsRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-finetuning/v1/org/{org}/user/{username}/trainings/finetuned-models/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n}\n\nclass AiIndexService {\n /**\n * Retrieve details of a specific document embedding.\n *\n * This endpoint returns detailed information about a specific\n * document embedding identified by its ID.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n * document_id: The ID of the document embedding to retrieve.\n *\n * Returns:\n * Response: Detailed information about the document embedding.\n *\n * Raises:\n * NotFound: If the specified document embedding does not exist.\n * @param documentId\n * @param org\n * @param userId\n * @returns RetrieverDocumentEmbedding\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsRetrieve(documentId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/{document_id}/',\n path: {\n 'document_id': documentId,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Document not found`\n }\n });\n }\n /**\n * Update a specific document embedding.\n *\n * This endpoint allows updating various properties of a document embedding,\n * including its name, type, pathway, and training status.\n *\n * Args:\n * request: The HTTP request containing the updated document data.\n * org: Organization key identifier.\n * document_id: The ID of the document embedding to update.\n *\n * Returns:\n * Response: The updated document embedding information.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the specified document embedding does not exist.\n * @param documentId\n * @param org\n * @param userId\n * @param formData\n * @returns RetrieverDocumentEmbedding\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsUpdate(documentId, org, userId, formData) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/{document_id}/',\n path: {\n 'document_id': documentId,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid request data`,\n 404: `Document not found`\n }\n });\n }\n /**\n * Delete a specific document embedding.\n *\n * This endpoint removes a document embedding from the system,\n * including untraining it from any associated pathways.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n * document_id: The ID of the document embedding to delete.\n *\n * Returns:\n * Response: An empty response with a 204 status code if successful.\n *\n * Raises:\n * NotFound: If the specified document embedding does not exist.\n * @param documentId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsDestroy(documentId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/{document_id}/',\n path: {\n 'document_id': documentId,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Document not found`\n }\n });\n }\n /**\n * Train a graph-based document through a worker process.\n *\n * This endpoint queues graph-based documents for training through a\n * specialized worker process that handles knowledge graph processing.\n *\n * Args:\n * request: The HTTP request containing the document information.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: A confirmation that the document was queued for training,\n * including a task ID for tracking the progress.\n *\n * Raises:\n * ValidationError: If the request data is invalid.\n * BadRequest: If there was an error processing the document.\n * @param org\n * @param userId\n * @param formData\n * @returns TrainDocumentViewResponse\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsGraphTrainCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/graph-train/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid request data or document processing error`\n }\n });\n }\n /**\n * Retrieve a list of document embeddings for a specific pathway.\n *\n * This endpoint returns a paginated list of all document embeddings\n * that have been created for the specified pathway within the organization.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n * pathway: The pathway to retrieve document embeddings for.\n *\n * Returns:\n * Response: A paginated list of document embeddings for the pathway.\n * @param org\n * @param pathway\n * @param userId\n * @returns RetrieverDocumentEmbedding\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsPathwaysList(org, pathway, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/pathways/{pathway}/',\n path: {\n 'org': org,\n 'pathway': pathway,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve resource documents similar to the given query.\n *\n * This endpoint performs a semantic search to find documents that are\n * relevant to the provided query within the specified pathway.\n *\n * Args:\n * request: The HTTP request containing the search query.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: A list of documents relevant to the search query.\n *\n * Raises:\n * ValidationError: If the request data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns RetrieverResponseSearch\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsSearchCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/search/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`\n }\n });\n }\n /**\n * Retrieve document sources related to a given query.\n *\n * This endpoint performs a semantic search to find document sources\n * that are relevant to the provided query within the specified pathway,\n * and returns them along with confidence levels.\n *\n * Args:\n * request: The HTTP request containing the search query.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: A list of document sources with confidence levels.\n *\n * Raises:\n * ValidationError: If the request data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns RetrieverRequestSearchDocument\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsSourcesCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/sources/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`\n }\n });\n }\n /**\n * Check the status of a document training task.\n *\n * This endpoint retrieves the current status of an asynchronous\n * document training task that was previously initiated.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n * task_id: The ID of the training task to check.\n *\n * Returns:\n * Response: The current status of the document training task,\n * which can be \"pending\", \"completed\", or \"failed\".\n * @param org\n * @param taskId\n * @param userId\n * @returns CheckDocumentTrainingStatus\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsTasksRetrieve(org, taskId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/tasks/{task_id}/',\n path: {\n 'org': org,\n 'task_id': taskId,\n 'user_id': userId\n }\n });\n }\n /**\n * Train a document through a worker process.\n *\n * This endpoint queues larger documents for training through a worker\n * process, which is more suitable for handling documents that would\n * take too long to process directly.\n *\n * Args:\n * request: The HTTP request containing the document information.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: A confirmation that the document was queued for training,\n * including a task ID for tracking the progress.\n *\n * Raises:\n * ValidationError: If the request data is invalid.\n * BadRequest: If there was an error processing the document.\n * @param org\n * @param userId\n * @param formData\n * @returns TrainDocumentViewResponse\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsTrainCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/train/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid request data`\n }\n });\n }\n /**\n * Train a document directly without using a worker.\n *\n * This endpoint is designed for training smaller documents directly\n * without queuing them through a worker process. For larger documents,\n * use the TrainDocumentView endpoint instead.\n *\n * Args:\n * request: The HTTP request containing the document information.\n * org: Organization key identifier.\n *\n * Returns:\n * Response: A confirmation that the document was trained successfully.\n *\n * Raises:\n * ValidationError: If the request data is invalid.\n * BadRequest: If the document training failed.\n * @param org\n * @param userId\n * @param formData\n * @returns RetreiverTrainViewResponse\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsTrainRetrieverCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/train/retriever/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid request data or training failed`\n }\n });\n }\n /**\n * Description:\n * Submit a document file in a chat session. Checks file type, size, and ensures the session exists, then processes the file.\n * Process document for use in a specific chat session.\n * which will be processed and made available for the AI to reference\n * when responding to queries in that session.\n *\n * Methods:\n * - POST: Submits a document or media file for training within a specified chat session.\n *\n * Parameters:\n * - org (str):\n * - session_id (str): UUID of the chat session for which the document is being submitted.\n * - *args, **kwargs: Additional arguments.\n * - file (file): Multipart file input.\n *\n * Returns:\n * - POST: Returns a JSON message with the result of the upload process. Response code 200 on success.\n * {\n * \"message\": \"File processed.\"\n * }\n *\n * Error Responses:\n * - 400 Bad Request:\n * - \"File field is required\" if the 'file' parameter is missing.\n * - \"invalid file object\" if the file object is not valid.\n * - Specific error message if an exception occurs while saving to Redis.\n * - 404 Not Found:\n * - \"Session not found\" if the provided session_id does not match any existing session.\n * - 413 Request Entity Too Large:\n * - \"file is too large\" including specific limits for document and media files if the file exceeds size limits.\n *\n * Access Control:\n * Requires authentication with a Bearer token in the Authorization header. The user associated with the session must exist and be authorized for the request.\n * @param org\n * @param sessionId\n * @param userId\n * @param formData\n * @returns TrainChatSessionDocumentView\n * @throws ApiError\n */\n static aiIndexOrgsUsersDocumentsTrainSessionsCreate(org, sessionId, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/documents/train/sessions/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid file or processing error`,\n 413: `File too large`\n }\n });\n }\n /**\n * Retrieve detailed information about a specific scraped resource.\n *\n * This endpoint returns the complete scraped data for a specific resource\n * identified by its ID.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n * user_id: The username of the user associated with the resource.\n * resource_id: The ID of the resource to retrieve.\n *\n * Returns:\n * Response: The complete scraped data for the specified resource.\n *\n * Raises:\n * NotFound: If the specified resource data does not exist.\n * @param org\n * @param resourceId\n * @param userId\n * @returns ResourceScrappedData\n * @throws ApiError\n */\n static aiIndexOrgsUsersResourceDataScrappedRetrieve(org, resourceId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/resource/{resource_id}/data/scrapped/',\n path: {\n 'org': org,\n 'resource_id': resourceId,\n 'user_id': userId\n },\n errors: {\n 404: `Resource data not found`\n }\n });\n }\n /**\n * Retrieve and filter scraped data from resources.\n *\n * This endpoint returns a list of scraped data from resources associated\n * with the specified user, with optional filtering based on query parameters.\n *\n * Args:\n * request: The HTTP request containing filter query parameters.\n * org: Organization key identifier.\n * user_id: The username of the user whose resources to retrieve.\n *\n * Returns:\n * Response: A list of scraped resource data matching the filter criteria.\n *\n * Raises:\n * BadRequest: If the username is invalid or query parameters are incorrect.\n * @param org\n * @param userId\n * @param isArchive\n * @param isLike\n * @param isVideo\n * @param searchKey\n * @returns ResourceScrappedData\n * @throws ApiError\n */\n static aiIndexOrgsUsersResourceDataScrappedList(org, userId, isArchive, isLike, isVideo, searchKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-index/orgs/{org}/users/{user_id}/resource/data/scrapped/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'is_archive': isArchive,\n 'is_like': isLike,\n 'is_video': isVideo,\n 'search_key': searchKey\n },\n errors: {\n 400: `Invalid username or query parameters`\n }\n });\n }\n /**\n * Receive and process file scan status from external security scanning services.\n *\n * This webhook endpoint receives scan results for files that have been submitted\n * for security scanning. It processes the results asynchronously and determines\n * if the files are safe for further processing.\n *\n * Args:\n * request: The HTTP request containing scan result data.\n *\n * Returns:\n * Response: A confirmation that the scan result was received and is being processed.\n *\n * Raises:\n * BadRequest: If the provided scan result data is invalid.\n * @param requestBody\n * @returns ScanWebhookResponse\n * @throws ApiError\n */\n static aiIndexWebhookScanCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-index/webhook/scan/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`\n }\n });\n }\n}\n\nclass AiMarketingService {\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns PaginatedHeygenMarketingVideoListList\n * @throws ApiError\n */\n static aiMarketingOrgsUsersHeygenVideosList(org, userId, page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-marketing/orgs/{org}/users/{user_id}/heygen-videos/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @param requestBody\n * @returns HeygenMarketingVideoList\n * @throws ApiError\n */\n static aiMarketingOrgsUsersHeygenVideosCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-marketing/orgs/{org}/users/{user_id}/heygen-videos/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param name\n * @param org\n * @param userId\n * @returns HeygenMarketingVideoDetail\n * @throws ApiError\n */\n static aiMarketingOrgsUsersHeygenVideosRetrieve(name, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-marketing/orgs/{org}/users/{user_id}/heygen-videos/{name}/',\n path: {\n 'name': name,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n}\n\nclass AiMediaService {\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenTemplatesRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/templates/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenTemplatesCreate(org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/templates/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param templateId\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenTemplatesDestroy(org, templateId, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/templates/{template_id}/',\n path: {\n 'org': org,\n 'template_id': templateId,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param heygenMarketingVideoId\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenVideoDownloadRetrieve(heygenMarketingVideoId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/video-download/{heygen_marketing_video_id}/',\n path: {\n 'heygen_marketing_video_id': heygenMarketingVideoId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @returns PaginatedHeygenMarketingVideoListList\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenVideosList(org, userId, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/videos/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @param requestBody\n * @returns HeygenMarketingVideoList\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenVideosCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/videos/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param heygenMarketingVideoId\n * @param org\n * @param userId\n * @returns HeygenVideoDetail\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenVideosRetrieve(heygenMarketingVideoId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/videos/{heygen_marketing_video_id}/',\n path: {\n 'heygen_marketing_video_id': heygenMarketingVideoId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param heygenMarketingVideoId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMediaOrgsUsersHeygenVideosDestroy(heygenMarketingVideoId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-media/orgs/{org}/users/{user_id}/heygen/videos/{heygen_marketing_video_id}/',\n path: {\n 'heygen_marketing_video_id': heygenMarketingVideoId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n}\n\nclass AiMentorService {\n /**\n * List all triggers for an organization.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n *\n * Returns:\n * Response: A list of trigger slugs for the organization.\n *\n * Raises:\n * BadRequest: If the request is invalid.\n * @param org\n * @returns any List of trigger slugs\n * @throws ApiError\n */\n static aiMentorOrgsAllTriggersRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/all-triggers/',\n path: {\n 'org': org\n },\n errors: {\n 400: `Invalid request`\n }\n });\n }\n /**\n * Retrieve a list of emails in a mentor's inbox.\n *\n * The list can be filtered using the 'search' query parameter to search\n * for specific terms in the email content or subject.\n *\n * Args:\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: A paginated list of emails in the mentor's inbox.\n *\n * Raises:\n * NotFound: If the specified mentor does not exist.\n * @param mentor\n * @param org\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search Search term to filter emails by content or subject\n * @returns PaginatedEmailPromptListList\n * @throws ApiError\n */\n static aiMentorOrgsMentorsEmailInboxList(mentor, org, page, pageSize, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/mentors/{mentor}/email-inbox/',\n path: {\n 'mentor': mentor,\n 'org': org\n },\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'search': search\n },\n errors: {\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Retrieve a summary of a mentor's email inbox.\n *\n * Args:\n * request: The HTTP request.\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: A summary of the mentor's email inbox statistics.\n *\n * Raises:\n * NotFound: If the specified mentor does not exist.\n * @param mentor\n * @param org\n * @returns EmailPromptSummary\n * @throws ApiError\n */\n static aiMentorOrgsMentorsEmailInboxSummaryRetrieve(mentor, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/mentors/{mentor}/email-inbox-summary/',\n path: {\n 'mentor': mentor,\n 'org': org\n },\n errors: {\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Retrieve details of a specific email in a mentor's inbox.\n *\n * Args:\n * request: The HTTP request.\n * email_prompt_id: The ID of the email to retrieve.\n *\n * Returns:\n * Response: The detailed information about the email.\n *\n * Raises:\n * NotFound: If the specified email does not exist.\n * @param emailPromptId\n * @param mentor\n * @param org\n * @returns EmailPromptDetail\n * @throws ApiError\n */\n static aiMentorOrgsMentorsEmailInboxRetrieve(emailPromptId, mentor, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/mentors/{mentor}/email-inbox/{email_prompt_id}/',\n path: {\n 'email_prompt_id': emailPromptId,\n 'mentor': mentor,\n 'org': org\n },\n errors: {\n 404: `Email not found`\n }\n });\n }\n /**\n * API endpoint to link mentor with a course and enable guided mode.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param mentor\n * @param org\n * @returns LinkCourseResponse\n * @throws ApiError\n */\n static aiMentorOrgsMentorsLinkCourseRetrieve(mentor, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/mentors/{mentor}/link-course/',\n path: {\n 'mentor': mentor,\n 'org': org\n }\n });\n }\n /**\n * API endpoint to link mentor with a course and enable guided mode.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param mentor\n * @param org\n * @param requestBody\n * @returns LinkCourseResponse\n * @throws ApiError\n */\n static aiMentorOrgsMentorsLinkCourseCreate(mentor, org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/mentors/{mentor}/link-course/',\n path: {\n 'mentor': mentor,\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create or update metadata for a mentor.\n *\n * Args:\n * request: The HTTP request containing the metadata.\n * org: The organization/tenant identifier.\n *\n * Returns:\n * Response: The created or updated mentor metadata.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param requestBody\n * @returns MentorMetadata\n * @throws ApiError\n */\n static aiMentorOrgsMetadataCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/metadata/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Retrieve existing questions.\n *\n * Args:\n * request: The HTTP request.\n *\n * Returns:\n * Response: The existing questions.\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static aiMentorOrgsQuizCustomizerRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/quiz-customizer/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Generate follow-up questions based on initial questions.\n *\n * Args:\n * request: The HTTP request containing the initial questions.\n *\n * Returns:\n * Response: The generated follow-up questions.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param requestBody\n * @returns QuestionResponse\n * @throws ApiError\n */\n static aiMentorOrgsQuizCustomizerCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/quiz-customizer/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Retrieve or create a chat session with a mentor.\n *\n * Passing `null` as `tools` results in using all tools assigned to the mentor.\n * To specify that no tools be used, pass an empty list.\n *\n * Args:\n * request: HTTP request containing mentor details.\n * org: Organization key identifier.\n * user_id (optional): Username for authentication (if required by the mentor).\n *\n * Returns:\n * Response: JSON object containing the session ID.\n *\n * Raises:\n * Http404: If the mentor is not found.\n * ValidationError: If the username is invalid.\n * ValidationError: If one or more tool slugs are invalid.\n * @param org\n * @param requestBody\n * @returns ChatSessionResponse\n * @throws ApiError\n */\n static aiMentorOrgsSessionsCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/sessions/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Create or modify a trigger.\n *\n * Args:\n * request: The HTTP request containing the trigger data.\n * org: The organization/tenant identifier.\n *\n * Returns:\n * Response: The created or updated trigger details.\n *\n * Raises:\n * BadRequest: If the provided data is invalid or missing required parameters.\n * @param org\n * @param requestBody\n * @returns TriggerResponse\n * @throws ApiError\n */\n static aiMentorOrgsTriggerCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/trigger/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data or missing required parameters`\n }\n });\n }\n /**\n * Retrieve available trigger templates.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n *\n * Returns:\n * Response: A dictionary of available trigger templates and their required parameters.\n *\n * Raises:\n * BadRequest: If the request is invalid.\n * @param org\n * @returns any Dictionary of trigger templates and their required parameters\n * @throws ApiError\n */\n static aiMentorOrgsTriggerTemplatesRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/trigger-templates/',\n path: {\n 'org': org\n },\n errors: {\n 400: `Invalid request`\n }\n });\n }\n /**\n * Retrieve details of a specific trigger.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * slug: The unique slug identifier of the trigger.\n *\n * Returns:\n * Response: The details of the specified trigger.\n *\n * Raises:\n * Http404: If the specified trigger does not exist.\n * @param org\n * @param slug\n * @returns TriggerResponse\n * @throws ApiError\n */\n static aiMentorOrgsTriggerRetrieve(org, slug) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/trigger/{slug}/',\n path: {\n 'org': org,\n 'slug': slug\n },\n errors: {\n 404: `Trigger not found`\n }\n });\n }\n /**\n * Delete a specific trigger.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * slug: The unique slug identifier of the trigger to delete.\n *\n * Returns:\n * Response: A confirmation of the deletion status.\n *\n * Raises:\n * BadRequest: If the specified trigger does not exist.\n * @param org\n * @param slug\n * @returns any Trigger successfully deleted\n * @throws ApiError\n */\n static aiMentorOrgsTriggerDeletionCreate(org, slug) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/trigger/{slug}/deletion/',\n path: {\n 'org': org,\n 'slug': slug\n },\n errors: {\n 400: `Trigger not found or invalid request`\n }\n });\n }\n /**\n * Retrieve a list of mentors.\n *\n * Returns:\n * - List of mentors matching the filters.\n * @param org\n * @param userId\n * @param departmentId Department to filter by\n * @param filterBy Filter options include, date, name, default is date\n * @param metadataKey Metadata key to be queried with\n * @param metadataValue Metadata value to be filter for\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param returnSessionInformation Declares if session information should be included in the mentor data\n * @param visibility visibility type to be queried with\n * @returns PaginatedMentorList\n * @throws ApiError\n */\n static aiMentorOrgsUsersList(org, userId, departmentId, filterBy, metadataKey, metadataValue, page, pageSize, returnSessionInformation, visibility) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'filter_by': filterBy,\n 'metadata_key': metadataKey,\n 'metadata_value': metadataValue,\n 'page': page,\n 'page_size': pageSize,\n 'return_session_information': returnSessionInformation,\n 'visibility': visibility\n }\n });\n }\n /**\n * Create a new mentor.\n *\n * Body Parameters:\n * - name: Mentor name.\n * - unique_id: Unique identifier.\n * - platform_key: Associated platform.\n * - metadata: Additional mentor attributes.\n * @param org\n * @param userId\n * @param requestBody\n * @param departmentId Department to filter by\n * @param filterBy Filter options include, date, name, default is date\n * @param metadataKey Metadata key to be queried with\n * @param metadataValue Metadata value to be filter for\n * @param returnSessionInformation Declares if session information should be included in the mentor data\n * @param visibility visibility type to be queried with\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersCreate(org, userId, requestBody, departmentId, filterBy, metadataKey, metadataValue, returnSessionInformation, visibility) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'filter_by': filterBy,\n 'metadata_key': metadataKey,\n 'metadata_value': metadataValue,\n 'return_session_information': returnSessionInformation,\n 'visibility': visibility\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API ViewSet for managing mentors.\n *\n * Provides endpoints to retrieve, create, update, and delete mentor data.\n *\n * Permissions:\n * - Accessible to both tenant admins and students.\n * @param name\n * @param org\n * @param userId\n * @param departmentId Department to filter by\n * @param filterBy Filter options include, date, name, default is date\n * @param metadataKey Metadata key to be queried with\n * @param metadataValue Metadata value to be filter for\n * @param returnSessionInformation Declares if session information should be included in the mentor data\n * @param visibility visibility type to be queried with\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersRetrieve(name, org, userId, departmentId, filterBy, metadataKey, metadataValue, returnSessionInformation, visibility) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/{name}/',\n path: {\n 'name': name,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'filter_by': filterBy,\n 'metadata_key': metadataKey,\n 'metadata_value': metadataValue,\n 'return_session_information': returnSessionInformation,\n 'visibility': visibility\n }\n });\n }\n /**\n * Update a mentor's details.\n * @param name\n * @param org\n * @param userId\n * @param requestBody\n * @param departmentId Department to filter by\n * @param filterBy Filter options include, date, name, default is date\n * @param metadataKey Metadata key to be queried with\n * @param metadataValue Metadata value to be filter for\n * @param returnSessionInformation Declares if session information should be included in the mentor data\n * @param visibility visibility type to be queried with\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersUpdate(name, org, userId, requestBody, departmentId, filterBy, metadataKey, metadataValue, returnSessionInformation, visibility) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/{name}/',\n path: {\n 'name': name,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'filter_by': filterBy,\n 'metadata_key': metadataKey,\n 'metadata_value': metadataValue,\n 'return_session_information': returnSessionInformation,\n 'visibility': visibility\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API ViewSet for managing mentors.\n *\n * Provides endpoints to retrieve, create, update, and delete mentor data.\n *\n * Permissions:\n * - Accessible to both tenant admins and students.\n * @param name\n * @param org\n * @param userId\n * @param departmentId Department to filter by\n * @param filterBy Filter options include, date, name, default is date\n * @param metadataKey Metadata key to be queried with\n * @param metadataValue Metadata value to be filter for\n * @param returnSessionInformation Declares if session information should be included in the mentor data\n * @param visibility visibility type to be queried with\n * @param requestBody\n * @returns MentorCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersPartialUpdate(name, org, userId, departmentId, filterBy, metadataKey, metadataValue, returnSessionInformation, visibility, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/{name}/',\n path: {\n 'name': name,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'filter_by': filterBy,\n 'metadata_key': metadataKey,\n 'metadata_value': metadataValue,\n 'return_session_information': returnSessionInformation,\n 'visibility': visibility\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Soft delete a mentor.\n * @param name\n * @param org\n * @param userId\n * @param departmentId Department to filter by\n * @param filterBy Filter options include, date, name, default is date\n * @param metadataKey Metadata key to be queried with\n * @param metadataValue Metadata value to be filter for\n * @param returnSessionInformation Declares if session information should be included in the mentor data\n * @param visibility visibility type to be queried with\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersDestroy(name, org, userId, departmentId, filterBy, metadataKey, metadataValue, returnSessionInformation, visibility) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/{name}/',\n path: {\n 'name': name,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'filter_by': filterBy,\n 'metadata_key': metadataKey,\n 'metadata_value': metadataValue,\n 'return_session_information': returnSessionInformation,\n 'visibility': visibility\n }\n });\n }\n /**\n * Endpoint to view and delete AI generated images for a user.\n *\n * AI Generated images are images generated during chat with AI. They are cached to allow retrieval and deletion.\n *\n * optional filtering parameters allowed are\n * - username: The username of the user for which this image was stored.\n * - provider: The provider used to generate the image. eg. openai, nvidia (nim), replicate.\n * - model: the text to image model on the provider used to generate the image.\n *\n * This endpoint is accessible to both students and platform admins.\n * @param org\n * @param userId\n * @param model\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param provider\n * @param search A search term.\n * @param username\n * @returns PaginatedAIGeneratedImageList\n * @throws ApiError\n */\n static aiMentorOrgsUsersAiGeneratedImagesList(org, userId, model, ordering, page, pageSize, provider, search, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/ai-generated-images/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'model': model,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'provider': provider,\n 'search': search,\n 'username': username\n }\n });\n }\n /**\n * Endpoint to view and delete AI generated images for a user.\n *\n * AI Generated images are images generated during chat with AI. They are cached to allow retrieval and deletion.\n *\n * optional filtering parameters allowed are\n * - username: The username of the user for which this image was stored.\n * - provider: The provider used to generate the image. eg. openai, nvidia (nim), replicate.\n * - model: the text to image model on the provider used to generate the image.\n *\n * This endpoint is accessible to both students and platform admins.\n * @param id A unique integer value identifying this ai generated image.\n * @param org\n * @param userId\n * @returns AIGeneratedImage\n * @throws ApiError\n */\n static aiMentorOrgsUsersAiGeneratedImagesRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/ai-generated-images/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to view and delete AI generated images for a user.\n *\n * AI Generated images are images generated during chat with AI. They are cached to allow retrieval and deletion.\n *\n * optional filtering parameters allowed are\n * - username: The username of the user for which this image was stored.\n * - provider: The provider used to generate the image. eg. openai, nvidia (nim), replicate.\n * - model: the text to image model on the provider used to generate the image.\n *\n * This endpoint is accessible to both students and platform admins.\n * @param id A unique integer value identifying this ai generated image.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersAiGeneratedImagesDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/ai-generated-images/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to get a list of AI user profile memory entries or to add an entry.\n * @param org\n * @param userId\n * @returns AIUserProfileMemoryRelation\n * @throws ApiError\n */\n static aiMentorOrgsUsersAiUserProfileMemoryList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/ai-user-profile-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to create an AI user profile memory entry.\n *\n * Sample request:\n * ```\n * {\"favorite-animal\": \"my favorite animal is cat\"}\n * ```\n * Sample Response (the same as request data):\n * ```\n * {\"favorite-animal\": \"my favorite animal is cat\"}\n * ```\n * @param org\n * @param userId\n * @param requestBody\n * @returns AIUserProfileMemoryRelation\n * @throws ApiError\n */\n static aiMentorOrgsUsersAiUserProfileMemoryCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/ai-user-profile-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * The endpoint to delete an AI user profile memory entry.\n *\n * No query parameters or JSON parameters are required.\n *\n * The response is always empty. Successful request will be responded with status 204, and failed request will be responded with status 404.\n * @param org\n * @param tag\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersAiUserProfileMemoryDestroy(org, tag, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/ai-user-profile-memory/{tag}/',\n path: {\n 'org': org,\n 'tag': tag,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve assumed knowledge levels.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve assumed knowledge for.\n *\n * Returns:\n * Response: The assumed knowledge levels for different categories.\n *\n * Raises:\n * NotFound: If no assumed knowledge exists for the user.\n * @param org\n * @param userId\n * @returns AssumedKnowledge\n * @throws ApiError\n */\n static aiMentorOrgsUsersAssumedKnowledgeRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/assumed-knowledge/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Assumed knowledge not found`\n }\n });\n }\n /**\n * Update assumed knowledge levels.\n *\n * Args:\n * request: The HTTP request containing the updated knowledge levels.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to update assumed knowledge for.\n *\n * Returns:\n * Response: The updated assumed knowledge levels.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns AssumedKnowledge\n * @throws ApiError\n */\n static aiMentorOrgsUsersAssumedKnowledgeCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/assumed-knowledge/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Convert an uploaded audio file to text.\n *\n * Args:\n * request: The HTTP request containing the audio file.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user uploading the audio.\n *\n * Returns:\n * Response: The transcribed text from the audio file.\n *\n * Raises:\n * BadRequest: If the audio file is invalid or cannot be processed.\n * NotFound: If the API key for the tenant is not found.\n * @param org\n * @param userId\n * @param formData\n * @returns AudioToTextResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersAudioToTextCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/audio-to-text/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid audio file or processing error`,\n 404: `API key not found`\n }\n });\n }\n /**\n * This endpoint list available template mentors for a tenant\n *\n * Returns:\n *\n * 200 : List of Tool objects\n * @param org\n * @param userId\n * @returns TemplateMentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersAvailableTemplateMentorsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/available-template-mentors/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve a list of Mentor Category Groups.\n * @param org\n * @param userId\n * @param audience\n * @param audienceName\n * @param ordering Which field to use when ordering the results.\n * @param search A search term.\n * @returns MentorCategoryGroup\n * @throws ApiError\n */\n static aiMentorOrgsUsersCategoryGroupsList(org, userId, audience, audienceName, ordering, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/category-groups/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'audience': audience,\n 'audience__name': audienceName,\n 'ordering': ordering,\n 'search': search\n }\n });\n }\n /**\n * Create a new Mentor Category Group. Only accessible to Platform Admins.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorCategoryGroup\n * @throws ApiError\n */\n static aiMentorOrgsUsersCategoryGroupsCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/category-groups/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mentor Category Groups offer parent grouping for mentor category objects.\n *\n * The parameter `audience` is deprecated and is currently left behind for backward compatibility.\n *\n * Permissions:\n * GET: Accessible to both Platform Admins and Students\n * POST, DELETE, PATCH, PUT: Accessible to only Platform Admins\n * @param id A unique integer value identifying this mentor category group.\n * @param org\n * @param userId\n * @returns MentorCategoryGroup\n * @throws ApiError\n */\n static aiMentorOrgsUsersCategoryGroupsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/category-groups/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mentor Category Groups offer parent grouping for mentor category objects.\n *\n * The parameter `audience` is deprecated and is currently left behind for backward compatibility.\n *\n * Permissions:\n * GET: Accessible to both Platform Admins and Students\n * POST, DELETE, PATCH, PUT: Accessible to only Platform Admins\n * @param id A unique integer value identifying this mentor category group.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorCategoryGroupCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersCategoryGroupsUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/category-groups/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mentor Category Groups offer parent grouping for mentor category objects.\n *\n * The parameter `audience` is deprecated and is currently left behind for backward compatibility.\n *\n * Permissions:\n * GET: Accessible to both Platform Admins and Students\n * POST, DELETE, PATCH, PUT: Accessible to only Platform Admins\n * @param id A unique integer value identifying this mentor category group.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorCategoryGroupCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersCategoryGroupsPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/category-groups/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mentor Category Groups offer parent grouping for mentor category objects.\n *\n * The parameter `audience` is deprecated and is currently left behind for backward compatibility.\n *\n * Permissions:\n * GET: Accessible to both Platform Admins and Students\n * POST, DELETE, PATCH, PUT: Accessible to only Platform Admins\n * @param id A unique integer value identifying this mentor category group.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCategoryGroupsDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/category-groups/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve and clean up vector results from a specific session.\n *\n * This endpoint retrieves the documents last used by the mentor to answer\n * the most recent query from the user in the specified session, and cleans\n * them to remove any inappropriate content.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * session_id: The ID of the session to retrieve vector results from.\n *\n * Returns:\n * Response: The cleaned vector results.\n *\n * Raises:\n * BadRequest: If the API key for the cleaning provider is not found.\n * NotFound: If no vector results are found for the session.\n * @param org\n * @param sessionId\n * @param userId\n * @returns VectorResult\n * @throws ApiError\n */\n static aiMentorOrgsUsersCleanVectorResultsList(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/clean-vector-results/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n errors: {\n 400: `API key not found`,\n 404: `Session or results not found`\n }\n });\n }\n /**\n * Clean up provided vector results.\n *\n * This endpoint allows users to submit specific vector results for cleaning,\n * which is useful when there are particular documents that need to be processed.\n *\n * Args:\n * request: The HTTP request containing the vector results to clean.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n *\n * Returns:\n * Response: The cleaned vector results.\n *\n * Raises:\n * BadRequest: If the API key for the cleaning provider is not found or the provided data is invalid.\n * @param org\n * @param sessionId\n * @param userId\n * @param requestBody\n * @returns VectorResult\n * @throws ApiError\n */\n static aiMentorOrgsUsersCleanVectorResultsCreate(org, sessionId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/clean-vector-results/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `API key not found or invalid data`\n }\n });\n }\n /**\n * Delete User Chat History\n * Endpoint to clear a user's chat history.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersClearChathistoryDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/clear-chathistory',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns PaginatedCourseCreationTaskFileList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTaskFilesList(org, userId, page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-task-files/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTaskFilesCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-task-files/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTaskFilesRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-task-files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTaskFilesUpdate(id, org, userId, formData) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-task-files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTaskFilesPartialUpdate(id, org, userId, formData) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-task-files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTaskFilesDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-task-files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns PaginatedCourseCreationTaskList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksList(org, userId, page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Cancel a course creation task run.\n * ** Conditions Required **:\n * The task must be running or pending.\n * ** Response **:\n * - 200: The course creation task is successfully cancelled.\n * - 400: The course creation task is not in a running or pending state.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCancelRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/{id}/cancel/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * This is intended for stepwise approach of course creation.\n *\n * Use this to intiate generating an outline of the course.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns FullCourse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCreateCourseOutlineRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/{id}/create-course-outline/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * This is intended for stepwise approach of course creation.\n *\n * Use this to intiate generating an outline of the course.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @param formData\n * @returns FullCourse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCreateCourseOutlineCreate(id, org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/{id}/create-course-outline/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Kick start the course creation task.\n * This endpoint should be called once the files for a course creation task has\n * been successfully uploaded.\n *\n * ** Conditions Required **:\n * - The course creation task must be in a pending state or failed state.\n *\n * ** Response **:\n * - 200: The course creation task is successfully started.\n * - 400: The course creation task is not in a pending state.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksStartRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation-tasks/{id}/start/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param course\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param section\n * @param subsection\n * @param task\n * @returns PaginatedUnitList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentList(org, userId, course, ordering, page, pageSize, search, section, subsection, task) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course': course,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'section': section,\n 'subsection': subsection,\n 'task': task\n }\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param requestBody\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Generate draft content for a specific unit.\n *\n * This action starts a background task to create draft content\n * for the specified unit using AI.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the unit to generate content for.\n *\n * Returns:\n * Response: A confirmation that the content generation task has been started.\n *\n * Raises:\n * NotFound: If the specified unit does not exist.\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @returns any Content creation started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentDraftContentRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/{id}/draft-content/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Unit not found`\n }\n });\n }\n /**\n * Generate draft content for a specific unit.\n *\n * This action starts a background task to create draft content\n * for the specified unit using AI.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the unit to generate content for.\n *\n * Returns:\n * Response: A confirmation that the content generation task has been started.\n *\n * Raises:\n * NotFound: If the specified unit does not exist.\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @param requestBody\n * @returns any Content creation started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationComponentDraftContentCreate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/component/{id}/draft-content/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 404: `Unit not found`\n }\n });\n }\n /**\n * API viewset for managing EdX courses.\n *\n * This viewset allows platform administrators to retrieve, delete, and\n * perform various operations on EdX courses that were created through\n * course creation tasks.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param task\n * @returns PaginatedEdxCourseList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseList(org, userId, ordering, page, pageSize, search, task) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'task': task\n }\n });\n }\n /**\n * API viewset for managing EdX courses.\n *\n * This viewset allows platform administrators to retrieve, delete, and\n * perform various operations on EdX courses that were created through\n * course creation tasks.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this edx course.\n * @param org\n * @param userId\n * @returns EdxCourse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing EdX courses.\n *\n * This viewset allows platform administrators to retrieve, delete, and\n * perform various operations on EdX courses that were created through\n * course creation tasks.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this edx course.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Generate draft content for all units in a course.\n *\n * This action starts a background task to create draft content\n * for all units in the course using AI.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the course to generate content for.\n *\n * Returns:\n * Response: A confirmation that the content generation task has been started.\n *\n * Raises:\n * NotFound: If the specified course does not exist.\n * @param id A unique integer value identifying this edx course.\n * @param org\n * @param userId\n * @returns any Content creation started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseDraftContentForAllUnitsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/draft-content-for-all-units/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Course not found`\n }\n });\n }\n /**\n * Retrieve the full structure of a course.\n *\n * This action returns the complete hierarchical structure of the course,\n * including all sections, subsections, units, and components.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the course to retrieve.\n *\n * Returns:\n * Response: The full structure of the course.\n *\n * Raises:\n * NotFound: If the specified course does not exist.\n * @param id A unique integer value identifying this edx course.\n * @param org\n * @param userId\n * @returns FullCourse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseFullStructureRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/full-structure/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Course not found`\n }\n });\n }\n /**\n * Load existing course structure from OpenEdX.\n *\n * This action starts a background task to pull the course structure\n * from the EdX platform into the database.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the course to load.\n *\n * Returns:\n * Response: A confirmation that the load task has been started.\n *\n * Raises:\n * NotFound: If the specified course does not exist.\n * @param id A unique integer value identifying this edx course.\n * @param org\n * @param userId\n * @returns any Course load started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseLoadFromEdxRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/load-from-edx/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Course not found`\n }\n });\n }\n /**\n * Synchronize the course structure to EdX.\n *\n * This action starts a background task to push the course structure\n * from the database to the EdX platform.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the course to synchronize.\n *\n * Returns:\n * Response: A confirmation that the sync task has been started.\n *\n * Raises:\n * NotFound: If the specified course does not exist.\n * @param id A unique integer value identifying this edx course.\n * @param org\n * @param userId\n * @returns any Course sync started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationCourseSyncToEdxRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/course/{id}/sync-to-edx/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Course not found`\n }\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns PaginatedCourseCreationTaskFileList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationFilesList(org, userId, page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/files/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationFilesCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/files/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationFilesRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationFilesUpdate(id, org, userId, formData) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTaskFile\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationFilesPartialUpdate(id, org, userId, formData) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Endpoint to fetch update and delete files associated with course creation tasks.\n * @param id A unique integer value identifying this course creation task file.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationFilesDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/files/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course sections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * sections within EdX courses.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param course\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param task\n * @returns PaginatedSectionList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSectionList(org, userId, course, ordering, page, pageSize, search, task) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/section/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course': course,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'task': task\n }\n });\n }\n /**\n * API viewset for managing course sections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * sections within EdX courses.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param requestBody\n * @returns Section\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSectionCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/section/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course sections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * sections within EdX courses.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this section.\n * @param org\n * @param userId\n * @returns Section\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSectionRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/section/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course sections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * sections within EdX courses.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this section.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Section\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSectionUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/section/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course sections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * sections within EdX courses.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this section.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Section\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSectionPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/section/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course sections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * sections within EdX courses.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this section.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSectionDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/section/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course subsections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * subsections within course sections.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param course\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param section\n * @param task\n * @returns PaginatedSubSectionList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSubsectionList(org, userId, course, ordering, page, pageSize, search, section, task) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/subsection/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course': course,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'section': section,\n 'task': task\n }\n });\n }\n /**\n * API viewset for managing course subsections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * subsections within course sections.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param requestBody\n * @returns SubSection\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSubsectionCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/subsection/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course subsections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * subsections within course sections.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this sub section.\n * @param org\n * @param userId\n * @returns SubSection\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSubsectionRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/subsection/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course subsections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * subsections within course sections.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this sub section.\n * @param org\n * @param userId\n * @param requestBody\n * @returns SubSection\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSubsectionUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/subsection/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course subsections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * subsections within course sections.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this sub section.\n * @param org\n * @param userId\n * @param requestBody\n * @returns SubSection\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSubsectionPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/subsection/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course subsections.\n *\n * This viewset allows platform administrators to retrieve and manage\n * subsections within course sections.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this sub section.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationSubsectionDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/subsection/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns PaginatedCourseCreationTaskList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksList2(org, userId, page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param org\n * @param userId\n * @param formData\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCreate2(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksRetrieve2(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create, retrieve and delete course creation tasks\n *\n * Course creation tasks allow you to schedule the creation of a course on OpenEdx deployment connected to this data manager.\n *\n * The course is created entirely by an ai model (as specified in your inputs).\n *\n * The llm decides on the content of the course based on the name, description, target audience and other parameters.\n * Bigger and newer models tend to outperform smaller once.\n *\n * Clear and unambiguous parameters are more likely to produce better results.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksDestroy2(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Cancel a course creation task run.\n * ** Conditions Required **:\n * The task must be running or pending.\n * ** Response **:\n * - 200: The course creation task is successfully cancelled.\n * - 400: The course creation task is not in a running or pending state.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCancelRetrieve2(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/{id}/cancel/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * This is intended for stepwise approach of course creation.\n *\n * Use this to intiate generating an outline of the course.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns FullCourse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCreateCourseOutlineRetrieve2(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/{id}/create-course-outline/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * This is intended for stepwise approach of course creation.\n *\n * Use this to intiate generating an outline of the course.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @param formData\n * @returns FullCourse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksCreateCourseOutlineCreate2(id, org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/{id}/create-course-outline/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Kick start the course creation task.\n * This endpoint should be called once the files for a course creation task has\n * been successfully uploaded.\n *\n * ** Conditions Required **:\n * - The course creation task must be in a pending state or failed state.\n *\n * ** Response **:\n * - 200: The course creation task is successfully started.\n * - 400: The course creation task is not in a pending state.\n * @param id A unique integer value identifying this course creation task.\n * @param org\n * @param userId\n * @returns CourseCreationTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationTasksStartRetrieve2(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/tasks/{id}/start/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param course\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param section\n * @param subsection\n * @param task\n * @returns PaginatedUnitList\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitList(org, userId, course, ordering, page, pageSize, search, section, subsection, task) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course': course,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'section': section,\n 'subsection': subsection,\n 'task': task\n }\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param org\n * @param userId\n * @param requestBody\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Unit\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing course units.\n *\n * This viewset allows platform administrators to retrieve and manage\n * units within course subsections, and generate content for them.\n *\n * Permissions:\n * - Restricted to platform administrators only\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Generate draft content for a specific unit.\n *\n * This action starts a background task to create draft content\n * for the specified unit using AI.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the unit to generate content for.\n *\n * Returns:\n * Response: A confirmation that the content generation task has been started.\n *\n * Raises:\n * NotFound: If the specified unit does not exist.\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @returns any Content creation started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitDraftContentRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/{id}/draft-content/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Unit not found`\n }\n });\n }\n /**\n * Generate draft content for a specific unit.\n *\n * This action starts a background task to create draft content\n * for the specified unit using AI.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the unit to generate content for.\n *\n * Returns:\n * Response: A confirmation that the content generation task has been started.\n *\n * Raises:\n * NotFound: If the specified unit does not exist.\n * @param id A unique integer value identifying this unit.\n * @param org\n * @param userId\n * @param requestBody\n * @returns any Content creation started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersCourseCreationUnitDraftContentCreate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/course-creation/unit/{id}/draft-content/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 404: `Unit not found`\n }\n });\n }\n /**\n * Create a new mentor using the wizard interface.\n *\n * Args:\n * request: The HTTP request containing the mentor data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user creating the mentor.\n *\n * Returns:\n * Response: The created mentor.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersCreateMentorWizardCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/create-mentor-wizard/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Retrieve custom instructions for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve custom instructions for.\n *\n * Returns:\n * Response: The custom instructions for the user.\n *\n * Raises:\n * NotFound: If no custom instructions exist for the user.\n * @param org\n * @param userId\n * @returns CustomInstructionResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCustomInstructionRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/custom-instruction/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Custom instruction not found`\n }\n });\n }\n /**\n * Create a new custom instruction for a user.\n *\n * Args:\n * request: The HTTP request containing the custom instruction data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to create custom instructions for.\n *\n * Returns:\n * Response: The created custom instruction.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns CustomInstructionResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCustomInstructionCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/custom-instruction/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Update an existing custom instruction for a user.\n *\n * Args:\n * request: The HTTP request containing the updated custom instruction data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to update custom instructions for.\n *\n * Returns:\n * Response: The updated custom instruction.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If no custom instruction exists for the user.\n * @param org\n * @param userId\n * @param requestBody\n * @returns CustomInstructionResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersCustomInstructionUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/custom-instruction/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Custom instruction not found`\n }\n });\n }\n /**\n * Retrieves the chat history for a user if the export task is ready.\n *\n * This Endpoint to download user chathistory.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 200: When task is not ready.\n *\n * 200: chat history object\n *\n * 400: When data is not valid.\n * @param org\n * @param taskId\n * @param userId\n * @param toCsv Choose download in csv or not\n * @returns ChatHistoryItem\n * @throws ApiError\n */\n static aiMentorOrgsUsersDownloadsTasksRetrieve(org, taskId, userId, toCsv = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/downloads/tasks/{task_id}/',\n path: {\n 'org': org,\n 'task_id': taskId,\n 'user_id': userId\n },\n query: {\n 'to_csv': toCsv\n }\n });\n }\n /**\n * Endpoints to fetch and delete Edx stored Memory information stored for a user and a corresponding edx course they have interracted with.\n * This information is passed to the corresponding mentor so the mentor has context information\n * about the course and unit that the user last interracted with.\n *\n * There can be only one UserEdxMemory instance per student and course_id.\n *\n * Url Args:\n * org (str): The organization's platform key.\n * user_id (str): The username identifier of the individual.\n *\n * Returns:\n *\n * 200: A paginated list of UserEdxMemory objects\n *\n * Examples:\n *\n * - List all memories\n * GET: /api/ai-mentor/orgs/main/users/johndoe/edx-memory/\n *\n * Request: None\n * Response: {\n * \"count\": 0,\n * \"next\": null,\n * \"previous\": null,\n * \"results\": [{\n * \"student\": 1,\n * \"course_id\": \"course-v1:main+CARBON+2024_Fall\",\n * \"data\": {},\n * \"date_created\": \"2024-06-25T15:30:26.257140\",\n * \"last_modified\": \"2024-06-25T15:30:26.257140\"\n * }]\n * }\n * - Get a single UserEdxMemory object\n * GET: /api/ai-mentor/orgs/main/users/johndoe/edx-memory/1/\n *\n * Request: None\n * Response: {\n * \"student\": 1,\n * \"course_id\": \"course-v1:main+CARBON+2024_Fall\",\n * \"data\": {},\n * \"date_created\": \"2024-06-25T15:30:26.257140\",\n * \"last_modified\": \"2024-06-25T15:30:26.257140\"\n * }\n * @param org\n * @param userId\n * @param courseId\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param student edX user ID\n * @param username\n * @returns PaginatedUserEdxMemoryList\n * @throws ApiError\n */\n static aiMentorOrgsUsersEdxMemoryList(org, userId, courseId, ordering, page, pageSize, student, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/edx-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'student': student,\n 'username': username\n }\n });\n }\n /**\n * Endpoints to fetch and delete Edx stored Memory information stored for a user and a corresponding edx course they have interracted with.\n * This information is passed to the corresponding mentor so the mentor has context information\n * about the course and unit that the user last interracted with.\n *\n * There can be only one UserEdxMemory instance per student and course_id.\n *\n * Url Args:\n * org (str): The organization's platform key.\n * user_id (str): The username identifier of the individual.\n *\n * Returns:\n *\n * 200: A paginated list of UserEdxMemory objects\n *\n * Examples:\n *\n * - List all memories\n * GET: /api/ai-mentor/orgs/main/users/johndoe/edx-memory/\n *\n * Request: None\n * Response: {\n * \"count\": 0,\n * \"next\": null,\n * \"previous\": null,\n * \"results\": [{\n * \"student\": 1,\n * \"course_id\": \"course-v1:main+CARBON+2024_Fall\",\n * \"data\": {},\n * \"date_created\": \"2024-06-25T15:30:26.257140\",\n * \"last_modified\": \"2024-06-25T15:30:26.257140\"\n * }]\n * }\n * - Get a single UserEdxMemory object\n * GET: /api/ai-mentor/orgs/main/users/johndoe/edx-memory/1/\n *\n * Request: None\n * Response: {\n * \"student\": 1,\n * \"course_id\": \"course-v1:main+CARBON+2024_Fall\",\n * \"data\": {},\n * \"date_created\": \"2024-06-25T15:30:26.257140\",\n * \"last_modified\": \"2024-06-25T15:30:26.257140\"\n * }\n * @param id A unique integer value identifying this user edx memory.\n * @param org\n * @param userId\n * @returns UserEdxMemory\n * @throws ApiError\n */\n static aiMentorOrgsUsersEdxMemoryRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/edx-memory/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoints to fetch and delete Edx stored Memory information stored for a user and a corresponding edx course they have interracted with.\n * This information is passed to the corresponding mentor so the mentor has context information\n * about the course and unit that the user last interracted with.\n *\n * There can be only one UserEdxMemory instance per student and course_id.\n *\n * Url Args:\n * org (str): The organization's platform key.\n * user_id (str): The username identifier of the individual.\n *\n * Returns:\n *\n * 200: A paginated list of UserEdxMemory objects\n *\n * Examples:\n *\n * - List all memories\n * GET: /api/ai-mentor/orgs/main/users/johndoe/edx-memory/\n *\n * Request: None\n * Response: {\n * \"count\": 0,\n * \"next\": null,\n * \"previous\": null,\n * \"results\": [{\n * \"student\": 1,\n * \"course_id\": \"course-v1:main+CARBON+2024_Fall\",\n * \"data\": {},\n * \"date_created\": \"2024-06-25T15:30:26.257140\",\n * \"last_modified\": \"2024-06-25T15:30:26.257140\"\n * }]\n * }\n * - Get a single UserEdxMemory object\n * GET: /api/ai-mentor/orgs/main/users/johndoe/edx-memory/1/\n *\n * Request: None\n * Response: {\n * \"student\": 1,\n * \"course_id\": \"course-v1:main+CARBON+2024_Fall\",\n * \"data\": {},\n * \"date_created\": \"2024-06-25T15:30:26.257140\",\n * \"last_modified\": \"2024-06-25T15:30:26.257140\"\n * }\n * @param id A unique integer value identifying this user edx memory.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersEdxMemoryDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/edx-memory/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve a list of Elevenlabs voices available to a user.\n *\n * This endpoint returns both custom voices created by the user\n * and premade voices available to all users.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve voices for.\n *\n * Returns:\n * Response: A list of available Elevenlabs voices.\n *\n * Raises:\n * NotFound: If the specified user does not exist.\n * @param org\n * @param userId\n * @returns ElevenlabsCustomVoiceResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersElevenlabsVoiceList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/elevenlabs-voice/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `User not found`\n }\n });\n }\n /**\n * Create a new custom Elevenlabs voice.\n *\n * This endpoint allows users to upload audio files to create a custom voice\n * that can be used with the Elevenlabs text-to-speech service.\n *\n * Note: The audio files' total length should be longer than 1 minute and\n * the total size should be smaller than 11 MiB.\n *\n * Args:\n * request: The HTTP request containing the voice name and audio files.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user creating the voice.\n *\n * Returns:\n * Response: The created voice configuration.\n *\n * Raises:\n * BadRequest: If the provided data is invalid, credentials are not found, or there's an API error.\n * @param org\n * @param userId\n * @param formData\n * @returns ElevenlabsCustomVoiceResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersElevenlabsVoiceCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/elevenlabs-voice/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid data, credentials not found, or API error`\n }\n });\n }\n /**\n * Delete an existing Elevenlabs voice configuration.\n *\n * This endpoint removes a custom voice configuration both from the local database\n * and from the Elevenlabs remote API if applicable.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the voice.\n * voice_name: The name of the voice to delete.\n *\n * Returns:\n * Response: A confirmation of the deletion.\n *\n * Raises:\n * BadRequest: If the Elevenlabs credentials are not found or there's an API error.\n * @param org\n * @param userId\n * @param voiceName\n * @returns any Voice successfully deleted\n * @throws ApiError\n */\n static aiMentorOrgsUsersElevenlabsVoiceDestroy(org, userId, voiceName) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/elevenlabs-voice/{voice_name}/',\n path: {\n 'org': org,\n 'user_id': userId,\n 'voice_name': voiceName\n },\n errors: {\n 400: `Credentials not found or API error`\n }\n });\n }\n /**\n * Initiates a background task to export the user's chat history.\n *\n * Returns:\n *\n * 200: task id.\n * @param org\n * @param userId\n * @returns TaskView\n * @throws ApiError\n */\n static aiMentorOrgsUsersExportChathistoryCreate(org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/export-chathistory/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve the count of free usage credits available to a user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to check free usage for.\n *\n * Returns:\n * Response: The count of free usage credits available.\n *\n * Raises:\n * NotFound: If the specified user does not exist.\n * @param org\n * @param userId\n * @returns FreeUsageCount\n * @throws ApiError\n */\n static aiMentorOrgsUsersFreeUsageCountRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/free-usage-count',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `User not found`\n }\n });\n }\n /**\n * List all MCP servers.\n *\n * Returns a paginated list of MCP servers that can be filtered by platform\n * and searched by name or URL.\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param platform\n * @param search A search term.\n * @returns PaginatedMCPServerList\n * @throws ApiError\n */\n static aiMentorOrgsUsersMcpServersList(org, userId, page, pageSize, platform, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mcp-servers/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'platform': platform,\n 'search': search\n }\n });\n }\n /**\n * ViewSet for MCP Servers.\n *\n * Allows platform admins to list, create, retrieve, update, and delete MCP servers.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MCPServer\n * @throws ApiError\n */\n static aiMentorOrgsUsersMcpServersCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mcp-servers/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * ViewSet for MCP Servers.\n *\n * Allows platform admins to list, create, retrieve, update, and delete MCP servers.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param id A unique integer value identifying this mcp server.\n * @param org\n * @param userId\n * @returns MCPServer\n * @throws ApiError\n */\n static aiMentorOrgsUsersMcpServersRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mcp-servers/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * ViewSet for MCP Servers.\n *\n * Allows platform admins to list, create, retrieve, update, and delete MCP servers.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param id A unique integer value identifying this mcp server.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MCPServer\n * @throws ApiError\n */\n static aiMentorOrgsUsersMcpServersUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mcp-servers/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * ViewSet for MCP Servers.\n *\n * Allows platform admins to list, create, retrieve, update, and delete MCP servers.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param id A unique integer value identifying this mcp server.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MCPServer\n * @throws ApiError\n */\n static aiMentorOrgsUsersMcpServersPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mcp-servers/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * ViewSet for MCP Servers.\n *\n * Allows platform admins to list, create, retrieve, update, and delete MCP servers.\n *\n * Permissions:\n * - Accessible to tenant admins.\n * @param id A unique integer value identifying this mcp server.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersMcpServersDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mcp-servers/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve details of a specific user chat feedback entry.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * feedback_id: The ID of the feedback entry to retrieve.\n *\n * Returns:\n * Response: The feedback entry details.\n *\n * Raises:\n * NotFound: If the specified feedback entry does not exist.\n * @param feedbackId\n * @param org\n * @param userId\n * @returns UserChatFeedback\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorFeedbackRetrieve(feedbackId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-feedback/{feedback_id}/',\n path: {\n 'feedback_id': feedbackId,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Feedback not found`\n }\n });\n }\n /**\n * Update an existing user chat feedback entry.\n *\n * Args:\n * request: The HTTP request containing the updated feedback data.\n * org: The organization/tenant identifier.\n * feedback_id: The ID of the feedback entry to update.\n *\n * Returns:\n * Response: The updated feedback entry.\n *\n * Raises:\n * NotFound: If the specified feedback entry does not exist.\n * BadRequest: If the provided data is invalid or the mentor does not exist.\n * @param feedbackId\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserChatFeedback\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorFeedbackUpdate(feedbackId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-feedback/{feedback_id}/',\n path: {\n 'feedback_id': feedbackId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data or mentor not found`,\n 404: `Feedback not found`\n }\n });\n }\n /**\n * Create a new user chat feedback entry.\n *\n * Args:\n * request: The HTTP request containing the feedback data.\n * org: The organization/tenant identifier.\n *\n * Returns:\n * Response: The created feedback entry.\n *\n * Raises:\n * BadRequest: If the provided data is invalid or the mentor does not exist.\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserChatFeedback\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorFeedbackCreateCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-feedback/create/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data or mentor not found`\n }\n });\n }\n /**\n * View to create a mentor from a template\n *\n * Accessible to only tenant admins.\n * @param org\n * @param userId\n * @param requestBody\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorFromTemplateCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-from-template/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve available LLMs for a user.\n * @param org\n * @param userId\n * @returns LLMResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorLlmsList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-llms/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve the list of available mentor tools.\n * @param org\n * @param userId\n * @returns ToolResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorToolsList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-tools/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * View to create a mentor from a template with settings.\n *\n * Accessible to tenant admins only.\n * @param org\n * @param userId\n * @param formData\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorWithSettingsCreate(org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor-with-settings/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Retrieve the list of mentor audiences.\n *\n * Returns:\n * - 200: List of mentor audiences.\n * @param org\n * @param userId\n * @returns MentorAudience\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorAudienceList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/audience/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create a new mentor audience.\n *\n * Accessible to tenant admins only.\n *\n * Returns:\n * - 201: Created mentor audience.\n * - 401: Unauthorized.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorAudience\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorAudienceCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/audience/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 401: `Unauthorized - Only tenant admins can create mentor audiences.`\n }\n });\n }\n /**\n * Delete a mentor audience.\n *\n * Accessible to tenant admins only.\n *\n * Returns:\n * - 204: No content.\n * - 400: Bad request if audience name is missing.\n * - 404: Not found if audience does not exist.\n * - 401: Unauthorized.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorAudienceDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/audience/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 400: `Bad Request - Invalid data.`,\n 401: `Unauthorized - Only tenant admins can delete mentor audiences.`,\n 404: `Not Found - Audience does not exist.`\n }\n });\n }\n /**\n * Retrieve a list of mentor categories.\n *\n * Returns:\n * 200: A list of mentor categories.\n * @param org\n * @param userId\n * @returns MentorCategory\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorCategoriesList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/categories/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create a new mentor category.\n *\n * Accessible only to tenant admins.\n *\n * Returns:\n * 200: Details of the created mentor category.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorCategory\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorCategoriesCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/categories/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete a mentor category.\n *\n * Accessible only to tenant admins.\n *\n * Returns:\n * 204: \"No content\" when Delete succeeded.\n * 400: Bad request data received\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorCategoriesDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/categories/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Seed initial mentors in a tenant.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user initiating the seeding.\n *\n * Returns:\n * Response: A success message with details about the seeded mentors.\n *\n * Raises:\n * BadRequest: If the seeding process fails.\n * @param org\n * @param userId\n * @returns SeedMentorsView\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorSeedRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentor/seed/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 400: `Seeding failed`\n }\n });\n }\n /**\n * Retrieve details of a specific mentor by slug or name.\n * @param mentor\n * @param org\n * @param userId\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve tools available for a particular mentor.\n * @param mentor\n * @param org\n * @param userId\n * @returns ToolResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsAvailableToolsList(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/available-tools/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Generate IBL Call Pro authentication parameters for audio calls.\n *\n * This endpoint creates the necessary authentication tokens and parameters\n * for connecting to a IBL Call Pro room for audio communication with a mentor.\n *\n * Args:\n * request: The HTTP request object containing the required parameters.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user requesting authentication.\n *\n * Returns:\n * Response: IBL Call Pro authentication parameters including URL, room name,\n * participant name, and authentication token.\n *\n * Raises:\n * ValidationError: If the request parameters are invalid.\n * BadRequest: If the IBL Call Pro credentials are not properly configured.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns CallAuthenticationResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsCreateCallCredentialsCreate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/create-call-credentials/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request parameters or improperly configured IBL Call Pro credentials`,\n 401: `Authentication failed`,\n 404: `No mentor or session found`\n }\n });\n }\n /**\n * Retrieve memory components for a specific mentor.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to retrieve memory for.\n *\n * Returns:\n * Response: The memory components for the mentor.\n *\n * Raises:\n * NotFound: If the specified mentor or memory does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns MemoryComponentResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsCurrentMemoryRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/current-memory/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or memory not found`\n }\n });\n }\n /**\n * Update memory components for a specific mentor.\n *\n * Args:\n * request: The HTTP request containing the updated memory data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to update memory for.\n *\n * Returns:\n * Response: The updated memory components for the mentor.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the specified mentor does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns QuestionResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsCurrentMemoryUpdate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/current-memory/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Retrieve the current custom voice settings for a mentor.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the mentor link.\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: The current custom voice settings.\n *\n * Raises:\n * NotFound: If the specified mentor or student does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns MentorCustomVoiceResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsCustomVoiceRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/custom-voice/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or student not found`\n }\n });\n }\n /**\n * Set a custom voice for a mentor.\n *\n * This endpoint allows setting a custom voice for a specific mentor,\n * either using the default voice provider or Elevenlabs.\n *\n * Args:\n * request: The HTTP request containing the voice provider and name.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the mentor link.\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: The updated custom voice settings.\n *\n * Raises:\n * BadRequest: If the provided data is invalid or the voice does not exist.\n * NotFound: If the mentor or student does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorCustomVoiceResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsCustomVoiceCreate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/custom-voice/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data or voice not found`,\n 404: `Mentor or student not found`\n }\n });\n }\n /**\n * Generate audio from text using a mentor's custom voice.\n *\n * This endpoint converts the provided text to speech using the\n * custom voice configured for the specified mentor.\n *\n * Args:\n * request: The HTTP request containing the text to convert.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the mentor link.\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: An MP3 audio file of the synthesized speech.\n *\n * Raises:\n * BadRequest: If the text is empty, credentials are not found, or custom voice is not set.\n * NotFound: If the mentor or student does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param formData\n * @returns any MP3 audio file\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsCustomVoiceTtsCreate(mentor, org, userId, formData) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/custom-voice-tts/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid data, credentials not found, or custom voice not set`,\n 404: `Mentor or student not found`\n }\n });\n }\n /**\n * Update scenarios for a specific mentor.\n *\n * Args:\n * request: The HTTP request containing the updated scenarios.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to update scenarios for.\n *\n * Returns:\n * Response: The updated scenarios for the mentor.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the specified mentor does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorScenario\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsEditScenariosUpdate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/edit-scenarios/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Fork (clone) an existing mentor.\n *\n * Args:\n * request: The HTTP request containing the fork parameters.\n * org: The organization/tenant identifier.\n * mentor: The identifier of the mentor to fork.\n * user_id: The ID of the user initiating the fork.\n *\n * Returns:\n * Response: The newly created forked mentor.\n *\n * Raises:\n * BadRequest: If the provided data is invalid or the fork operation fails.\n * NotFound: If the specified mentor does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns Mentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsForkCreate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/fork/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data or fork failed`,\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Retrieve memory history entries for a specific mentor and user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve memory history for.\n * mentor: The identifier of the mentor to retrieve memory history for.\n *\n * Returns:\n * Response: The memory history entries for the mentor and user.\n *\n * Raises:\n * NotFound: If the specified mentor or memory history does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns MemoryComponentMemoryDetail\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsHistoricalMemoryRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/historical-memory/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or memory history not found`\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param mentor\n * @param org\n * @param userId\n * @returns MemoryProgress\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsMemoryProgressRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/memory-progress/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve memory settings for a specific mentor.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to retrieve settings for.\n *\n * Returns:\n * Response: The memory settings for the mentor.\n *\n * Raises:\n * NotFound: If the specified mentor or settings do not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns MentorMemorySettingsResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsMemorySettingsRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/memory-settings/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or settings not found`\n }\n });\n }\n /**\n * Endpoint for mentor memory item settings.\n *\n * Accessible to platform admins and superusers.\n *\n * Returns:\n *\n * 200: Change mentor memory component item.\n *\n * 400: When request is not valid.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorMemorySettingsResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsMemorySettingsCreate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/memory-settings/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Retrieve evaluation criteria for a specific mentor.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to retrieve evaluations for.\n *\n * Returns:\n * Response: The evaluation criteria for the mentor.\n *\n * Raises:\n * NotFound: If the specified mentor or evaluations do not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns MentorEval\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsMentorEvalRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/mentor-eval/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or evaluations not found`\n }\n });\n }\n /**\n * Create or update evaluation criteria for a specific mentor.\n *\n * Args:\n * request: The HTTP request containing the evaluation data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to create/update evaluations for.\n *\n * Returns:\n * Response: The created or updated evaluation criteria.\n *\n * Raises:\n * BadRequest: If the provided data is invalid or the mentor does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns MentorEval\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsMentorEvalCreate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/mentor-eval/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data or mentor not found`\n }\n });\n }\n /**\n * Run an evaluation for a specific mentor.\n *\n * Args:\n * request: The HTTP request containing the evaluation ID.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to evaluate.\n *\n * Returns:\n * Response: The ID of the generated evaluation report.\n *\n * Raises:\n * BadRequest: If the evaluation ID is invalid or the mentor does not match.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns any Evaluation execution started successfully\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsMentorEvalExecutionCreate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/mentor-eval-execution/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid evaluation ID or mentor mismatch`\n }\n });\n }\n /**\n * Retrieve public mentor settings.\n *\n * Args:\n * request: HTTP request instance.\n * user_id: The ID of the user requesting settings.\n * mentor: The mentor identifier (name, slug, or unique_id).\n * org: The organization key.\n *\n * Returns:\n * Response containing the mentor settings or an error message.\n * @param mentor\n * @param org\n * @param userId\n * @returns MentorSettingsPublic\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsPublicSettingsRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/public-settings/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor not found.`\n }\n });\n }\n /**\n * Retrieve a specific evaluation report.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor that was evaluated.\n * report_id: The ID of the evaluation report to retrieve.\n *\n * Returns:\n * Response: The detailed evaluation report.\n *\n * Raises:\n * BadRequest: If the report does not exist, does not match the mentor, or is still being generated.\n * @param mentor\n * @param org\n * @param reportId\n * @param userId\n * @returns MentorEvalReport\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsReportsMentorEvalReportRetrieve(mentor, org, reportId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/reports/{report_id}/mentor-eval-report/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'report_id': reportId,\n 'user_id': userId\n },\n errors: {\n 400: `Report not found or still being generated`\n }\n });\n }\n /**\n * Retrieve available scenarios for a specific mentor.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * mentor: The identifier of the mentor to retrieve scenarios for.\n *\n * Returns:\n * Response: The available scenarios for the mentor.\n *\n * Raises:\n * NotFound: If the specified mentor or scenarios do not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns MentorScenario\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsScenariosRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/scenarios/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or scenarios not found`\n }\n });\n }\n /**\n * Retrieve Mentor Settings\n * Fetch the settings of a mentor within an organization. Only accessible to tenant admins.\n * @param mentor\n * @param org\n * @param userId\n * @param departmentId Department to authorize users by\n * @returns MentorSettingsPublic\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsSettingsRetrieve(mentor, org, userId, departmentId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/settings/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId\n },\n errors: {\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Update Mentor Settings\n * Update various mentor settings including system prompts, tool permissions, and UI configurations.\n * @param mentor\n * @param org\n * @param userId\n * @param departmentId Department to authorize users by\n * @param formData\n * @returns MentorSettings\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsSettingsUpdate(mentor, org, userId, departmentId, formData) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/settings/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Invalid request data`,\n 404: `Mentor not found`\n }\n });\n }\n /**\n * Retrieve spaced repetition question statistics.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve statistics for.\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: Statistics about the user's performance on spaced repetition questions.\n *\n * Raises:\n * NotFound: If the mentor or student does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @returns SpacedRepetitionQuestionStats\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsSpacedRepetitionQuestionStatsRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/spaced-repetition-question-stats/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or student not found`\n }\n });\n }\n /**\n * Retrieve a list of learning paths associated with a specific mentor and student.\n *\n * This endpoint uses the memory component to establish the learning context for a student\n * under the guidance of a mentor. It verifies that the provided organization identifier matches\n * the mentor's platform key, and then retrieves learning path tags associated with the student's\n * question cards. Each tag is annotated with the total number of question cards and the count of\n * cards with successful repetitions (i.e., correct answers). The learning paths are ordered by the\n * number of correct answers and limited to the top five entries.\n *\n * Args:\n * request: The HTTP request containing the necessary context.\n * org (str): The organization identifier/platform key.\n * user_id (str): The username of the student.\n * mentor (str): The unique identifier of the mentor.\n * *args: Additional positional arguments.\n * **kwargs: Additional keyword arguments.\n *\n * Returns:\n * Resp200onse: memory component detail infomrmation\n *\n * Raises:\n * NotFound: If the memory component for the specified mentor and student cannot be found,\n * or if the organization identifier does not match the mentor's platform key.\n * @param mentor\n * @param org\n * @param userId\n * @returns QuestionCardTag\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsSpacedRepetitionRecommendedPathsList(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/spaced-repetition-recommended-paths/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Mentor or student not found`\n }\n });\n }\n /**\n * Set a specific learning path for spaced repetition.\n *\n * Args:\n * request: The HTTP request containing the learning path.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to set the learning path for.\n * mentor: The unique identifier of the mentor.\n *\n * Returns:\n * Response: The set learning path.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the learning path, mentor, or student does not exist.\n * @param mentor\n * @param org\n * @param userId\n * @param requestBody\n * @returns SpacedRepetitionLearningPath\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsSpacedRepetitionRecommendedPathsUpdate(mentor, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/spaced-repetition-recommended-paths/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Learning path, mentor, or student not found`\n }\n });\n }\n /**\n * Endpoint for getting the star status of a mentor.\n *\n * Accessible to students and admins.\n *\n *\n * Returns:\n *\n * 200: Star status.\n *\n * 400: When request is not valid.\n * @param mentor\n * @param org\n * @param userId\n * @returns StarMentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsStarRetrieve(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/star/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for starring a mentor.\n *\n * Accessible to students and admins.\n *\n *\n * Returns:\n *\n * 200: Star status.\n *\n * 400: When request is not valid.\n * @param mentor\n * @param org\n * @param userId\n * @returns StarMentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsStarCreate(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/star/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Remove a mentor from a user's starred list.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user unstarring the mentor.\n * mentor: The identifier of the mentor to unstar.\n *\n * Returns:\n * Response: The updated star status of the mentor.\n *\n * Raises:\n * NotFound: If the specified mentor or student does not exist.\n * BadRequest: If the request is invalid.\n * @param mentor\n * @param org\n * @param userId\n * @returns StarMentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersMentorsUnstarCreate(mentor, org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/mentors/{mentor}/unstar/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 400: `Invalid request`,\n 404: `Mentor or student not found`\n }\n });\n }\n /**\n * Retrieve metadata for a mentor.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n *\n * Returns:\n * Response: The mentor metadata.\n *\n * Raises:\n * NotFound: If no metadata exists for the specified mentor.\n * @param org\n * @param userId\n * @returns MentorMetadata\n * @throws ApiError\n */\n static aiMentorOrgsUsersMetadataRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/metadata',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Metadata not found`\n }\n });\n }\n /**\n * Endpoint to view and delete Moderation Logs for a tenant.\n *\n * These can be filtered by username, platform_key and mentor id\n *\n *\n * A search query can be conducted to search through the prompts and reason for the moderation catch event.\n * @param org\n * @param userId\n * @param mentor\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param platformKey\n * @param search A search term.\n * @param targetSystem * `Safety System` - Safety System\n * * `Moderation System` - Moderation System\n * @param username\n * @returns PaginatedModerationLogList\n * @throws ApiError\n */\n static aiMentorOrgsUsersModerationLogsList(org, userId, mentor, ordering, page, pageSize, platformKey, search, targetSystem, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/moderation-logs/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'mentor': mentor,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'search': search,\n 'target_system': targetSystem,\n 'username': username\n }\n });\n }\n /**\n * Endpoint to view and delete Moderation Logs for a tenant.\n *\n * These can be filtered by username, platform_key and mentor id\n *\n *\n * A search query can be conducted to search through the prompts and reason for the moderation catch event.\n * @param id A unique integer value identifying this moderation log.\n * @param org\n * @param userId\n * @returns ModerationLog\n * @throws ApiError\n */\n static aiMentorOrgsUsersModerationLogsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/moderation-logs/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to view and delete Moderation Logs for a tenant.\n *\n * These can be filtered by username, platform_key and mentor id\n *\n *\n * A search query can be conducted to search through the prompts and reason for the moderation catch event.\n * @param id A unique integer value identifying this moderation log.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersModerationLogsDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/moderation-logs/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to view logs for periodic agent runs.\n *\n * These logs contain the full mentor output for each run for debugging.\n * Logs are ordered from newest to oldest. However this can be changed.\n *\n * You can also filter logs for a PeriodicAgent by passing the `periodic_agent` query parameter in the URL.\n * @param org\n * @param userId\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param parentMentorId\n * @param parentSessionId\n * @param periodicAgent\n * @param search A search term.\n * @param status * `success` - Success\n * * `error` - Error\n * * `running` - Running\n * @param username\n * @returns PaginatedPeriodicAgentLogList\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentLogsList(org, userId, ordering, page, pageSize, parentMentorId, parentSessionId, periodicAgent, search, status, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agent-logs/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'parent_mentor_id': parentMentorId,\n 'parent_session_id': parentSessionId,\n 'periodic_agent': periodicAgent,\n 'search': search,\n 'status': status,\n 'username': username\n }\n });\n }\n /**\n * Endpoint to view logs for periodic agent runs.\n *\n * These logs contain the full mentor output for each run for debugging.\n * Logs are ordered from newest to oldest. However this can be changed.\n *\n * You can also filter logs for a PeriodicAgent by passing the `periodic_agent` query parameter in the URL.\n * @param id A unique integer value identifying this periodic agent log.\n * @param org\n * @param userId\n * @returns PeriodicAgentLog\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentLogsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agent-logs/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to create and view, update and delete periodic agents.\n *\n * Periodic agents are schedulers issued for mentors. These are configured with input prompt (if any)\n * as well as a cron schedule to trigger the periodic agent.\n *\n * Access to these are restricted to platform admins and tenant administrators\n *\n * Session information for running the periodic agent will be generated with the credentials of the\n * user (platform administrator) who created the agent.\n *\n * A Periodic Agent is allowed to have a `callback_url` and `callback_secret`.\n * When a `callback_url` is set for a Periodic Agent, a post request with data entries containing the log and timestamp\n * of the run will be made to the callback_url provided.\n * Here is the payload structure:\n * ```\n * {\n * \"timestamp\": \"timestamp when the run completed\",\n * \"status\": \"status of the periodic agent\",\n * \"prompt\": \"input prompt to agent,\n * \"agent_output\": \"...final response of agent\",\n * \"log\": \"... full agent run log\",\n * \"log_id\": periodic agent log id.,\n * }\n * ```\n * The payload is encrypted using the `callback_secret` provided.\n *\n * You can validate the payload using the X-Hub-Signature-256 signature header for request data.\n * This is a Sha256 encoded HMAC hex digest of the payload body.\n *\n * ```python\n * import hmac\n * import haslib\n *\n * def validate_payload(request: HttpRequest, callback_secret: str):\n * # Get the X-Hub-Signature-256 header from the request\n * received_signature = request.META.get(\"HTTP_X_HUB_SIGNATURE_256\", \"\")\n *\n * if not received_signature.startswith(\"sha256=\"):\n * # Invalid signature format\n * return False\n *\n * received_signature = received_signature[len(\"sha256=\") :]\n *\n * try:\n * # Get the raw request body\n * payload = request.body\n *\n * # Compute the expected signature using the app_secret\n * expected_signature = hmac.new(\n * callback_secret.encode(), payload, hashlib.sha256\n * ).hexdigest()\n *\n * if hmac.compare_digest(received_signature, expected_signature):\n * # Signatures match, the payload is genuine\n * return True\n * else:\n * # Signatures don't match\n * return False\n * except Exception as e:\n * # Handle any errors that may occur during validation\n * return False\n *\n * ```\n * @param org\n * @param userId\n * @param enabled\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param parentMentorId\n * @param parentSessionId\n * @param previousAgent\n * @param previousAgentStatus The status that the previous agent must be in before this agent gets scheduled.\n *\n * * `success` - Success\n * * `error` - Error\n * * `running` - Running\n * * `pending` - Pending\n * @param search A search term.\n * @param status * `success` - Success\n * * `error` - Error\n * * `running` - Running\n * * `pending` - Pending\n * @param title\n * @param username\n * @returns PaginatedPeriodicAgentList\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentsList(org, userId, enabled, ordering, page, pageSize, parentMentorId, parentSessionId, previousAgent, previousAgentStatus, search, status, title, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agents/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'enabled': enabled,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'parent_mentor_id': parentMentorId,\n 'parent_session_id': parentSessionId,\n 'previous_agent': previousAgent,\n 'previous_agent_status': previousAgentStatus,\n 'search': search,\n 'status': status,\n 'title': title,\n 'username': username\n }\n });\n }\n /**\n * Endpoint to create and view, update and delete periodic agents.\n *\n * Periodic agents are schedulers issued for mentors. These are configured with input prompt (if any)\n * as well as a cron schedule to trigger the periodic agent.\n *\n * Access to these are restricted to platform admins and tenant administrators\n *\n * Session information for running the periodic agent will be generated with the credentials of the\n * user (platform administrator) who created the agent.\n *\n * A Periodic Agent is allowed to have a `callback_url` and `callback_secret`.\n * When a `callback_url` is set for a Periodic Agent, a post request with data entries containing the log and timestamp\n * of the run will be made to the callback_url provided.\n * Here is the payload structure:\n * ```\n * {\n * \"timestamp\": \"timestamp when the run completed\",\n * \"status\": \"status of the periodic agent\",\n * \"prompt\": \"input prompt to agent,\n * \"agent_output\": \"...final response of agent\",\n * \"log\": \"... full agent run log\",\n * \"log_id\": periodic agent log id.,\n * }\n * ```\n * The payload is encrypted using the `callback_secret` provided.\n *\n * You can validate the payload using the X-Hub-Signature-256 signature header for request data.\n * This is a Sha256 encoded HMAC hex digest of the payload body.\n *\n * ```python\n * import hmac\n * import haslib\n *\n * def validate_payload(request: HttpRequest, callback_secret: str):\n * # Get the X-Hub-Signature-256 header from the request\n * received_signature = request.META.get(\"HTTP_X_HUB_SIGNATURE_256\", \"\")\n *\n * if not received_signature.startswith(\"sha256=\"):\n * # Invalid signature format\n * return False\n *\n * received_signature = received_signature[len(\"sha256=\") :]\n *\n * try:\n * # Get the raw request body\n * payload = request.body\n *\n * # Compute the expected signature using the app_secret\n * expected_signature = hmac.new(\n * callback_secret.encode(), payload, hashlib.sha256\n * ).hexdigest()\n *\n * if hmac.compare_digest(received_signature, expected_signature):\n * # Signatures match, the payload is genuine\n * return True\n * else:\n * # Signatures don't match\n * return False\n * except Exception as e:\n * # Handle any errors that may occur during validation\n * return False\n *\n * ```\n * @param org\n * @param userId\n * @param requestBody\n * @returns PeriodicAgentCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentsCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agents/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint to create and view, update and delete periodic agents.\n *\n * Periodic agents are schedulers issued for mentors. These are configured with input prompt (if any)\n * as well as a cron schedule to trigger the periodic agent.\n *\n * Access to these are restricted to platform admins and tenant administrators\n *\n * Session information for running the periodic agent will be generated with the credentials of the\n * user (platform administrator) who created the agent.\n *\n * A Periodic Agent is allowed to have a `callback_url` and `callback_secret`.\n * When a `callback_url` is set for a Periodic Agent, a post request with data entries containing the log and timestamp\n * of the run will be made to the callback_url provided.\n * Here is the payload structure:\n * ```\n * {\n * \"timestamp\": \"timestamp when the run completed\",\n * \"status\": \"status of the periodic agent\",\n * \"prompt\": \"input prompt to agent,\n * \"agent_output\": \"...final response of agent\",\n * \"log\": \"... full agent run log\",\n * \"log_id\": periodic agent log id.,\n * }\n * ```\n * The payload is encrypted using the `callback_secret` provided.\n *\n * You can validate the payload using the X-Hub-Signature-256 signature header for request data.\n * This is a Sha256 encoded HMAC hex digest of the payload body.\n *\n * ```python\n * import hmac\n * import haslib\n *\n * def validate_payload(request: HttpRequest, callback_secret: str):\n * # Get the X-Hub-Signature-256 header from the request\n * received_signature = request.META.get(\"HTTP_X_HUB_SIGNATURE_256\", \"\")\n *\n * if not received_signature.startswith(\"sha256=\"):\n * # Invalid signature format\n * return False\n *\n * received_signature = received_signature[len(\"sha256=\") :]\n *\n * try:\n * # Get the raw request body\n * payload = request.body\n *\n * # Compute the expected signature using the app_secret\n * expected_signature = hmac.new(\n * callback_secret.encode(), payload, hashlib.sha256\n * ).hexdigest()\n *\n * if hmac.compare_digest(received_signature, expected_signature):\n * # Signatures match, the payload is genuine\n * return True\n * else:\n * # Signatures don't match\n * return False\n * except Exception as e:\n * # Handle any errors that may occur during validation\n * return False\n *\n * ```\n * @param id A unique integer value identifying this periodic agent.\n * @param org\n * @param userId\n * @returns PeriodicAgent\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agents/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to create and view, update and delete periodic agents.\n *\n * Periodic agents are schedulers issued for mentors. These are configured with input prompt (if any)\n * as well as a cron schedule to trigger the periodic agent.\n *\n * Access to these are restricted to platform admins and tenant administrators\n *\n * Session information for running the periodic agent will be generated with the credentials of the\n * user (platform administrator) who created the agent.\n *\n * A Periodic Agent is allowed to have a `callback_url` and `callback_secret`.\n * When a `callback_url` is set for a Periodic Agent, a post request with data entries containing the log and timestamp\n * of the run will be made to the callback_url provided.\n * Here is the payload structure:\n * ```\n * {\n * \"timestamp\": \"timestamp when the run completed\",\n * \"status\": \"status of the periodic agent\",\n * \"prompt\": \"input prompt to agent,\n * \"agent_output\": \"...final response of agent\",\n * \"log\": \"... full agent run log\",\n * \"log_id\": periodic agent log id.,\n * }\n * ```\n * The payload is encrypted using the `callback_secret` provided.\n *\n * You can validate the payload using the X-Hub-Signature-256 signature header for request data.\n * This is a Sha256 encoded HMAC hex digest of the payload body.\n *\n * ```python\n * import hmac\n * import haslib\n *\n * def validate_payload(request: HttpRequest, callback_secret: str):\n * # Get the X-Hub-Signature-256 header from the request\n * received_signature = request.META.get(\"HTTP_X_HUB_SIGNATURE_256\", \"\")\n *\n * if not received_signature.startswith(\"sha256=\"):\n * # Invalid signature format\n * return False\n *\n * received_signature = received_signature[len(\"sha256=\") :]\n *\n * try:\n * # Get the raw request body\n * payload = request.body\n *\n * # Compute the expected signature using the app_secret\n * expected_signature = hmac.new(\n * callback_secret.encode(), payload, hashlib.sha256\n * ).hexdigest()\n *\n * if hmac.compare_digest(received_signature, expected_signature):\n * # Signatures match, the payload is genuine\n * return True\n * else:\n * # Signatures don't match\n * return False\n * except Exception as e:\n * # Handle any errors that may occur during validation\n * return False\n *\n * ```\n * @param id A unique integer value identifying this periodic agent.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PeriodicAgentCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentsUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agents/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint to create and view, update and delete periodic agents.\n *\n * Periodic agents are schedulers issued for mentors. These are configured with input prompt (if any)\n * as well as a cron schedule to trigger the periodic agent.\n *\n * Access to these are restricted to platform admins and tenant administrators\n *\n * Session information for running the periodic agent will be generated with the credentials of the\n * user (platform administrator) who created the agent.\n *\n * A Periodic Agent is allowed to have a `callback_url` and `callback_secret`.\n * When a `callback_url` is set for a Periodic Agent, a post request with data entries containing the log and timestamp\n * of the run will be made to the callback_url provided.\n * Here is the payload structure:\n * ```\n * {\n * \"timestamp\": \"timestamp when the run completed\",\n * \"status\": \"status of the periodic agent\",\n * \"prompt\": \"input prompt to agent,\n * \"agent_output\": \"...final response of agent\",\n * \"log\": \"... full agent run log\",\n * \"log_id\": periodic agent log id.,\n * }\n * ```\n * The payload is encrypted using the `callback_secret` provided.\n *\n * You can validate the payload using the X-Hub-Signature-256 signature header for request data.\n * This is a Sha256 encoded HMAC hex digest of the payload body.\n *\n * ```python\n * import hmac\n * import haslib\n *\n * def validate_payload(request: HttpRequest, callback_secret: str):\n * # Get the X-Hub-Signature-256 header from the request\n * received_signature = request.META.get(\"HTTP_X_HUB_SIGNATURE_256\", \"\")\n *\n * if not received_signature.startswith(\"sha256=\"):\n * # Invalid signature format\n * return False\n *\n * received_signature = received_signature[len(\"sha256=\") :]\n *\n * try:\n * # Get the raw request body\n * payload = request.body\n *\n * # Compute the expected signature using the app_secret\n * expected_signature = hmac.new(\n * callback_secret.encode(), payload, hashlib.sha256\n * ).hexdigest()\n *\n * if hmac.compare_digest(received_signature, expected_signature):\n * # Signatures match, the payload is genuine\n * return True\n * else:\n * # Signatures don't match\n * return False\n * except Exception as e:\n * # Handle any errors that may occur during validation\n * return False\n *\n * ```\n * @param id A unique integer value identifying this periodic agent.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PeriodicAgentCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentsPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agents/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint to create and view, update and delete periodic agents.\n *\n * Periodic agents are schedulers issued for mentors. These are configured with input prompt (if any)\n * as well as a cron schedule to trigger the periodic agent.\n *\n * Access to these are restricted to platform admins and tenant administrators\n *\n * Session information for running the periodic agent will be generated with the credentials of the\n * user (platform administrator) who created the agent.\n *\n * A Periodic Agent is allowed to have a `callback_url` and `callback_secret`.\n * When a `callback_url` is set for a Periodic Agent, a post request with data entries containing the log and timestamp\n * of the run will be made to the callback_url provided.\n * Here is the payload structure:\n * ```\n * {\n * \"timestamp\": \"timestamp when the run completed\",\n * \"status\": \"status of the periodic agent\",\n * \"prompt\": \"input prompt to agent,\n * \"agent_output\": \"...final response of agent\",\n * \"log\": \"... full agent run log\",\n * \"log_id\": periodic agent log id.,\n * }\n * ```\n * The payload is encrypted using the `callback_secret` provided.\n *\n * You can validate the payload using the X-Hub-Signature-256 signature header for request data.\n * This is a Sha256 encoded HMAC hex digest of the payload body.\n *\n * ```python\n * import hmac\n * import haslib\n *\n * def validate_payload(request: HttpRequest, callback_secret: str):\n * # Get the X-Hub-Signature-256 header from the request\n * received_signature = request.META.get(\"HTTP_X_HUB_SIGNATURE_256\", \"\")\n *\n * if not received_signature.startswith(\"sha256=\"):\n * # Invalid signature format\n * return False\n *\n * received_signature = received_signature[len(\"sha256=\") :]\n *\n * try:\n * # Get the raw request body\n * payload = request.body\n *\n * # Compute the expected signature using the app_secret\n * expected_signature = hmac.new(\n * callback_secret.encode(), payload, hashlib.sha256\n * ).hexdigest()\n *\n * if hmac.compare_digest(received_signature, expected_signature):\n * # Signatures match, the payload is genuine\n * return True\n * else:\n * # Signatures don't match\n * return False\n * except Exception as e:\n * # Handle any errors that may occur during validation\n * return False\n *\n * ```\n * @param id A unique integer value identifying this periodic agent.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersPeriodicAgentsDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/periodic-agents/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve pinned messages for a user.\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n * user_id: The username of the student.\n *\n * Returns:\n * Response: Paginated list of pinned messages.\n *\n * Raises:\n * NotFound: If the student or session does not exist.\n * @param org\n * @param sessionId Session id of the message to pin\n * @param userId\n * @returns PinnedMessageGet\n * @throws ApiError\n */\n static aiMentorOrgsUsersPinMessageList(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/pin-message/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'session_id': sessionId\n }\n });\n }\n /**\n * Create a pinned message for a user session.\n *\n * Args:\n * request: The HTTP request containing session details.\n * org: Organization key identifier.\n * user_id: The username of the student.\n *\n * Returns:\n * Response: Status 201 on success.\n *\n * Raises:\n * NotFound: If the student does not exist.\n * ValidationError: If request data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PinnedMessageCreate\n * @throws ApiError\n */\n static aiMentorOrgsUsersPinMessageCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/pin-message/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete a pinned message for a user.\n *\n * Args:\n * request: The HTTP request containing session details.\n * org: Organization key identifier.\n * user_id: The username of the student.\n *\n * Returns:\n * Response: Status 204 on success.\n *\n * Raises:\n * NotFound: If the student or pinned message does not exist.\n * ValidationError: If request data is invalid.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersPinMessageDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/pin-message/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoints for viewing jobs and their status\n * A job run refers to a task with steps that an agent is going to undertake.\n * You can filter job runs by their status.\n * Note that for a single user and a specified session, at most only one JobRun instance\n * is active at any point in time.\n * @param org\n * @param userId\n * @param active\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param session\n * @returns PaginatedJobRunList\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlannedJobsList(org, userId, active, ordering, page, pageSize, search, session) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/planned-jobs/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'active': active,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'session': session\n }\n });\n }\n /**\n * Endpoints for viewing jobs and their status\n * A job run refers to a task with steps that an agent is going to undertake.\n * You can filter job runs by their status.\n * Note that for a single user and a specified session, at most only one JobRun instance\n * is active at any point in time.\n * @param id A unique integer value identifying this job run.\n * @param org\n * @param userId\n * @returns JobRun\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlannedJobsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/planned-jobs/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoints for viewing playwright scripts and updating playwright scripts for a tenant and user.\n * @param org\n * @param userId\n * @param isPublic\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search A search term.\n * @param student edX user ID\n * @returns PaginatedPlayWrightScriptList\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlaywrightScriptsList(org, userId, isPublic, ordering, page, pageSize, search, student) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/playwright-scripts/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'is_public': isPublic,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'student': student\n }\n });\n }\n /**\n * Endpoints for viewing playwright scripts and updating playwright scripts for a tenant and user.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PlayWrightScript\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlaywrightScriptsCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/playwright-scripts/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoints for viewing playwright scripts and updating playwright scripts for a tenant and user.\n * @param id A unique integer value identifying this play wright script.\n * @param org\n * @param userId\n * @returns PlayWrightScript\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlaywrightScriptsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/playwright-scripts/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoints for viewing playwright scripts and updating playwright scripts for a tenant and user.\n * @param id A unique integer value identifying this play wright script.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PlayWrightScript\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlaywrightScriptsUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/playwright-scripts/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoints for viewing playwright scripts and updating playwright scripts for a tenant and user.\n * @param id A unique integer value identifying this play wright script.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PlayWrightScript\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlaywrightScriptsPartialUpdate(id, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/playwright-scripts/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoints for viewing playwright scripts and updating playwright scripts for a tenant and user.\n * @param id A unique integer value identifying this play wright script.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersPlaywrightScriptsDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/playwright-scripts/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve predictive analytics based on historical data variables.\n *\n * Args:\n * request: HTTP request containing predictive analytics input.\n * org: Organization key identifier.\n *\n * Returns:\n * - 200: Object containing predicted data.\n * - 400: When AI response cannot be loaded into JSON.\n * - 404: When OpenAI key for the tenant is not set.\n * - 429: When OpenAI request exceeds the rate limit.\n *\n * Example:\n * **POST** `/api/ai-prompt/orgs/main/users/johndoe/predictive-analytics/`\n * @param org\n * @param userId\n * @param requestBody\n * @returns PredictiveAnalyticsResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersPredictiveAnalyticsCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/predictive-analytics/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieves recent chat messages based on provided query parameters.\n *\n * Returns:\n * 200: Paginated List of chat messages.\n * 400: Invalid query parameters.\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static aiMentorOrgsUsersRecentMessagesRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/recent-messages/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for listing most recently accessed mentors.\n *\n * Accessible to students and admins.\n *\n *\n * Returns:\n *\n * 200: List of most recently accessed mentors.\n *\n * 400: When request is not valid.\n * @param org\n * @param userId\n * @returns RecentlyAccessedMentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersRecentlyAccessedMentorsList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/recently-accessed-mentors/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve recommended courses for a specific user.\n *\n * Args:\n * request: The HTTP request containing query parameters.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to get recommendations for.\n *\n * Returns:\n * Response: A list of recommended courses.\n *\n * Raises:\n * BadRequest: If the query parameters are invalid.\n * NotFound: If the OpenAI API key for the tenant is not found.\n * TooManyRequests: If rate limits are exceeded.\n * ServerError: If there's an error processing the AI response.\n * @param org\n * @param userId\n * @param includeLearnerSkills Include available learner skills for search\n * @param includeMainCourses Include courses from the main tenant\n * @param rankByDifficulty Rank by course difficulty\n * @param returnCourseData Return course data\n * @param returnNumber Number of courses to return\n * @param searchTerms Terms to be searched\n * @returns RecommendCourseResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersRecommendCoursesRetrieve(org, userId, includeLearnerSkills = true, includeMainCourses = true, rankByDifficulty = false, returnCourseData = false, returnNumber, searchTerms) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/recommend-courses/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'include_learner_skills': includeLearnerSkills,\n 'include_main_courses': includeMainCourses,\n 'rank_by_difficulty': rankByDifficulty,\n 'return_course_data': returnCourseData,\n 'return_number': returnNumber,\n 'search_terms': searchTerms\n },\n errors: {\n 400: `Invalid query parameters`,\n 404: `API key not found`,\n 429: `Rate limit exceeded`,\n 500: `Server error processing AI response`\n }\n });\n }\n /**\n * Retrieve recommended course blocks for a specific user.\n *\n * Args:\n * request: The HTTP request containing query parameters.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to get recommendations for.\n *\n * Returns:\n * Response: A list of recommended course blocks.\n *\n * Raises:\n * BadRequest: If the query parameters are invalid.\n * @param org\n * @param userId\n * @param includeLearnerSkills Include available learner skills for search\n * @param includeMainCourses Include courses from the main tenant\n * @param rankByDifficulty Rank by course difficulty\n * @param returnCourseData Return course data\n * @param returnNumber Number of courses to return\n * @param searchTerms Terms to be searched\n * @returns RecommendCourseBlock\n * @throws ApiError\n */\n static aiMentorOrgsUsersRecommendCoursesBlockRetrieve(org, userId, includeLearnerSkills = true, includeMainCourses = true, rankByDifficulty = false, returnCourseData = false, returnNumber, searchTerms) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/recommend-courses-block/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'include_learner_skills': includeLearnerSkills,\n 'include_main_courses': includeMainCourses,\n 'rank_by_difficulty': rankByDifficulty,\n 'return_course_data': returnCourseData,\n 'return_number': returnNumber,\n 'search_terms': searchTerms\n },\n errors: {\n 400: `Invalid query parameters`\n }\n });\n }\n /**\n * Search for web resources based on a query.\n *\n * Args:\n * request: The HTTP request containing the search query.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n *\n * Returns:\n * Response: A list of web resources matching the query.\n *\n * Raises:\n * ValidationError: If the search fails or returns no results.\n * @param org\n * @param userId\n * @param requestBody\n * @returns WebResource\n * @throws ApiError\n */\n static aiMentorOrgsUsersResourcesWebCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/resources/web/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Failed to fetch web resources`\n }\n });\n }\n /**\n * Endpoint to view and delete Safety System Logs for a tenant.\n *\n * These can be filtered by username, platform_key and mentor id\n *\n *\n * A search query can be conducted to search through the prompts and reason for the moderation catch event.\n * @param org\n * @param userId\n * @param mentor\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param platformKey\n * @param search A search term.\n * @param targetSystem * `Safety System` - Safety System\n * * `Moderation System` - Moderation System\n * @param username\n * @returns PaginatedModerationLogList\n * @throws ApiError\n */\n static aiMentorOrgsUsersSafetyLogsList(org, userId, mentor, ordering, page, pageSize, platformKey, search, targetSystem, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/safety-logs/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'mentor': mentor,\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'search': search,\n 'target_system': targetSystem,\n 'username': username\n }\n });\n }\n /**\n * Endpoint to view and delete Safety System Logs for a tenant.\n *\n * These can be filtered by username, platform_key and mentor id\n *\n *\n * A search query can be conducted to search through the prompts and reason for the moderation catch event.\n * @param id A unique integer value identifying this moderation log.\n * @param org\n * @param userId\n * @returns ModerationLog\n * @throws ApiError\n */\n static aiMentorOrgsUsersSafetyLogsRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/safety-logs/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to view and delete Safety System Logs for a tenant.\n *\n * These can be filtered by username, platform_key and mentor id\n *\n *\n * A search query can be conducted to search through the prompts and reason for the moderation catch event.\n * @param id A unique integer value identifying this moderation log.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersSafetyLogsDestroy(id, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/safety-logs/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve session details including message counts and timestamps.\n *\n * Query Parameters:\n * page (optional, int): Page number for pagination.\n *\n * Returns:\n * - 200: Paginated list of session details.\n * - 404: Session not found.\n * @param mentor\n * @param org\n * @param userId\n * @param page Page number for pagination\n * @returns SessionDetail\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionDetailMentorsList(mentor, org, userId, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/session-detail/mentors/{mentor}/',\n path: {\n 'mentor': mentor,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page\n },\n errors: {\n 404: `Session not found`\n }\n });\n }\n /**\n * Retrieve user sessions filtered by start date and end date.\n *\n * Query Parameters:\n * start_date (optional, ISO format): Start date for filtering sessions.\n * end_date (optional, ISO format): End date for filtering sessions.\n *\n * Returns:\n * - 200: List of session IDs with insertion timestamps.\n * - 400: Invalid request parameters.\n * @param org\n * @param userId\n * @param endDate\n * @param startDate\n * @returns ChatHistorySessionId\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionidList(org, userId, endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessionid/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n },\n errors: {\n 400: `Bad request`\n }\n });\n }\n /**\n * Retrieve or create a chat session with a mentor.\n *\n * Passing `null` as `tools` results in using all tools assigned to the mentor.\n * To specify that no tools be used, pass an empty list.\n *\n * Args:\n * request: HTTP request containing mentor details.\n * org: Organization key identifier.\n * user_id (optional): Username for authentication (if required by the mentor).\n *\n * Returns:\n * Response: JSON object containing the session ID.\n *\n * Raises:\n * Http404: If the mentor is not found.\n * ValidationError: If the username is invalid.\n * ValidationError: If one or more tool slugs are invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns ChatSessionResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve Chat Messages\n * Fetches chat messages for a specific session.\n * @param org\n * @param sessionId\n * @param userId\n * @param share\n * @returns MessageView\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsRetrieve(org, sessionId, userId, share = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n query: {\n 'share': share\n }\n });\n }\n /**\n * Update the title of a chat session and its tools\n * @param org\n * @param sessionId\n * @param userId\n * @param requestBody\n * @returns MessageViewUpdatResponse\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsUpdate(org, sessionId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Deletes all messages in a chat session.\n * @param org\n * @param sessionId\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsDestroy(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to fetch the logs of a session.\n * Logs are cached for up to 1 hour of their creation: accessing the logs after an hour will result in an empty data.\n *\n * This is intentional and made to avoid cases where logs bloat our in-memory db.\n *\n * Accessible to tenant admins and students.\n *\n * Url Args:\n * org (str): The organization's platform key.\n * user_id (str): The username identifier of the individual.\n * session_id (str): The session id.\n *\n * Returns:\n *\n * 200: a SessionBrowserScreenshot object\n * @param org\n * @param sessionId\n * @param userId\n * @returns SessionBrowserScreenshot\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsBrowserScreenshotRetrieve(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/browser-screenshot/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n errors: {\n 404: `Session or screenshots not found`\n }\n });\n }\n /**\n * Retrieves the chat history for a session as a plain text file.\n *\n * Returns:\n * 200: txt file containing coversation\n * @param org\n * @param sessionId\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsDownloadSessionRetrieve(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/download-session',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve memory data for a specific session.\n *\n * This endpoint returns the memory components (knowledge gaps, lessons learned,\n * help requests) that were generated during the specified chat session.\n *\n * Args:\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the session.\n * session_id: The ID of the session to retrieve memory for.\n *\n * Returns:\n * Response: The memory data associated with the session.\n *\n * Raises:\n * NotFound: If the session does not exist or does not belong to the user.\n * @param org\n * @param sessionId\n * @param userId\n * @returns SessionMemoryStorage\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsMemoryRetrieve(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/memory/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n errors: {\n 404: `Session not found or does not belong to user`\n }\n });\n }\n /**\n * Retrieve shell logs for a specific session.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the session.\n * session_id: The ID of the session to retrieve logs for.\n *\n * Returns:\n * Response: The shell logs for the specified session.\n *\n * Raises:\n * NotFound: If the specified session does not exist.\n * @param org\n * @param sessionId\n * @param userId\n * @returns ShellLogs\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsShellLogsRetrieve(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/shell-logs/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n errors: {\n 404: `Session not found`\n }\n });\n }\n /**\n * Retrieve a list of related questions based on a chat session.\n * @param org\n * @param sessionId\n * @param userId\n * @param numQuestions\n * @returns RelatedText\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsSuggestionList(org, sessionId, userId, numQuestions = 3) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/suggestion',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n query: {\n 'num_questions': numQuestions\n }\n });\n }\n /**\n * Retrieves the chat history for a given session if the export task is ready.\n *\n * Returns:\n *\n * 200: When task is not ready.\n *\n * 200: chat history object\n *\n * 400: When data is not valid.\n * @param org\n * @param sessionId\n * @param taskId\n * @param userId\n * @param toCsv Choose download in csv or not\n * @returns ChatHistoryItem\n * @throws ApiError\n */\n static aiMentorOrgsUsersSessionsTasksRetrieve(org, sessionId, taskId, userId, toCsv = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/sessions/{session_id}/tasks/{task_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'task_id': taskId,\n 'user_id': userId\n },\n query: {\n 'to_csv': toCsv\n }\n });\n }\n /**\n * Retrieve all LLM models assigned to a specific tenant.\n *\n * Args:\n * request: The HTTP request.\n * org: The unique identifier of the tenant.\n *\n * Returns:\n * Response: A list of LLM models assigned to the tenant.\n *\n * Raises:\n * NotFound: If the specified tenant does not have any associated models.\n * ValidationError: If an unexpected error occurs.\n * @param org\n * @param userId\n * @returns LLMModelForTenant\n * @throws ApiError\n */\n static aiMentorOrgsUsersSettingsTenantLlmList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/settings/tenant-llm/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create or update an LLM model for a tenant.\n *\n * Accessible only to tenant administrators.\n *\n * Args:\n * request: The HTTP request containing LLM model details.\n * org: The unique identifier of the tenant.\n *\n * Returns:\n * Response: Details of the newly created or updated LLM model.\n *\n * Raises:\n * ValidationError: If request data is invalid.\n * NotFound: If the tenant does not exist.\n * @param org\n * @param userId\n * @param requestBody\n * @returns LLMModelForTenant\n * @throws ApiError\n */\n static aiMentorOrgsUsersSettingsTenantLlmCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/settings/tenant-llm/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve a list of mentors starred by a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve starred mentors for.\n *\n * Returns:\n * Response: A list of the user's starred mentors, sorted by most recently accessed.\n *\n * Raises:\n * NotFound: If the specified student does not exist.\n * BadRequest: If the request is invalid.\n * @param org\n * @param userId\n * @returns StarMentor\n * @throws ApiError\n */\n static aiMentorOrgsUsersStarredMentorsList(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/starred-mentors/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 400: `Invalid request`,\n 404: `Student not found`\n }\n });\n }\n /**\n * Retrieves the status of a task using its task ID.\n *\n * Accessible to both tenant admins and students.\n *\n * Returns:\n *\n * 200: task id\n * @param org\n * @param taskId\n * @param userId\n * @returns RetrieveTask\n * @throws ApiError\n */\n static aiMentorOrgsUsersTasksRetrieve(org, taskId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/tasks/{task_id}',\n path: {\n 'org': org,\n 'task_id': taskId,\n 'user_id': userId\n }\n });\n }\n /**\n * Export chat history for a session.\n *\n * Returns:\n * 200: Task ID for the export operation.\n * @param org\n * @param sessionId\n * @param userId\n * @param requestBody\n * @returns TaskView\n * @throws ApiError\n */\n static aiMentorOrgsUsersTasksSessionsCreate(org, sessionId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/tasks/sessions/{session_id}/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve a list of available voice options.\n *\n * Args:\n * request: The HTTP request.\n *\n * Returns:\n * Response: A list of available voice options.\n *\n * Raises:\n * NotFound: If no voice options are available.\n * @param org\n * @param userId\n * @param ordering Which field to use when ordering the results.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param provider * `openai` - Openai\n * * `google` - Google\n * * `elevenlabs` - Elevenlabs\n * @param search A search term.\n * @returns PaginatedVoiceList\n * @throws ApiError\n */\n static aiMentorOrgsUsersVoicesList(org, userId, ordering, page, pageSize, provider, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/voices/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'ordering': ordering,\n 'page': page,\n 'page_size': pageSize,\n 'provider': provider,\n 'search': search\n },\n errors: {\n 404: `Voice options not found`\n }\n });\n }\n /**\n * Retrieve details of a specific voice option.\n *\n * Args:\n * request: The HTTP request.\n * pk: The primary key of the voice option to retrieve.\n *\n * Returns:\n * Response: The details of the specified voice option.\n *\n * Raises:\n * NotFound: If the specified voice option does not exist.\n * @param id A unique integer value identifying this voice.\n * @param org\n * @param userId\n * @returns Voice\n * @throws ApiError\n */\n static aiMentorOrgsUsersVoicesRetrieve(id, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-mentor/orgs/{org}/users/{user_id}/voices/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Voice option not found`\n }\n });\n }\n /**\n * @param org\n * @param slug\n * @returns any No response body\n * @throws ApiError\n */\n static aiMentorOrgsWebhooksAzureTriggerCreate(org, slug) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/webhooks/azure/trigger/{slug}/',\n path: {\n 'org': org,\n 'slug': slug\n }\n });\n }\n /**\n * Handle incoming POST requests from GitHub webhook for pull requests.\n *\n * Args:\n * request: The HTTP request object containing the webhook payload.\n * org: the organizaion name.\n *\n * Returns:\n * Response: A response indicating the result of processing the webhook event.\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static aiMentorOrgsWebhooksGithubPullrequestCreate(org) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/orgs/{org}/webhooks/github/pullrequest/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * @returns any No response body\n * @throws ApiError\n */\n static aiMentorWebhooksAzureEmailchatCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-mentor/webhooks/azure/emailchat/'\n });\n }\n}\n\nclass AiPromptService {\n /**\n * Create or update metadata for a prompt.\n *\n * Args:\n * request: The HTTP request containing the metadata.\n * org: The organization/tenant identifier.\n *\n * Returns:\n * Response: The created or updated prompt metadata.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param requestBody\n * @returns Metadata\n * @throws ApiError\n */\n static aiPromptOrgsMetadataCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/metadata/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Retrieve chat memory for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve chat memory for.\n *\n * Returns:\n * Response: The user's chat memory entries.\n *\n * Raises:\n * NotFound: If no chat memory exists for the user.\n * @param org\n * @param userId\n * @returns UserAllChatMemoryView\n * @throws ApiError\n */\n static aiPromptOrgsUsersAllChatsMemoryRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/all-chats-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory not found`\n }\n });\n }\n /**\n * Create a new chat memory entry for a user.\n *\n * Args:\n * request: The HTTP request containing the chat memory data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to create chat memory for.\n *\n * Returns:\n * Response: The created chat memory entry.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserAllChatMemoryView\n * @throws ApiError\n */\n static aiPromptOrgsUsersAllChatsMemoryCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/all-chats-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Update chat memory for a specific user.\n *\n * Args:\n * request: The HTTP request containing the updated chat memory data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to update chat memory for.\n *\n * Returns:\n * Response: A confirmation of the scheduled update task.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If no chat memory exists for the user.\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserChatMemoryUpdateView\n * @throws ApiError\n */\n static aiPromptOrgsUsersAllChatsMemoryUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/all-chats-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Memory not found`\n }\n });\n }\n /**\n * Delete all chat memory for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to delete chat memory for.\n *\n * Returns:\n * Response: A success message if the memory was deleted.\n *\n * Raises:\n * NotFound: If no chat memory exists for the user.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersAllChatsMemoryDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/all-chats-memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory not found`\n }\n });\n }\n /**\n * Update a specific chat memory entry.\n *\n * Args:\n * request: The HTTP request containing the updated chat memory data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the memory.\n * memory_id: The ID of the specific memory entry to update.\n *\n * Returns:\n * Response: The updated chat memory entry.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the specified memory entry does not exist.\n * @param memoryId\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserAllChatMemoryView\n * @throws ApiError\n */\n static aiPromptOrgsUsersAllChatsMemoryUpdate2(memoryId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/all-chats-memory/{memory_id}/',\n path: {\n 'memory_id': memoryId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Memory not found`\n }\n });\n }\n /**\n * Delete a specific chat memory entry.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the memory.\n * memory_id: The ID of the specific memory entry to delete.\n *\n * Returns:\n * Response: A success message if the memory was deleted.\n *\n * Raises:\n * NotFound: If the specified memory entry does not exist.\n * @param memoryId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersAllChatsMemoryDestroy2(memoryId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/all-chats-memory/{memory_id}/',\n path: {\n 'memory_id': memoryId,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory not found`\n }\n });\n }\n /**\n * Retrieve the chat memory status for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve memory status for.\n *\n * Returns:\n * Response: The user's chat memory status.\n *\n * Raises:\n * NotFound: If no memory status exists for the user.\n * @param org\n * @param userId\n * @returns UserChatMemoryStatusView\n * @throws ApiError\n */\n static aiPromptOrgsUsersChatMemoryStatusRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/chat-memory-status/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory status not found`\n }\n });\n }\n /**\n * Update the chat memory status for a specific user.\n *\n * Args:\n * request: The HTTP request containing the updated status.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to update memory status for.\n *\n * Returns:\n * Response: The updated chat memory status.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserChatMemoryStatusView\n * @throws ApiError\n */\n static aiPromptOrgsUsersChatMemoryStatusUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/chat-memory-status/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Retrieve all available prompt languages.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n *\n * Returns:\n * Response: A list of available prompt languages.\n * @param org\n * @param userId\n * @returns LanguagesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersLanguagesRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/languages/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create a new prompt language.\n *\n * Args:\n * request: The HTTP request containing the language data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user creating the language.\n *\n * Returns:\n * Response: The created prompt language.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns LanguagesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersLanguagesCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/languages/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Update a specific prompt language.\n *\n * Args:\n * request: The HTTP request containing the updated language data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * language_id: The ID of the language to update.\n *\n * Returns:\n * Response: The updated prompt language.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the specified language does not exist.\n * @param languageId\n * @param org\n * @param userId\n * @param requestBody\n * @returns LanguagesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersLanguagesUpdate(languageId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/languages/{language_id}/',\n path: {\n 'language_id': languageId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Language not found`\n }\n });\n }\n /**\n * Delete a specific prompt language.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n * language_id: The ID of the language to delete.\n *\n * Returns:\n * Response: A success message if the language was deleted.\n *\n * Raises:\n * NotFound: If the specified language does not exist.\n * @param languageId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersLanguagesDestroy(languageId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/languages/{language_id}/',\n path: {\n 'language_id': languageId,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Language not found`\n }\n });\n }\n /**\n * Retrieve catalog item memory for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve catalog item memory for.\n *\n * Returns:\n * Response: The user's catalog item memory entries.\n *\n * Raises:\n * NotFound: If no catalog item memory exists for the user.\n * @param org\n * @param userId\n * @returns UserCatalogItemMemoryView\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory not found`\n }\n });\n }\n /**\n * Create a new catalog item memory entry for a user.\n *\n * Args:\n * request: The HTTP request containing the catalog item memory data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to create catalog item memory for.\n *\n * Returns:\n * Response: The created catalog item memory entry.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserCatalogItemMemoryView\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Delete all catalog item memory for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to delete catalog item memory for.\n *\n * Returns:\n * Response: A success message if the memory was deleted.\n *\n * Raises:\n * NotFound: If no catalog item memory exists for the user.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory not found`\n }\n });\n }\n /**\n * Retrieve a user's memory context settings.\n * @param org\n * @param userId\n * @returns UserMemoryContextResponse\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryContextRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory-context/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Updates the user's memory context settings.\n *\n * Returns:\n *\n * 200: list of user memory context data.\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserMemoryContextResponse\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryContextUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory-context/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve the memory status for a specific user.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to retrieve memory status for.\n *\n * Returns:\n * Response: The user's memory status.\n *\n * Raises:\n * NotFound: If no memory status exists for the user.\n * @param org\n * @param userId\n * @returns MemoryStatusView\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryStatusRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory-status/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory status not found`\n }\n });\n }\n /**\n * Update the memory status for a specific user.\n *\n * Args:\n * request: The HTTP request containing the updated status.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user to update memory status for.\n *\n * Returns:\n * Response: The updated memory status.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns MemoryStatusView\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryStatusUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory-status/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`\n }\n });\n }\n /**\n * Update a specific catalog item memory entry.\n *\n * Args:\n * request: The HTTP request containing the updated catalog item memory data.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the memory.\n * memory_id: The ID of the specific memory entry to update.\n *\n * Returns:\n * Response: The updated catalog item memory entry.\n *\n * Raises:\n * BadRequest: If the provided data is invalid.\n * NotFound: If the specified memory entry does not exist.\n * @param memoryId\n * @param org\n * @param userId\n * @param requestBody\n * @returns UserCatalogItemMemoryView\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryUpdate(memoryId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory/{memory_id}/',\n path: {\n 'memory_id': memoryId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid data`,\n 404: `Memory not found`\n }\n });\n }\n /**\n * Delete a specific catalog item memory entry.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user who owns the memory.\n * memory_id: The ID of the specific memory entry to delete.\n *\n * Returns:\n * Response: A success message if the memory was deleted.\n *\n * Raises:\n * NotFound: If the specified memory entry does not exist.\n * @param memoryId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersMemoryDestroy2(memoryId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/memory/{memory_id}/',\n path: {\n 'memory_id': memoryId,\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Memory not found`\n }\n });\n }\n /**\n * Retrieve metadata for a prompt.\n *\n * Args:\n * request: The HTTP request.\n * org: The organization/tenant identifier.\n * user_id: The ID of the user making the request.\n *\n * Returns:\n * Response: The prompt metadata.\n *\n * Raises:\n * NotFound: If no metadata exists for the specific prompt\n * @param org\n * @param userId\n * @returns Metadata\n * @throws ApiError\n */\n static aiPromptOrgsUsersMetadataRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/metadata',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 404: `Metadata not found`\n }\n });\n }\n /**\n * API viewset for managing prompts.\n *\n * This view allows tenant admins and students to create, retrieve, update,\n * and filter prompts based on various parameters.\n *\n * Permissions:\n * - Accessible to both tenant administrators and students\n * @param org\n * @param userId\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptList(org, userId, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompt/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n }\n });\n }\n /**\n * Create a new prompt.\n *\n * Args:\n * request: HTTP request containing prompt data.\n *\n * Returns:\n * Response with created prompt details.\n *\n * Raises:\n * ValidationError: If the input data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptCreate(org, userId, requestBody, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompt/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing prompts.\n *\n * This view allows tenant admins and students to create, retrieve, update,\n * and filter prompts based on various parameters.\n *\n * Permissions:\n * - Accessible to both tenant administrators and students\n * @param id A unique integer value identifying this prompt.\n * @param org\n * @param userId\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptRetrieve(id, org, userId, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompt/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n }\n });\n }\n /**\n * Update an existing prompt.\n *\n * Args:\n * request: HTTP request containing updated prompt data.\n *\n * Returns:\n * Response with updated prompt details.\n *\n * Raises:\n * ValidationError: If the input data is invalid.\n * PermissionDenied: If the prompt is system-generated and cannot be edited.\n * @param id A unique integer value identifying this prompt.\n * @param org\n * @param userId\n * @param requestBody\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptUpdate(id, org, userId, requestBody, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompt/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing prompts.\n *\n * This view allows tenant admins and students to create, retrieve, update,\n * and filter prompts based on various parameters.\n *\n * Permissions:\n * - Accessible to both tenant administrators and students\n * @param id A unique integer value identifying this prompt.\n * @param org\n * @param userId\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @param requestBody\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptPartialUpdate(id, org, userId, category, createdBy, filterBy, mentorUniqueId, tag, visibility, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompt/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API viewset for managing prompts.\n *\n * This view allows tenant admins and students to create, retrieve, update,\n * and filter prompts based on various parameters.\n *\n * Permissions:\n * - Accessible to both tenant administrators and students\n * @param id A unique integer value identifying this prompt.\n * @param org\n * @param userId\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptDestroy(id, org, userId, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompt/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n }\n });\n }\n /**\n * Retrieve a list of prompt categories.\n *\n * Query Parameters:\n * - filter_by (optional): Sorts categories by name if set to \"name\".\n *\n * Args:\n * request: The HTTP request.\n * org: Organization key identifier.\n *\n * Returns:\n * - 200: List of prompt categories.\n * - 400: If query parameters are invalid.\n * @param org\n * @param userId\n * @param filterBy Filter options include, date, name, default is date\n * @returns PromptCategory\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptsCategoryRetrieve(org, userId, filterBy) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompts/category/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'filter_by': filterBy\n }\n });\n }\n /**\n * Create a new prompt category.\n *\n * Args:\n * request: The HTTP request containing category information.\n * org: Organization key identifier.\n * user_id: User performing the request.\n *\n * Returns:\n * - 201: Created prompt category.\n * - 401: If the user is not a tenant admin.\n * - 400: If request data is invalid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns PromptCategory Created prompt category\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptsCategoryCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompts/category/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete a prompt category.\n *\n * Args:\n * request: The HTTP request containing the category to delete.\n * org: Organization key identifier.\n * user_id: User performing the request.\n *\n * Returns:\n * - 204: No Content (successful deletion).\n * - 401: If the user is not a tenant admin.\n * - 400: If request data is invalid.\n * - 404: If the category does not exist.\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptsCategoryDestroy(org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompts/category/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n errors: {\n 400: `Invalid request data.`,\n 404: `Prompt category not found.`\n }\n });\n }\n /**\n * API viewset for managing prompts.\n *\n * This view allows anyone to retrieve,\n * and filter prompts based on various parameters.\n *\n * Permissions:\n * - Accessible to anyone\n * @param org\n * @param userId\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptsPublicList(org, userId, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompts/public/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n }\n });\n }\n /**\n * API viewset for managing prompts.\n *\n * This view allows anyone to retrieve,\n * and filter prompts based on various parameters.\n *\n * Permissions:\n * - Accessible to anyone\n * @param id A unique integer value identifying this prompt.\n * @param org\n * @param userId\n * @param category Category of the prompt\n * @param createdBy Option to filter by username of the prompt creators.\n * @param filterBy Filter options include, date, prompt, default is date\n * @param mentorUniqueId Mentor unique id of the prompt\n * @param tag Tag of the prompt\n * @param visibility Visibility trype the mentor of the prompt\n * @returns Prompt\n * @throws ApiError\n */\n static aiPromptOrgsUsersPromptsPublicRetrieve(id, org, userId, category, createdBy, filterBy, mentorUniqueId, tag, visibility) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/prompts/public/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'category': category,\n 'created_by': createdBy,\n 'filter_by': filterBy,\n 'mentor_unique_id': mentorUniqueId,\n 'tag': tag,\n 'visibility': visibility\n }\n });\n }\n /**\n * Retrieve guided prompts for a chat session\n * Fetches AI-generated guided prompts for a given session and organization.\n * @param org\n * @param sessionId\n * @param userId\n * @returns GuidedPromptsResponse\n * @throws ApiError\n */\n static aiPromptOrgsUsersSessionsGuidedPromptsRetrieve(org, sessionId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/sessions/{session_id}/guided-prompts/',\n path: {\n 'org': org,\n 'session_id': sessionId,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for getting prompt styles.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 200: List of styles.\n * @param org\n * @param userId\n * @returns StylesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersStylesRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/styles/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for Adding prompt style.\n *\n * Accessible to tenant admins only.\n *\n * Returns:\n *\n * 201: style Object.\n *\n * 400: When data is not valid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns StylesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersStylesCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/styles/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint for Adding prompt style.\n *\n * Accessible to tenant admins only.\n *\n * Returns:\n *\n * 200: style Object.\n *\n * 400: When data is not valid.\n * @param org\n * @param styleId\n * @param userId\n * @param requestBody\n * @returns StylesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersStylesUpdate(org, styleId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/styles/{style_id}/',\n path: {\n 'org': org,\n 'style_id': styleId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint for deleting prompt style.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 204: No response data.\n *\n * 400: When data is not valid.\n * @param org\n * @param styleId\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersStylesDestroy(org, styleId, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/styles/{style_id}/',\n path: {\n 'org': org,\n 'style_id': styleId,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for getting prompt tags.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 200: List of tags.\n * @param org\n * @param userId\n * @returns TagsView\n * @throws ApiError\n */\n static aiPromptOrgsUsersTagsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tags/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for Adding prompt tag.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 201: tag Object.\n *\n * 400: When data is not valid.\n *\n *\n *\n * Example:\n *\n * POST: /api/ai-prompt/orgs/main/users/johndoe/tags/\n *\n * Request: Response: {\n * \"name\": \"Programming\",\n * \"description\": \"tags for programing prompts\"\n * }\n *\n * Response: {\n * \"id\": 1,\n * \"name\": \"Programming\",\n * \"description\": \"tags for programing prompts\"\n * }\n * @param org\n * @param userId\n * @param requestBody\n * @returns TagsView\n * @throws ApiError\n */\n static aiPromptOrgsUsersTagsCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tags/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint for updating prompt tag.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 200: tag Object.\n *\n * 400: When data is not valid.\n * @param org\n * @param tagId\n * @param userId\n * @param requestBody\n * @returns TagsView\n * @throws ApiError\n */\n static aiPromptOrgsUsersTagsUpdate(org, tagId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tags/{tag_id}/',\n path: {\n 'org': org,\n 'tag_id': tagId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint for deleting prompt tag.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 204: No response data.\n *\n * 400: When data is not valid.\n * @param org\n * @param tagId\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersTagsDestroy(org, tagId, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tags/{tag_id}/',\n path: {\n 'org': org,\n 'tag_id': tagId,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for getting prompt tones.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 200: List of tones.\n * @param org\n * @param userId\n * @returns TonesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersTonesRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tones/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint for Adding prompt tone.\n *\n * Accessible to tenant admins only.\n *\n * Returns:\n *\n * 201: tone Object.\n *\n * 400: When data is not valid.\n * @param org\n * @param userId\n * @param requestBody\n * @returns TonesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersTonesCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tones/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint for updating prompt tone.\n *\n * Accessible to tenant admins only.\n *\n * Returns:\n *\n * 200: tone Object.\n *\n * 400: When data is not valid.\n * @param org\n * @param toneId\n * @param userId\n * @param requestBody\n * @returns TonesView\n * @throws ApiError\n */\n static aiPromptOrgsUsersTonesUpdate(org, toneId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tones/{tone_id}/',\n path: {\n 'org': org,\n 'tone_id': toneId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint for deleting prompt tone.\n *\n * Accessible to tenant admins and students.\n *\n * Returns:\n *\n * 204: No response data.\n *\n * 400: When data is not valid.\n * @param org\n * @param toneId\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static aiPromptOrgsUsersTonesDestroy(org, toneId, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/ai-prompt/orgs/{org}/users/{user_id}/tones/{tone_id}/',\n path: {\n 'org': org,\n 'tone_id': toneId,\n 'user_id': userId\n }\n });\n }\n}\n\nclass AnalyticsService {\n /**\n * Update time spent tracking data from client-side events.\n *\n * This endpoint receives time spent data collected on the client side and\n * stores it in the analytics database. It requires a valid authentication token.\n *\n * Methods:\n * POST: Submit time spent tracking data\n *\n *\n *\n * Returns:\n * A response indicating success or failure:\n * {\n * \"success\": true|false,\n * \"message\": \"Error message if failed\" (optional)\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or the API is disabled\n *\n * Notes:\n * This API must be enabled via the ENABLE_TIME_SPENT_UPDATE_API setting.\n * @param org\n * @param requestBody\n * @returns TimeSpentUpdateResponse\n * @throws ApiError\n */\n static analyticsOrgsTimeUpdateCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/analytics/orgs/{org}/time/update/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get total time spent for current user\n *\n * Returns the total time spent (in seconds) for the current authenticated user.\n * Can be filtered by platform, date range, course ID, URL, mentor UUID, and session UUID.\n *\n * @param courseId Course ID to filter by (can be partial)\n * @param endDate End date for time range (YYYY-MM-DD)\n * @param includeMainPlatform Whether to include main platform data\n * @param learnerId Username to get data for (admin users only)\n * @param mentorUuid Mentor UUID to filter by\n * @param platform Platform name or key to filter by\n * @param sessionUuid Session UUID to filter by\n * @param startDate Start date for time range (YYYY-MM-DD)\n * @param url URL to filter by (can be partial)\n * @returns TimeSpentPerUserResponse\n * @throws ApiError\n */\n static analyticsTimeSpentUserRetrieve(courseId, endDate, includeMainPlatform = true, learnerId, mentorUuid, platform, sessionUuid, startDate, url) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/analytics/time-spent/user/',\n query: {\n 'course_id': courseId,\n 'end_date': endDate,\n 'include_main_platform': includeMainPlatform,\n 'learner_id': learnerId,\n 'mentor_uuid': mentorUuid,\n 'platform': platform,\n 'session_uuid': sessionUuid,\n 'start_date': startDate,\n 'url': url\n },\n errors: {\n 400: `Bad request`,\n 401: `Unauthorized`\n }\n });\n }\n}\n\nclass AudienceService {\n /**\n * Get active user counts over time.\n *\n * This endpoint provides daily counts of active users (users with known activity)\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily active user counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * An active user is defined as a user with any activity within the past 30 days.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static audienceOrgsActiveUsersOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/active-users/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get active user counts on a per-course basis.\n *\n * This endpoint provides counts of active users for each course within\n * the specified date range.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n *\n * Returns:\n * A list of courses with their active user counts.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns ActiveUsersPerCourse\n * @throws ApiError\n */\n static audienceOrgsActiveUsersPerCourseRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/active-users/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get a list of active users with activity metrics.\n *\n * This endpoint provides a paginated list of users who have had activity\n * within the specified date range.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n * course_id (str, optional): Filter by course ID\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of active users with their activity metrics.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns ActiveUsersList\n * @throws ApiError\n */\n static audienceOrgsActiveUsersUsersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/active-users/users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Get enrollment or unenrollment counts over time.\n *\n * This endpoint provides daily counts of new enrollments or unenrollments\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * active (bool): Get enrollments when true, unenrollments when false\n *\n * Returns:\n * Daily counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param courseId\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static audienceOrgsEnrollmentsCoursesOverTimeRetrieve(courseId, org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/enrollments/courses/{course_id}/over-time',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List users enrolled in a specific course.\n *\n * This endpoint provides a list of users who are enrolled or unenrolled\n * in a specified course.\n *\n * Query Parameters:\n * course_id (str): The course ID to get enrollments for\n * active (bool): Filter for active enrollments when true, inactive when false\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of users with:\n * - Username\n * - Full name\n * - Email\n * - Enrollment timestamp\n * @param courseId\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns EnrollmentsPerUser\n * @throws ApiError\n */\n static audienceOrgsEnrollmentsCoursesUsersRetrieve(courseId, org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/enrollments/courses/{course_id}/users',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get enrollment or unenrollment counts over time.\n *\n * This endpoint provides daily counts of new enrollments or unenrollments\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * active (bool): Get enrollments when true, unenrollments when false\n *\n * Returns:\n * Daily counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static audienceOrgsEnrollmentsOverTimeRetrieve(org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/enrollments/over-time',\n path: {\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List enrollment statistics on a per-course basis.\n *\n * This endpoint provides enrollment counts for all courses, with options\n * to filter for active or inactive enrollments and to include time-based data.\n *\n * Query Parameters:\n * active (bool): Filter for active enrollments when true, inactive when false\n * start_date (str, optional): Start date for time-based filtering (ISO format)\n * end_date (str, optional): End date for time-based filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their enrollment counts and percentages.\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns Enrollments\n * @throws ApiError\n */\n static audienceOrgsEnrollmentsPerCourseRetrieve(org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/enrollments/per-course',\n path: {\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * List all learners on the platform with aggregated metrics.\n *\n * This endpoint returns a paginated list of all learners with key metrics including:\n * - Enrollment counts\n * - Completion counts\n * - Time spent on platform\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter learners by username, email, or name\n *\n * Returns:\n * A paginated list of learners with their associated metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param search Search string for learner\n * @returns PerlearnerUserList\n * @throws ApiError\n */\n static audienceOrgsRegisteredUsersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/registered-users/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'search': search\n }\n });\n }\n /**\n * Get registered user counts over time.\n *\n * This endpoint provides daily counts of new user registrations over a\n * specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily registration counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static audienceOrgsRegisteredUsersOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/registered-users/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List enrollment statistics on a per-course basis.\n *\n * This endpoint provides enrollment counts for all courses, with options\n * to filter for active or inactive enrollments and to include time-based data.\n *\n * Query Parameters:\n * active (bool): Filter for active enrollments when true, inactive when false\n * start_date (str, optional): Start date for time-based filtering (ISO format)\n * end_date (str, optional): End date for time-based filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their enrollment counts and percentages.\n * @param org\n * @param active Any of `y`, `yes`, `true`. set to false or no for unenrollments\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns Enrollments\n * @throws ApiError\n */\n static audienceOrgsRegisteredUsersPerCourseRetrieve(org, active = 'y', departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/audience/orgs/{org}/registered-users/per-course',\n path: {\n 'org': org\n },\n query: {\n 'active': active,\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass CareerService {\n /**\n * API endpoint for managing user base locations\n * @param org\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static careerLocationOrgsUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/location/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * API endpoint for managing user base locations\n * @param org\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static careerLocationOrgsUsersCreate(org, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/location/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * API endpoint for managing user base locations\n * @param org\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static careerLocationOrgsUsersUpdate(org, username) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/location/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * Platform-wide location statistics (GET only)\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static careerLocationsOrgsRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/locations/orgs/{org}/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns Company\n * @throws ApiError\n */\n static careerOrgsCompaniesUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/orgs/{org}/companies/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Company\n * @throws ApiError\n */\n static careerOrgsCompaniesUsersCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/orgs/{org}/companies/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Company\n * @throws ApiError\n */\n static careerOrgsCompaniesUsersUpdate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/orgs/{org}/companies/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static careerOrgsCompaniesUsersDestroy(org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/career/orgs/{org}/companies/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns Education\n * @throws ApiError\n */\n static careerOrgsEducationUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/orgs/{org}/education/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Education\n * @throws ApiError\n */\n static careerOrgsEducationUsersCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/orgs/{org}/education/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Education\n * @throws ApiError\n */\n static careerOrgsEducationUsersUpdate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/orgs/{org}/education/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static careerOrgsEducationUsersDestroy(org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/career/orgs/{org}/education/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns Experience\n * @throws ApiError\n */\n static careerOrgsExperienceUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/orgs/{org}/experience/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Experience\n * @throws ApiError\n */\n static careerOrgsExperienceUsersCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/orgs/{org}/experience/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Experience\n * @throws ApiError\n */\n static careerOrgsExperienceUsersUpdate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/orgs/{org}/experience/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static careerOrgsExperienceUsersDestroy(org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/career/orgs/{org}/experience/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns Institution\n * @throws ApiError\n */\n static careerOrgsInstitutionsUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/orgs/{org}/institutions/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Institution\n * @throws ApiError\n */\n static careerOrgsInstitutionsUsersCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/orgs/{org}/institutions/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Institution\n * @throws ApiError\n */\n static careerOrgsInstitutionsUsersUpdate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/orgs/{org}/institutions/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static careerOrgsInstitutionsUsersDestroy(org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/career/orgs/{org}/institutions/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns Program\n * @throws ApiError\n */\n static careerOrgsProgramsUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/orgs/{org}/programs/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Program\n * @throws ApiError\n */\n static careerOrgsProgramsUsersCreate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/orgs/{org}/programs/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @param requestBody\n * @returns Program\n * @throws ApiError\n */\n static careerOrgsProgramsUsersUpdate(org, username, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/orgs/{org}/programs/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param username\n * @returns void\n * @throws ApiError\n */\n static careerOrgsProgramsUsersDestroy(org, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/career/orgs/{org}/programs/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static careerResumeOrgsUsersRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/career/resume/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static careerResumeOrgsUsersCreate(org, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/career/resume/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * @param org\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static careerResumeOrgsUsersUpdate(org, username) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/career/resume/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n}\n\nclass CatalogService {\n /**\n * Retrieve a paginated list of access requests\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param reviewed Filter by reviewed status\n * @param sort Field to sort results by\n * @returns PaginatedCourseAccessRequest\n * @throws ApiError\n */\n static catalogAccessRequestsCourseManageRetrieve(page, pageSize, platformKey, platformOrg, reviewed, sort = '-id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/access_requests/course/manage/',\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'reviewed': reviewed,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - platform doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Update an existing access request (approve/reject)\n * @param requestBody\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param reviewed Filter by reviewed status\n * @param sort Field to sort results by\n * @returns CourseAccessRequestDetail\n * @throws ApiError\n */\n static catalogAccessRequestsCourseManageCreate(requestBody, page, pageSize, platformKey, platformOrg, reviewed, sort = '-id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/access_requests/course/manage/',\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'reviewed': reviewed,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - platform or access request doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Check if the user has an active access request for a course\n * @param courseId The unique identifier for the course\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @returns CourseAccessRequestStatusResponse\n * @throws ApiError\n */\n static catalogAccessRequestsCourseRequestRetrieve(courseId, platformKey, platformOrg) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/access_requests/course/request/',\n query: {\n 'course_id': courseId,\n 'platform_key': platformKey,\n 'platform_org': platformOrg\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - platform or course doesn't exist`\n }\n });\n }\n /**\n * Create a new access request for a course\n * @param courseId The unique identifier for the course\n * @param requestBody\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @returns CourseAccessRequestDetail\n * @throws ApiError\n */\n static catalogAccessRequestsCourseRequestCreate(courseId, requestBody, platformKey, platformOrg) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/access_requests/course/request/',\n query: {\n 'course_id': courseId,\n 'platform_key': platformKey,\n 'platform_org': platformOrg\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - platform or course doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * GET\n * Retrieve prerequisite eligibility info for user/course\n *\n * Params:\n * user_id/username\n * course_id\n * @returns any No response body\n * @throws ApiError\n */\n static catalogConditionalsCourseEligibilityRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/conditionals/course/eligibility/'\n });\n }\n /**\n * GET\n * Retrieve prerequisite info for course\n *\n * Params:\n * course_id\n *\n * key_only\n * @returns any No response body\n * @throws ApiError\n */\n static catalogConditionalsCoursePrerequisitesManageRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/conditionals/course/prerequisites/manage/'\n });\n }\n /**\n * Prerequisite bulk management view\n *\n * Params:\n * course_id\n *\n * rules\n * key_only\n * @returns any No response body\n * @throws ApiError\n */\n static catalogConditionalsCoursePrerequisitesManageBulkCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/conditionals/course/prerequisites/manage/bulk/'\n });\n }\n /**\n * Retrieve courses matching specified filters.\n * @param courseId Filter courses by their unique identifier\n * @param org Filter courses by their associated organization\n * @param slug Filter courses by their slug (case-insensitive)\n * @returns Course\n * @throws ApiError\n */\n static catalogCoursesList(courseId, org, slug) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/courses/',\n query: {\n 'course_id': courseId,\n 'org': org,\n 'slug': slug\n },\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Add or update a course in the database.\n * @param requestBody\n * @param courseId Filter courses by their unique identifier\n * @param org Filter courses by their associated organization\n * @param slug Filter courses by their slug (case-insensitive)\n * @returns Course\n * @throws ApiError\n */\n static catalogCoursesCreate(requestBody, courseId, org, slug) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/courses/',\n query: {\n 'course_id': courseId,\n 'org': org,\n 'slug': slug\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Remove a course from the database.\n * @param courseId Filter courses by their unique identifier\n * @param org Filter courses by their associated organization\n * @param slug Filter courses by their slug (case-insensitive)\n * @returns CourseDeleteResponse\n * @throws ApiError\n */\n static catalogCoursesDestroy(courseId, org, slug) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/courses/',\n query: {\n 'course_id': courseId,\n 'org': org,\n 'slug': slug\n },\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * List courses that a user is eligible for.\n * @param org Filter eligible courses by organization\n * @param query Search term to filter eligible courses\n * @param userId User ID to check eligibility for\n * @param username Username to check eligibility for\n * @returns Course\n * @throws ApiError\n */\n static catalogEligibilityCoursesList(org, query, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/eligibility/courses/',\n query: {\n 'org': org,\n 'query': query,\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Check whether a user is eligible to enroll in a specific course.\n * @param courseId Course ID to check eligibility for\n * @param localOnly Whether to check eligibility only within the local organization\n * @param org Organization of the course\n * @param userId User ID to check eligibility for\n * @param username Username to check eligibility for\n * @returns CourseEligibilityCheckResponse\n * @throws ApiError\n */\n static catalogEligibilityCoursesCheckRetrieve(courseId, localOnly, org, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/eligibility/courses/check/',\n query: {\n 'course_id': courseId,\n 'local_only': localOnly,\n 'org': org,\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `No response body`,\n 500: `No response body`\n }\n });\n }\n /**\n * API View for searching course enrollments.\n *\n * This endpoint allows searching for course enrollments based on various filters such as user ID,\n * username, email, course ID, slug, organization, and platform key. Results are paginated and\n * include detailed enrollment information.\n *\n * Query Parameters:\n * user_id (str, optional): Filter enrollments by user ID\n * username (str, optional): Filter enrollments by username\n * email (str, optional): Filter enrollments by user email\n * course_id (str, optional): Filter enrollments by course ID\n * slug (str, optional): Filter enrollments by course slug\n * org (str, optional): Filter enrollments by organization\n * platform_key (str, optional): Filter enrollments by platform key\n * course_name (str, optional): Filter enrollments by course name (partial match)\n * include_default_platform (bool, optional): Include enrollments from default platform\n * sort (str, optional): Field to sort results by (default: '-id')\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Search for course enrollments with filtering and pagination\n *\n * Returns:\n * GET: A paginated JSON response containing course enrollments:\n * {\n * \"count\": 42,\n * \"next\": \"https://api.example.com/api/catalog/enrollment/courses/search/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"email\": \"student1@example.com\",\n * \"course_id\": \"course-v1:org+course+run\",\n * \"active\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"started\": \"2023-01-15T10:30:00Z\",\n * \"ended\": null,\n * \"expired\": null,\n * \"metadata\": {},\n * \"name\": \"John Doe\",\n * \"course_name\": \"Introduction to Data Science\"\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or if enrollment search fails\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsEdxUserReadOnly, or IsPlatformAdminOfUserReadOnly permission\n * - Users can view their own enrollments\n * - Platform admins can view enrollments for users in their platform\n * - DM admins can view all enrollments\n * @param courseId Filter enrollments by course ID\n * @param courseName Filter enrollments by course name (partial match)\n * @param email Filter enrollments by user email\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param org Filter enrollments by organization\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Filter enrollments by platform key\n * @param slug Filter enrollments by course slug\n * @param sort Field to sort results by\n * @param userId Filter enrollments by user ID\n * @param username Filter enrollments by username\n * @returns CourseEnrollmentSearchResponse\n * @throws ApiError\n */\n static catalogEnrollmentCoursesSearchRetrieve(courseId, courseName, email, includeDefaultPlatform, org, page, pageSize, platformKey, slug, sort = '-id', userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/enrollment/courses/search/',\n query: {\n 'course_id': courseId,\n 'course_name': courseName,\n 'email': email,\n 'include_default_platform': includeDefaultPlatform,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'slug': slug,\n 'sort': sort,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Search pathway enrollments. Requires user_id or username and pathway_id or slug.\n * @param active Whether the enrollment should be active\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param includeMetadata Include metadata in the response\n * @param org Organization for the pathway\n * @param pathwayId Pathway ID for enrollment\n * @param pathwayKey Pathway key for enrollment\n * @param pathwayUuid Pathway UUID for enrollment\n * @param platformKey Platform key for the pathway\n * @param slug Pathway slug for enrollment\n * @param userId User ID for enrollment\n * @param username Username for enrollment\n * @returns PathwayEnrollmentPlus\n * @throws ApiError\n */\n static catalogEnrollmentPathwaysRetrieve(active = true, includeDefaultPlatform, includeMetadata = true, org, pathwayId, pathwayKey, pathwayUuid, platformKey, slug, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/enrollment/pathways/',\n query: {\n 'active': active,\n 'include_default_platform': includeDefaultPlatform,\n 'include_metadata': includeMetadata,\n 'org': org,\n 'pathway_id': pathwayId,\n 'pathway_key': pathwayKey,\n 'pathway_uuid': pathwayUuid,\n 'platform_key': platformKey,\n 'slug': slug,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Log user enrollment with a pathway.\n * @param active Whether the enrollment should be active\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param includeMetadata Include metadata in the response\n * @param org Organization for the pathway\n * @param pathwayId Pathway ID for enrollment\n * @param pathwayKey Pathway key for enrollment\n * @param pathwayUuid Pathway UUID for enrollment\n * @param platformKey Platform key for the pathway\n * @param slug Pathway slug for enrollment\n * @param userId User ID for enrollment\n * @param username Username for enrollment\n * @param requestBody\n * @returns PathwayEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentPathwaysCreate(active = true, includeDefaultPlatform, includeMetadata = true, org, pathwayId, pathwayKey, pathwayUuid, platformKey, slug, userId, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/enrollment/pathways/',\n query: {\n 'active': active,\n 'include_default_platform': includeDefaultPlatform,\n 'include_metadata': includeMetadata,\n 'org': org,\n 'pathway_id': pathwayId,\n 'pathway_key': pathwayKey,\n 'pathway_uuid': pathwayUuid,\n 'platform_key': platformKey,\n 'slug': slug,\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Unenroll from a pathway. Deactivates enrollment.\n * @param active Whether the enrollment should be active\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param includeMetadata Include metadata in the response\n * @param org Organization for the pathway\n * @param pathwayId Pathway ID for enrollment\n * @param pathwayKey Pathway key for enrollment\n * @param pathwayUuid Pathway UUID for enrollment\n * @param platformKey Platform key for the pathway\n * @param slug Pathway slug for enrollment\n * @param userId User ID for enrollment\n * @param username Username for enrollment\n * @returns PathwayEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentPathwaysDestroy(active = true, includeDefaultPlatform, includeMetadata = true, org, pathwayId, pathwayKey, pathwayUuid, platformKey, slug, userId, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/enrollment/pathways/',\n query: {\n 'active': active,\n 'include_default_platform': includeDefaultPlatform,\n 'include_metadata': includeMetadata,\n 'org': org,\n 'pathway_id': pathwayId,\n 'pathway_key': pathwayKey,\n 'pathway_uuid': pathwayUuid,\n 'platform_key': platformKey,\n 'slug': slug,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Search pathway enrollments based on user or pathway identifiers. Returns paginated enrollment results.\n * @returns PathwayEnrollmentPlus\n * @throws ApiError\n */\n static catalogEnrollmentPathwaysSearchRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/enrollment/pathways/search/'\n });\n }\n /**\n * Log user enrollment with a pathway.\n * @param active Whether the enrollment should be active\n * @param org Organization for the pathway\n * @param pathwayId Pathway ID for self-enrollment\n * @param pathwayKey Pathway key for self-enrollment\n * @param platformKey Platform key for the pathway\n * @param slug Pathway slug for self-enrollment\n * @param userId User ID for self-enrollment\n * @param username Username for self-enrollment\n * @param requestBody\n * @returns PathwayEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentPathwaysSelfCreate(active = true, org, pathwayId, pathwayKey, platformKey, slug, userId, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/enrollment/pathways/self/',\n query: {\n 'active': active,\n 'org': org,\n 'pathway_id': pathwayId,\n 'pathway_key': pathwayKey,\n 'platform_key': platformKey,\n 'slug': slug,\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Unenroll from a pathway. Deactivates enrollment.\n * @param active Whether the enrollment should be active\n * @param org Organization for the pathway\n * @param pathwayId Pathway ID for self-enrollment\n * @param pathwayKey Pathway key for self-enrollment\n * @param platformKey Platform key for the pathway\n * @param slug Pathway slug for self-enrollment\n * @param userId User ID for self-enrollment\n * @param username Username for self-enrollment\n * @returns PathwayEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentPathwaysSelfDestroy(active = true, org, pathwayId, pathwayKey, platformKey, slug, userId, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/enrollment/pathways/self/',\n query: {\n 'active': active,\n 'org': org,\n 'pathway_id': pathwayId,\n 'pathway_key': pathwayKey,\n 'platform_key': platformKey,\n 'slug': slug,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Search program enrollments. Requires user_id or username and program_id or slug.\n * @param active Whether the enrollment should be active\n * @param expired Date when enrollment expires\n * @param ignoreExpiration Whether to ignore expiration during unenrollment\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param includeMetadata Include metadata in the response\n * @param org Organization for the program\n * @param platformKey Platform key for the program\n * @param programId Program ID for enrollment\n * @param programKey Program key for enrollment\n * @param programType Program type (standard, platform, custom)\n * @param slug Program slug for enrollment\n * @param started Date when enrollment started\n * @param userId User ID for enrollment\n * @param username Username for enrollment\n * @returns ProgramEnrollmentPlus\n * @throws ApiError\n */\n static catalogEnrollmentProgramsRetrieve(active = true, expired, ignoreExpiration = false, includeDefaultPlatform, includeMetadata = true, org, platformKey, programId, programKey, programType, slug, started, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/enrollment/programs/',\n query: {\n 'active': active,\n 'expired': expired,\n 'ignore_expiration': ignoreExpiration,\n 'include_default_platform': includeDefaultPlatform,\n 'include_metadata': includeMetadata,\n 'org': org,\n 'platform_key': platformKey,\n 'program_id': programId,\n 'program_key': programKey,\n 'program_type': programType,\n 'slug': slug,\n 'started': started,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Log user enrollment with a program.\n * @param active Whether the enrollment should be active\n * @param expired Date when enrollment expires\n * @param ignoreExpiration Whether to ignore expiration during unenrollment\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param includeMetadata Include metadata in the response\n * @param org Organization for the program\n * @param platformKey Platform key for the program\n * @param programId Program ID for enrollment\n * @param programKey Program key for enrollment\n * @param programType Program type (standard, platform, custom)\n * @param slug Program slug for enrollment\n * @param started Date when enrollment started\n * @param userId User ID for enrollment\n * @param username Username for enrollment\n * @param requestBody\n * @returns ProgramEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentProgramsCreate(active = true, expired, ignoreExpiration = false, includeDefaultPlatform, includeMetadata = true, org, platformKey, programId, programKey, programType, slug, started, userId, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/enrollment/programs/',\n query: {\n 'active': active,\n 'expired': expired,\n 'ignore_expiration': ignoreExpiration,\n 'include_default_platform': includeDefaultPlatform,\n 'include_metadata': includeMetadata,\n 'org': org,\n 'platform_key': platformKey,\n 'program_id': programId,\n 'program_key': programKey,\n 'program_type': programType,\n 'slug': slug,\n 'started': started,\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Unenroll from a program. Deactivates enrollment.\n * @param active Whether the enrollment should be active\n * @param expired Date when enrollment expires\n * @param ignoreExpiration Whether to ignore expiration during unenrollment\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param includeMetadata Include metadata in the response\n * @param org Organization for the program\n * @param platformKey Platform key for the program\n * @param programId Program ID for enrollment\n * @param programKey Program key for enrollment\n * @param programType Program type (standard, platform, custom)\n * @param slug Program slug for enrollment\n * @param started Date when enrollment started\n * @param userId User ID for enrollment\n * @param username Username for enrollment\n * @returns ProgramEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentProgramsDestroy(active = true, expired, ignoreExpiration = false, includeDefaultPlatform, includeMetadata = true, org, platformKey, programId, programKey, programType, slug, started, userId, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/enrollment/programs/',\n query: {\n 'active': active,\n 'expired': expired,\n 'ignore_expiration': ignoreExpiration,\n 'include_default_platform': includeDefaultPlatform,\n 'include_metadata': includeMetadata,\n 'org': org,\n 'platform_key': platformKey,\n 'program_id': programId,\n 'program_key': programKey,\n 'program_type': programType,\n 'slug': slug,\n 'started': started,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Search program enrollments based on user or program identifiers. Returns paginated enrollment results.\n * @param includeDefaultPlatform Include enrollments from default platform\n * @param org Filter enrollments by organization\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Filter enrollments by platform key\n * @param programId Filter enrollments by program ID\n * @param programType Filter by program type (standard, platform, custom)\n * @param slug Filter enrollments by program slug\n * @param sort Field to sort results by\n * @param userId Filter enrollments by user ID\n * @param username Filter enrollments by username\n * @returns ProgramEnrollmentPlus\n * @throws ApiError\n */\n static catalogEnrollmentProgramsSearchRetrieve(includeDefaultPlatform, org, page, pageSize, platformKey, programId, programType, slug, sort = '-id', userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/enrollment/programs/search/',\n query: {\n 'include_default_platform': includeDefaultPlatform,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'program_id': programId,\n 'program_type': programType,\n 'slug': slug,\n 'sort': sort,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Log user enrollment with a program.\n * @param active Whether the enrollment should be active\n * @param expired Date when enrollment expires\n * @param ignoreExpiration Whether to ignore expiration during unenrollment\n * @param org Organization for the program\n * @param platformKey Platform key for the program\n * @param programId Program ID for self-enrollment\n * @param programKey Program key for self-enrollment\n * @param slug Program slug for self-enrollment\n * @param started Date when enrollment started\n * @param userId User ID for self-enrollment\n * @param username Username for self-enrollment\n * @param requestBody\n * @returns ProgramEnrollment\n * @throws ApiError\n */\n static catalogEnrollmentProgramsSelfCreate(active = true, expired, ignoreExpiration = false, org, platformKey, programId, programKey, slug, started, userId, username, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/enrollment/programs/self/',\n query: {\n 'active': active,\n 'expired': expired,\n 'ignore_expiration': ignoreExpiration,\n 'org': org,\n 'platform_key': platformKey,\n 'program_id': programId,\n 'program_key': programKey,\n 'slug': slug,\n 'started': started,\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Unenroll from a program. Deactivates enrollment.\n * @param active Whether the enrollment should be active\n * @param expired Date when enrollment expires\n * @param ignoreExpiration Whether to ignore expiration during unenrollment\n * @param org Organization for the program\n * @param platformKey Platform key for the program\n * @param programId Program ID for self-enrollment\n * @param programKey Program key for self-enrollment\n * @param slug Program slug for self-enrollment\n * @param started Date when enrollment started\n * @param userId User ID for self-enrollment\n * @param username Username for self-enrollment\n * @returns void\n * @throws ApiError\n */\n static catalogEnrollmentProgramsSelfDestroy(active = true, expired, ignoreExpiration = false, org, platformKey, programId, programKey, slug, started, userId, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/enrollment/programs/self/',\n query: {\n 'active': active,\n 'expired': expired,\n 'ignore_expiration': ignoreExpiration,\n 'org': org,\n 'platform_key': platformKey,\n 'program_id': programId,\n 'program_key': programKey,\n 'slug': slug,\n 'started': started,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Retrieve auto increment information for a specific platform.\n * @returns CatalogAutoIncrementResponse\n * @throws ApiError\n */\n static catalogIncrementRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/increment/',\n errors: {\n 404: `No response body`\n }\n });\n }\n /**\n * Update auto increment information and retrieve a new ID for a specific platform.\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n static catalogIncrementCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/increment/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`,\n 500: `No response body`\n }\n });\n }\n /**\n * Retrieve a paginated list of course invitations\n * @param active Filter by active status\n * @param courseId Filter by course ID\n * @param email Filter by user email\n * @param key Alternative filter by platform key\n * @param org Alternative filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey Filter by platform key\n * @param platformOrg Filter by platform organization\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns PaginatedCourseInvitation\n * @throws ApiError\n */\n static catalogInvitationsCourseRetrieve(active, courseId, email, key, org, page, pageSize, platformKey, platformOrg, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/invitations/course/',\n query: {\n 'active': active,\n 'course_id': courseId,\n 'email': email,\n 'key': key,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create a new course invitation\n * @param requestBody\n * @param active Filter by active status\n * @param courseId Filter by course ID\n * @param email Filter by user email\n * @param key Alternative filter by platform key\n * @param org Alternative filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey Filter by platform key\n * @param platformOrg Filter by platform organization\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns CourseInvitationDetail\n * @throws ApiError\n */\n static catalogInvitationsCourseCreate(requestBody, active, courseId, email, key, org, page, pageSize, platformKey, platformOrg, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/course/',\n query: {\n 'active': active,\n 'course_id': courseId,\n 'email': email,\n 'key': key,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - course doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a course invitation: TBD\n * @param active Filter by active status\n * @param courseId Filter by course ID\n * @param email Filter by user email\n * @param key Alternative filter by platform key\n * @param org Alternative filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey Filter by platform key\n * @param platformOrg Filter by platform organization\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns any Invitation successfully deleted\n * @throws ApiError\n */\n static catalogInvitationsCourseDestroy(active, courseId, email, key, org, page, pageSize, platformKey, platformOrg, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/invitations/course/',\n query: {\n 'active': active,\n 'course_id': courseId,\n 'email': email,\n 'key': key,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - invitation doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create multiple blank course invitations\n * @param requestBody\n * @returns BulkCourseInvitationResponse\n * @throws ApiError\n */\n static catalogInvitationsCourseBlankCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/course/blank/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - course doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create multiple course invitations\n * @param requestBody\n * @returns BulkCourseInvitationResponse\n * @throws ApiError\n */\n static catalogInvitationsCourseBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/course/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Redeem a blank course invitation\n * @param requestBody\n * @returns CourseInvitationDetail\n * @throws ApiError\n */\n static catalogInvitationsCourseRedeemCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/course/redeem/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - no blank invitation available`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing platform invitations.\n *\n * This endpoint allows querying, creating, and deleting platform invitations for users.\n *\n * Query/Request Parameters:\n * For GET:\n * platform_key (str, optional): Filter by platform key\n * org (str, optional): Filter by platform organization\n * email (str, optional): Filter by user email\n * source (str, optional): Filter by invitation source\n * active (bool, optional): Filter by active status\n * sort (str, optional): Field to sort results by (default: '-id')\n * metadata fields: Any additional parameters will be treated as metadata filters\n *\n * For POST:\n * platform_key (str, required): The platform to create an invitation for\n * email (str, required): The email address to invite\n * active (bool, optional): Whether the invitation is active\n * metadata fields: Any additional parameters will be added as metadata\n *\n * For DELETE:\n * id (int, required): The ID of the invitation to delete\n * org (str, required): The platform organization for verification\n *\n * Methods:\n * GET: Retrieve a paginated list of platform invitations\n * POST: Create a new platform invitation\n * DELETE: Remove a platform invitation\n *\n * Returns:\n * GET: A paginated JSON response containing platform invitations:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/invitations/platform/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"platform_key\": \"platform1\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created invitation:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"platform_key\": \"platform1\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the platform or invitation doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin or IsPlatformAdmin permission\n * - Available to platform administrators and DM admins\n * @param active Filter by active status\n * @param email Filter by user email\n * @param org Filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey Filter by platform key\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns PaginatedPlatformInvitation\n * @throws ApiError\n */\n static catalogInvitationsPlatformRetrieve(active, email, org, page, pageSize, platformKey, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/invitations/platform/',\n query: {\n 'active': active,\n 'email': email,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create a new platform invitation\n * @param requestBody\n * @param active Filter by active status\n * @param email Filter by user email\n * @param org Filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey Filter by platform key\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns PlatformInvitationDetail\n * @throws ApiError\n */\n static catalogInvitationsPlatformCreate(requestBody, active, email, org, page, pageSize, platformKey, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/platform/',\n query: {\n 'active': active,\n 'email': email,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - platform doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a platform invitation: TBD\n * @param active Filter by active status\n * @param email Filter by user email\n * @param org Filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey Filter by platform key\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns any Invitation successfully deleted\n * @throws ApiError\n */\n static catalogInvitationsPlatformDestroy(active, email, org, page, pageSize, platformKey, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/invitations/platform/',\n query: {\n 'active': active,\n 'email': email,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - invitation doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create multiple blank platform invitations\n * @param requestBody\n * @returns BulkPlatformInvitationResponse\n * @throws ApiError\n */\n static catalogInvitationsPlatformBlankCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/platform/blank/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - platform doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for bulk creating platform invitations.\n *\n * This endpoint allows creating multiple platform invitations in a single request.\n *\n * Request Parameters:\n * invitation_data (list, required): List of invitation data objects, each containing:\n * platform_key (str, required): The platform to create an invitation for\n * email (str, required): The email address to invite\n * active (bool, optional): Whether the invitation is active\n * metadata fields: Any additional parameters will be added as metadata\n * platform_key (str, required for platform admins): The platform key for permission validation\n *\n * Methods:\n * POST: Create multiple platform invitations\n *\n * Returns:\n * POST: A JSON response containing the creation results:\n * {\n * \"successes\": 5,\n * \"error_codes\": []\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs during creation\n *\n * Access Control:\n * - Requires IsDMAdmin or IsPlatformAdmin permission\n * - Available to platform administrators and DM admins\n * @param requestBody\n * @returns BulkPlatformInvitationResponse\n * @throws ApiError\n */\n static catalogInvitationsPlatformBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/platform/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Check if a user has an active platform invitation\n * @param email The email address to check for active invitations\n * @returns any Active invitation exists for the email\n * @throws ApiError\n */\n static catalogInvitationsPlatformCheckRetrieve(email) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/invitations/platform/check/',\n query: {\n 'email': email\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 404: `No active invitation exists for the email`\n }\n });\n }\n /**\n * Redeem a blank platform invitation\n * @param requestBody\n * @returns PlatformInvitationDetail\n * @throws ApiError\n */\n static catalogInvitationsPlatformRedeemCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/platform/redeem/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - no blank invitation available`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program invitations.\n *\n * This endpoint allows querying, creating, and deleting program invitations for users.\n *\n * Query/Request Parameters:\n * For GET:\n * program_key (str, optional): Filter by program key\n * org (str, optional): Filter by platform organization\n * email (str, optional): Filter by user email\n * source (str, optional): Filter by invitation source\n * active (bool, optional): Filter by active status\n * sort (str, optional): Field to sort results by (default: '-id')\n * metadata fields: Any additional parameters will be treated as metadata filters\n *\n * For POST:\n * program_key (str, required): The program to create an invitation for\n * email (str, required): The email address to invite\n * active (bool, optional): Whether the invitation is active\n * metadata fields: Any additional parameters will be added as metadata\n *\n * For DELETE:\n * id (int, required): The ID of the invitation to delete\n * org (str, required): The platform organization for verification\n *\n * Methods:\n * GET: Retrieve a paginated list of program invitations\n * POST: Create a new program invitation\n * DELETE: Remove a program invitation\n *\n * Returns:\n * GET: A paginated JSON response containing program invitations:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/invitations/program/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"program_key\": \"org+program1\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created invitation:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"program_key\": \"org+program1\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the program or invitation doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsPlatformAdminForProgram permission\n * - Read-only access for platform admins, full access for DM admins and program-specific admins\n * @param active Filter by active status\n * @param email Filter by user email\n * @param org Filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param programKey Filter by program key\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns PaginatedProgramInvitation\n * @throws ApiError\n */\n static catalogInvitationsProgramRetrieve(active, email, org, page, pageSize, programKey, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/invitations/program/',\n query: {\n 'active': active,\n 'email': email,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'program_key': programKey,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program invitations.\n *\n * This endpoint allows querying, creating, and deleting program invitations for users.\n *\n * Query/Request Parameters:\n * For GET:\n * program_key (str, optional): Filter by program key\n * org (str, optional): Filter by platform organization\n * email (str, optional): Filter by user email\n * source (str, optional): Filter by invitation source\n * active (bool, optional): Filter by active status\n * sort (str, optional): Field to sort results by (default: '-id')\n * metadata fields: Any additional parameters will be treated as metadata filters\n *\n * For POST:\n * program_key (str, required): The program to create an invitation for\n * email (str, required): The email address to invite\n * active (bool, optional): Whether the invitation is active\n * metadata fields: Any additional parameters will be added as metadata\n *\n * For DELETE:\n * id (int, required): The ID of the invitation to delete\n * org (str, required): The platform organization for verification\n *\n * Methods:\n * GET: Retrieve a paginated list of program invitations\n * POST: Create a new program invitation\n * DELETE: Remove a program invitation\n *\n * Returns:\n * GET: A paginated JSON response containing program invitations:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/invitations/program/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"program_key\": \"org+program1\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created invitation:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"program_key\": \"org+program1\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the program or invitation doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsPlatformAdminForProgram permission\n * - Read-only access for platform admins, full access for DM admins and program-specific admins\n * @param requestBody\n * @param active Filter by active status\n * @param email Filter by user email\n * @param org Filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param programKey Filter by program key\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns ProgramInvitationDetail\n * @throws ApiError\n */\n static catalogInvitationsProgramCreate(requestBody, active, email, org, page, pageSize, programKey, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/program/',\n query: {\n 'active': active,\n 'email': email,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'program_key': programKey,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - program doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a program invitation: TBD\n * @param active Filter by active status\n * @param email Filter by user email\n * @param org Filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param programKey Filter by program key\n * @param sort Field to sort results by\n * @param source Filter by invitation source\n * @param username Filter by username\n * @param verbose Whether to include verbose output\n * @returns any Invitation successfully deleted\n * @throws ApiError\n */\n static catalogInvitationsProgramDestroy(active, email, org, page, pageSize, programKey, sort = '-id', source, username, verbose) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/invitations/program/',\n query: {\n 'active': active,\n 'email': email,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'program_key': programKey,\n 'sort': sort,\n 'source': source,\n 'username': username,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - invitation doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for creating blank program invitations.\n *\n * This endpoint allows creating multiple blank program invitations (without user association)\n * that can be redeemed later.\n *\n * Request Parameters:\n * program_key (str, required): The program to create invitations for\n * source (str, required): The source identifier for the invitations\n * count (int, required): The number of blank invitations to create\n * metadata fields: Any additional parameters will be added as metadata\n *\n * Methods:\n * POST: Create multiple blank program invitations\n *\n * Returns:\n * POST: A JSON response containing the creation results:\n * {\n * \"successes\": 10,\n * \"error_codes\": []\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs during creation\n *\n * Access Control:\n * - Requires IsDMAdmin or IsPlatformAdminForProgram permission\n * - Available to DM admins and platform admins for the specific program\n * @param requestBody\n * @returns BulkProgramInvitationResponse\n * @throws ApiError\n */\n static catalogInvitationsProgramBlankCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/program/blank/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - program doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for bulk creation of program invitations.\n *\n * This endpoint allows creating multiple program invitations at once.\n *\n * Request Parameters:\n * invitation_data (list, required): List of invitation data objects, each containing:\n * program_key (str, required): The program to create an invitation for\n * email (str, required): The email address to invite\n * active (bool, optional): Whether the invitation is active\n * metadata fields: Any additional parameters will be added as metadata\n * platform_key (str, required for platform admins): The platform key for permission validation\n *\n * Methods:\n * POST: Create multiple program invitations\n *\n * Returns:\n * POST: A JSON response containing the creation results:\n * {\n * \"successes\": 5,\n * \"error_codes\": []\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs during creation\n *\n * Access Control:\n * - Requires IsDMAdmin or IsPlatformAdmin permission\n * - Available to platform administrators and DM admins\n * @param requestBody\n * @returns BulkProgramInvitationResponse\n * @throws ApiError\n */\n static catalogInvitationsProgramBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/program/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for redeeming blank program invitations.\n *\n * This endpoint allows redeeming a blank program invitation by associating it with a user.\n *\n * Request Parameters:\n * program_key (str, required): The program key for the invitation\n * source (str, required): The source identifier for the invitation\n * email (str, optional): The email to associate with the invitation\n * username (str, optional): The username to associate with the invitation\n * metadata fields: Any additional parameters will be added as metadata\n *\n * Methods:\n * POST: Redeem a blank program invitation\n *\n * Returns:\n * POST: A JSON response containing the redeemed invitation:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"username\",\n * \"email\": \"user@example.com\",\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"source\": \"source\",\n * \"redirect_to\": \"https://example.com\",\n * \"expired\": null,\n * \"active\": true,\n * \"metadata\": {},\n * \"program_key\": \"org+program1\"\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If no blank invitation is available\n * 500 Internal Server Error: If an unexpected error occurs during redemption\n *\n * Access Control:\n * - Requires IsDMAdmin or IsPlatformAdminForProgram permission\n * - Available to DM admins and platform admins for the specific program\n * @param requestBody\n * @returns ProgramInvitationDetail\n * @throws ApiError\n */\n static catalogInvitationsProgramRedeemCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/invitations/program/redeem/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - no blank invitation available`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of course licenses\n * @param active Filter by active status\n * @param courseId Filter by course ID\n * @param externalId Filter by external identifier\n * @param key Alternative filter by platform key\n * @param name Filter by license name (exact match)\n * @param org Alternative filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param query Search license names (contains)\n * @param sort Field to sort results by\n * @param source Filter by license source\n * @param verbose Include detailed assignment data in the response\n * @returns PaginatedCourseLicense\n * @throws ApiError\n */\n static catalogLicensesCourseRetrieve(active, courseId, externalId, key, name, org, page, pageSize, platformKey, platformOrg, query, sort = '-id', source, verbose = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/course/',\n query: {\n 'active': active,\n 'course_id': courseId,\n 'external_id': externalId,\n 'key': key,\n 'name': name,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'source': source,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of course license assignments\n * @param licenseId The ID of the course license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns PaginatedCourseLicenseAssignment\n * @throws ApiError\n */\n static catalogLicensesCourseAssignmentRetrieve(licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/course/assignment/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create or update a course license assignment\n * @param licenseId The ID of the course license\n * @param requestBody\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns CourseLicenseAssignmentDetail\n * @throws ApiError\n */\n static catalogLicensesCourseAssignmentCreate(licenseId, requestBody, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/course/assignment/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license or user doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a course license assignment\n * @param assignmentId The ID of the assignment to delete\n * @param licenseId The ID of the course license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns any Assignment successfully deleted\n * @throws ApiError\n */\n static catalogLicensesCourseAssignmentDestroy(assignmentId, licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/licenses/course/assignment/',\n query: {\n 'assignment_id': assignmentId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - assignment doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of course license group assignments\n * @param licenseId The ID of the course license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns PaginatedCourseLicenseGroupAssignment\n * @throws ApiError\n */\n static catalogLicensesCourseAssignmentGroupRetrieve(licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/course/assignment/group/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create or update a course license group assignment\n * @param licenseId The ID of the course license\n * @param requestBody\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns CourseLicenseGroupAssignmentDetail\n * @throws ApiError\n */\n static catalogLicensesCourseAssignmentGroupCreate(licenseId, requestBody, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/course/assignment/group/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license or group doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a course license group assignment\n * @param assignmentId The ID of the assignment to delete\n * @param licenseId The ID of the course license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns any Assignment successfully deleted\n * @throws ApiError\n */\n static catalogLicensesCourseAssignmentGroupDestroy(assignmentId, licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/licenses/course/assignment/group/',\n query: {\n 'assignment_id': assignmentId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - assignment doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create a new course license\n * @param requestBody\n * @returns CourseLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesCourseCreateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/course/create/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - course or platform doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Update an existing course license\n * @param requestBody\n * @returns CourseLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesCourseUpdateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/course/update/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of platform licenses\n * @param active Filter by active status\n * @param externalId Filter by external identifier\n * @param key Alternative filter by platform key\n * @param name Filter by license name (exact match)\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param query Search license names (contains)\n * @param sort Field to sort results by\n * @param source Filter by license source\n * @param verbose Include detailed assignment data in the response\n * @returns PaginatedPlatformLicense\n * @throws ApiError\n */\n static catalogLicensesPlatformRetrieve(active, externalId, key, name, page, pageSize, platformKey, query, sort = '-id', source, verbose = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/platform/',\n query: {\n 'active': active,\n 'external_id': externalId,\n 'key': key,\n 'name': name,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'query': query,\n 'sort': sort,\n 'source': source,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create a new platform license\n * @param requestBody\n * @returns PlatformLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesPlatformCreateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/platform/create/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Update an existing platform license\n * @param requestBody\n * @returns PlatformLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesPlatformUpdateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/platform/update/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program licenses.\n *\n * This endpoint allows retrieving program licenses with filtering and pagination support.\n *\n * Query Parameters:\n * platform_key (str, optional): The unique identifier for the platform\n * name (str, optional): Filter by license name (exact match)\n * source (str, optional): Filter by license source\n * active (bool, optional): Filter by active status\n * program_id (str, optional): Filter by program ID\n * query (str, optional): Search licenses by name (contains)\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n * verbose (bool, optional): Include additional details in response\n * sort (str, optional): Field to sort results by (default: '-id')\n *\n * Methods:\n * GET: Retrieve a paginated list of program licenses\n *\n * Returns:\n * GET: A paginated JSON response containing program licenses:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/licenses/program/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"expired\": null,\n * \"name\": \"Program License 2023\",\n * \"count\": 100,\n * \"active\": true,\n * \"metadata\": {},\n * \"source\": \"source\",\n * \"external_id\": \"ext-123\",\n * \"platform_key\": \"platform1\",\n * \"program_id\": \"program-v1:org+program+run\",\n * \"assignments\": {\n * \"total\": 50,\n * \"active\": 45,\n * \"pending\": 5\n * }\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If query parameters are invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin or IsPlatformAdminReadOnly permission\n * - Available to platform administrators (read-only) and DM admins\n * @param active Filter by active status\n * @param externalId Filter by external identifier\n * @param key Alternative filter by platform key\n * @param name Filter by license name (exact match)\n * @param org Alternative filter by platform organization\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param programId Filter by program ID\n * @param query Search license names (contains)\n * @param sort Field to sort results by (e.g., '-id', 'created', '-created')\n * @param source Filter by license source\n * @param verbose Include detailed assignment data in the response\n * @returns PaginatedProgramLicense\n * @throws ApiError\n */\n static catalogLicensesProgramRetrieve(active, externalId, key, name, org, page, pageSize, platformKey, platformOrg, programId, query, sort = '-id', source, verbose = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/program/',\n query: {\n 'active': active,\n 'external_id': externalId,\n 'key': key,\n 'name': name,\n 'org': org,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'program_id': programId,\n 'query': query,\n 'sort': sort,\n 'source': source,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - invalid parameters`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of program license assignments\n * @param licenseId The ID of the program license\n * @param active Filter by the active status of assignments\n * @param email Filter assignments for a specific email\n * @param fulfilled Filter by the fulfilled status of assignments\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by (e.g., 'id', '-id', 'created', '-created')\n * @param userId Filter assignments for a specific user ID\n * @returns PaginatedProgramLicenseAssignment\n * @throws ApiError\n */\n static catalogLicensesProgramAssignmentRetrieve(licenseId, active, email, fulfilled, page, pageSize, platformKey, platformOrg, sort = 'id', userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/program/assignment/',\n query: {\n 'active': active,\n 'email': email,\n 'fulfilled': fulfilled,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'user_id': userId\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create or update a program license assignment\n * @param licenseId The ID of the program license\n * @param requestBody\n * @param active Filter by the active status of assignments\n * @param email Filter assignments for a specific email\n * @param fulfilled Filter by the fulfilled status of assignments\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by (e.g., 'id', '-id', 'created', '-created')\n * @param userId Filter assignments for a specific user ID\n * @returns ProgramLicenseAssignmentDetail\n * @throws ApiError\n */\n static catalogLicensesProgramAssignmentCreate(licenseId, requestBody, active, email, fulfilled, page, pageSize, platformKey, platformOrg, sort = 'id', userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/program/assignment/',\n query: {\n 'active': active,\n 'email': email,\n 'fulfilled': fulfilled,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license or user doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Unassign single user from license\n * @param assignmentId The ID of the assignment to delete\n * @param licenseId The ID of the program license\n * @param active Filter by the active status of assignments\n * @param email Filter assignments for a specific email\n * @param fulfilled Filter by the fulfilled status of assignments\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform (for permission validation)\n * @param platformOrg The organization identifier for the platform (for permission validation)\n * @param sort Field to sort results by (e.g., 'id', '-id', 'created', '-created')\n * @param userId Filter assignments for a specific user ID\n * @returns any Assignment successfully deleted\n * @throws ApiError\n */\n static catalogLicensesProgramAssignmentDestroy(assignmentId, licenseId, active, email, fulfilled, page, pageSize, platformKey, platformOrg, sort = 'id', userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/licenses/program/assignment/',\n query: {\n 'active': active,\n 'assignment_id': assignmentId,\n 'email': email,\n 'fulfilled': fulfilled,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'user_id': userId\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - assignment doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of program license group assignments\n * @param licenseId The ID of the program license\n * @param active Filter by the active status of group assignments\n * @param fulfilled Filter by the fulfilled status of group assignments\n * @param groupId Filter assignments for a specific user group ID\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by (e.g., 'id', '-id', 'created', '-created')\n * @returns PaginatedProgramLicenseGroupAssignment\n * @throws ApiError\n */\n static catalogLicensesProgramAssignmentGroupRetrieve(licenseId, active, fulfilled, groupId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/program/assignment/group/',\n query: {\n 'active': active,\n 'fulfilled': fulfilled,\n 'group_id': groupId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create or update a program license group assignment\n * @param licenseId The ID of the program license\n * @param requestBody\n * @param active Filter by the active status of group assignments\n * @param fulfilled Filter by the fulfilled status of group assignments\n * @param groupId Filter assignments for a specific user group ID\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by (e.g., 'id', '-id', 'created', '-created')\n * @returns ProgramLicenseGroupAssignmentDetail\n * @throws ApiError\n */\n static catalogLicensesProgramAssignmentGroupCreate(licenseId, requestBody, active, fulfilled, groupId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/program/assignment/group/',\n query: {\n 'active': active,\n 'fulfilled': fulfilled,\n 'group_id': groupId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license or group doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a program license group assignment\n * @param assignmentId The ID of the assignment to delete\n * @param licenseId The ID of the program license\n * @param active Filter by the active status of group assignments\n * @param fulfilled Filter by the fulfilled status of group assignments\n * @param groupId Filter assignments for a specific user group ID\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform (for permission validation)\n * @param platformOrg The organization identifier for the platform (for permission validation)\n * @param removeUserAssignments Whether to also remove individual user assignments that were created by this group assignment\n * @param sort Field to sort results by (e.g., 'id', '-id', 'created', '-created')\n * @returns any Assignment successfully deleted\n * @throws ApiError\n */\n static catalogLicensesProgramAssignmentGroupDestroy(assignmentId, licenseId, active, fulfilled, groupId, page, pageSize, platformKey, platformOrg, removeUserAssignments = true, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/licenses/program/assignment/group/',\n query: {\n 'active': active,\n 'assignment_id': assignmentId,\n 'fulfilled': fulfilled,\n 'group_id': groupId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'remove_user_assignments': removeUserAssignments,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - assignment doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for creating program licenses.\n *\n * This endpoint allows administrators to create new program licenses with various configurations.\n *\n * Methods:\n * POST: Create a new program license\n *\n * Request Body:\n * A JSON object containing:\n * - platform_key (str, required): The platform to create a license for\n * - program_id (str, required): The program ID to create a license for\n * - name (str, optional): Display name for the license\n * - count (int, optional): Number of seats purchased (default: 0)\n * - started (datetime, optional): Date when license should begin\n * - expired (datetime, optional): Date when license should expire\n * - active (bool, optional): Whether the license is active (default: true)\n * - metadata (dict, optional): Additional license metadata\n * - enrollment_config (dict, optional): Additional enrollment configuration\n * - source (str, optional): Source identifier\n * - external_id (str, optional): External identifier (must be unique)\n *\n * Returns:\n * POST: A JSON response containing the created license:\n * {\n * \"id\": 123,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"expired\": null,\n * \"name\": \"Program License 2023\",\n * \"count\": 100,\n * \"active\": true,\n * \"metadata\": {},\n * \"source\": \"source\",\n * \"external_id\": \"ext-123\",\n * \"platform_key\": \"platform1\",\n * \"program_id\": \"program-v1:org+program+run\"\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to create licenses\n * 500 Internal Server Error: If an unexpected error occurs during license creation\n *\n * Access Control:\n * - Requires IsDMAdmin permission\n * - Available only to DM administrators\n * @param requestBody\n * @returns ProgramLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesProgramCreateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/program/create/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for updating existing program licenses.\n *\n * This endpoint allows administrators to update the properties of an existing program license.\n *\n * Methods:\n * POST: Update an existing program license\n *\n * Request Body:\n * A JSON object containing:\n * - license_id (int, optional): The ID of the license to update (required if external_id not provided)\n * - external_id (str, optional): External identifier of the license to update (required if license_id not provided)\n * - name (str, optional): Updated display name for the license\n * - count (int, optional): Updated number of seats purchased\n * - started (datetime, optional): Updated date when license should begin\n * - expired (datetime, optional): Updated date when license should expire\n * - active (bool, optional): Updated active status\n * - metadata (dict, optional): Updated additional license metadata\n * - enrollment_config (dict, optional): Updated enrollment configuration\n * - source (str, optional): Updated source identifier\n * - change_type (str, optional): Type of change being made (default: \"update\")\n *\n * Returns:\n * POST: A JSON response containing the updated license:\n * {\n * \"id\": 123,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"expired\": \"2024-06-15T14:30:00Z\",\n * \"name\": \"Updated Program License 2023\",\n * \"count\": 150,\n * \"active\": true,\n * \"metadata\": {\"updated\": true},\n * \"source\": \"updated-source\",\n * \"external_id\": \"ext-123\",\n * \"platform_key\": \"platform1\",\n * \"program_id\": \"program-v1:org+program+run\"\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to update licenses\n * 404 Not Found: If the specified license doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs during license update\n *\n * Access Control:\n * - Requires IsDMAdmin permission\n * - Available only to DM administrators\n *\n * Notes:\n * - Cannot update the platform or program associated with a license\n * - A license history record is automatically created for each update\n * @param requestBody\n * @returns ProgramLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesProgramUpdateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/program/update/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - license does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of user licenses\n * @param active Filter by active status\n * @param externalId Filter by external identifier\n * @param key Alternative filter by platform key\n * @param name Filter by license name (exact match)\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param query Search license names (contains)\n * @param sort Field to sort results by\n * @param source Filter by license source\n * @param verbose Include detailed assignment data in the response\n * @returns PaginatedUserLicense\n * @throws ApiError\n */\n static catalogLicensesUserRetrieve(active, externalId, key, name, page, pageSize, platformKey, query, sort = '-id', source, verbose = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/user/',\n query: {\n 'active': active,\n 'external_id': externalId,\n 'key': key,\n 'name': name,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'query': query,\n 'sort': sort,\n 'source': source,\n 'verbose': verbose\n },\n errors: {\n 400: `Bad request - invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Retrieve a paginated list of user license assignments\n * @param licenseId The ID of the user license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns PaginatedUserLicenseAssignment\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentRetrieve(licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/user/assignment/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create or update a user license assignment\n * @param licenseId The ID of the user license\n * @param requestBody\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns UserLicenseAssignmentDetail\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentCreate(licenseId, requestBody, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/user/assignment/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license or user doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a user license assignment\n * @param assignmentId The ID of the assignment to delete\n * @param licenseId The ID of the user license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns any Assignment successfully deleted\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentDestroy(assignmentId, licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/licenses/user/assignment/',\n query: {\n 'assignment_id': assignmentId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - assignment doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Check if a user has an active user license assignment\n * @param email The email address to check for active license assignments\n * @returns any Active license assignment exists for the email\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentCheckRetrieve(email) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/user/assignment/check/',\n query: {\n 'email': email\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 404: `No active license assignment exists for the email`\n }\n });\n }\n /**\n * Retrieve a paginated list of user license group assignments\n * @param licenseId The ID of the user license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns PaginatedUserLicenseGroupAssignment\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentGroupRetrieve(licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/licenses/user/assignment/group/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create or update a user license group assignment\n * @param licenseId The ID of the user license\n * @param requestBody\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns UserLicenseGroupAssignmentDetail\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentGroupCreate(licenseId, requestBody, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/user/assignment/group/',\n query: {\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license or group doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Remove a user license group assignment\n * @param assignmentId The ID of the assignment to delete\n * @param licenseId The ID of the user license\n * @param page Page number for pagination\n * @param pageSize Number of results per page\n * @param platformKey The unique identifier for the platform\n * @param platformOrg The organization identifier for the platform\n * @param sort Field to sort results by\n * @returns any Assignment successfully deleted\n * @throws ApiError\n */\n static catalogLicensesUserAssignmentGroupDestroy(assignmentId, licenseId, page, pageSize, platformKey, platformOrg, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/licenses/user/assignment/group/',\n query: {\n 'assignment_id': assignmentId,\n 'license_id': licenseId,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - assignment doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Create a new user license\n * @param requestBody\n * @returns UserLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesUserCreateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/user/create/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for updating existing user licenses.\n *\n * This endpoint allows administrators to update the properties of an existing user license.\n *\n * Methods:\n * POST: Update an existing user license\n *\n * Request Body:\n * A JSON object containing:\n * - license_id (int, optional): The ID of the license to update (required if external_id not provided)\n * - external_id (str, optional): External identifier of the license to update (required if license_id not provided)\n * - name (str, optional): Updated display name for the license\n * - count (int, optional): Updated number of seats purchased\n * - started (datetime, optional): Updated date when license should begin\n * - expired (datetime, optional): Updated date when license should expire\n * - active (bool, optional): Updated active status\n * - metadata (dict, optional): Updated additional license metadata\n * - enrollment_config (dict, optional): Updated enrollment configuration\n * - source (str, optional): Updated source identifier\n * - change_type (str, optional): Type of change being made (default: \"update\")\n *\n * Returns:\n * POST: A JSON response containing the updated license:\n * {\n * \"id\": 123,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"started\": \"2023-06-15T14:30:00Z\",\n * \"expired\": \"2024-06-15T14:30:00Z\",\n * \"name\": \"Updated User License 2023\",\n * \"count\": 150,\n * \"active\": true,\n * \"metadata\": {\"updated\": true},\n * \"source\": \"updated-source\",\n * \"external_id\": \"ext-123\",\n * \"platform_key\": \"platform1\"\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to update licenses\n * 404 Not Found: If the specified license doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs during license update\n *\n * Access Control:\n * - Requires IsDMAdmin permission\n * - Available only to DM administrators\n *\n * Notes:\n * - Cannot update the platform associated with a license\n * - A license history record is automatically created for each update\n * @param requestBody\n * @returns UserLicenseDetail\n * @throws ApiError\n */\n static catalogLicensesUserUpdateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/licenses/user/update/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Forbidden`,\n 404: `Not found - license doesn't exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Query metadata choices based on field_key, scope, and org parameters.\n * @param fieldKey The key of the field for which choices are being queried\n * @param org The organization context for the metadata choices\n * @param scope The scope within which to query the metadata choices (course, program, pathway, resource)\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataChoicesRetrieve(fieldKey, org, scope) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/choices/',\n query: {\n 'field_key': fieldKey,\n 'org': org,\n 'scope': scope\n }\n });\n }\n /**\n * Retrieve metadata for a course.\n * @param courseId The course ID to get metadata for\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataCourseRetrieve(courseId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/course/',\n query: {\n 'course_id': courseId\n },\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * Update metadata for a course.\n * @param courseId The course ID to get metadata for\n * @param requestBody\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataCourseCreate(courseId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/metadata/course/',\n query: {\n 'course_id': courseId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * Retrieve public metadata for a course.\n * @param courseId The course ID to get metadata for\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataCoursePublicRetrieve(courseId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/course-public/',\n query: {\n 'course_id': courseId\n },\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * Retrieve public metadata for a course.\n * @param courseId The course ID to get metadata for\n * @param field\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataCoursePublicRetrieve2(courseId, field) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/course-public/{field}/',\n path: {\n 'field': field\n },\n query: {\n 'course_id': courseId\n },\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * Search for courses matching specified metadata filters.\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n static catalogMetadataCourseSearchCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/metadata/course-search/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`,\n 500: `No response body`\n }\n });\n }\n /**\n * Retrieve metadata for a course.\n * @param courseId The course ID to get metadata for\n * @param field\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataCourseRetrieve2(courseId, field) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/course/{field}/',\n path: {\n 'field': field\n },\n query: {\n 'course_id': courseId\n },\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * Update metadata for a course.\n * @param courseId The course ID to get metadata for\n * @param field\n * @param requestBody\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataCourseCreate2(courseId, field, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/metadata/course/{field}/',\n path: {\n 'field': field\n },\n query: {\n 'course_id': courseId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * GET\n * Query program metadata.\n *\n * This method retrieves metadata for a specified program. The program is\n * identified by its program_id and organization (org). If the program_id\n * is not provided, a 400 status code is returned indicating a bad request.\n * If the program cannot be found, a 404 status code is returned.\n *\n * Params:\n * program_id: The unique identifier for the program.\n * org: The organization associated with the program.\n *\n * Returns:\n * A JSON response containing the program metadata if successful, or an\n * appropriate error status code.\n *\n * TODO: program-key compatibility\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataProgramRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/program/'\n });\n }\n /**\n * POST\n * Update program metadata.\n *\n * This method updates the metadata for a specified program. The program is\n * identified by its program_id and organization (org). If the program_id\n * is not provided, a 400 status code is returned indicating a bad request.\n * If the program cannot be found, a 404 status code is returned. If the\n * field parameter is provided, a 404 status code is returned as field\n * updates are not supported.\n *\n * Params:\n * program_id: The unique identifier for the program.\n * org: The organization associated with the program.\n * metadata: The new metadata to update the program with.\n * update (optional): A flag indicating whether to update the metadata.\n *\n * Returns:\n * A JSON response containing the updated program metadata if successful,\n * or an appropriate error status code.\n *\n * TODO: program-key compatibility\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataProgramCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/metadata/program/'\n });\n }\n /**\n * GET\n * Query public program metadata.\n *\n * This method retrieves public metadata for a specified program. It requires\n * a program ID and optionally an organization to identify the program. The\n * metadata is filtered to include only public fields.\n *\n * Params:\n * - program_id: The unique identifier for the program.\n * - org: The organization associated with the program.\n *\n * Returns:\n * - 200: Successfully retrieved the program metadata.\n * - 400: Bad request if the program ID is not provided.\n * - 404: Not found if the program or its metadata cannot be retrieved.\n *\n * TODO: Implement program-key compatibility for enhanced querying.\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataProgramPublicRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/program-public/'\n });\n }\n /**\n * GET\n * Query public program metadata.\n *\n * This method retrieves public metadata for a specified program. It requires\n * a program ID and optionally an organization to identify the program. The\n * metadata is filtered to include only public fields.\n *\n * Params:\n * - program_id: The unique identifier for the program.\n * - org: The organization associated with the program.\n *\n * Returns:\n * - 200: Successfully retrieved the program metadata.\n * - 400: Bad request if the program ID is not provided.\n * - 404: Not found if the program or its metadata cannot be retrieved.\n *\n * TODO: Implement program-key compatibility for enhanced querying.\n * @param field\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataProgramPublicRetrieve2(field) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/program-public/{field}/',\n path: {\n 'field': field\n }\n });\n }\n /**\n * GET\n * Query program metadata.\n *\n * This method retrieves metadata for a specified program. The program is\n * identified by its program_id and organization (org). If the program_id\n * is not provided, a 400 status code is returned indicating a bad request.\n * If the program cannot be found, a 404 status code is returned.\n *\n * Params:\n * program_id: The unique identifier for the program.\n * org: The organization associated with the program.\n *\n * Returns:\n * A JSON response containing the program metadata if successful, or an\n * appropriate error status code.\n *\n * TODO: program-key compatibility\n * @param field\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataProgramRetrieve2(field) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/metadata/program/{field}/',\n path: {\n 'field': field\n }\n });\n }\n /**\n * POST\n * Update program metadata.\n *\n * This method updates the metadata for a specified program. The program is\n * identified by its program_id and organization (org). If the program_id\n * is not provided, a 400 status code is returned indicating a bad request.\n * If the program cannot be found, a 404 status code is returned. If the\n * field parameter is provided, a 404 status code is returned as field\n * updates are not supported.\n *\n * Params:\n * program_id: The unique identifier for the program.\n * org: The organization associated with the program.\n * metadata: The new metadata to update the program with.\n * update (optional): A flag indicating whether to update the metadata.\n *\n * Returns:\n * A JSON response containing the updated program metadata if successful,\n * or an appropriate error status code.\n *\n * TODO: program-key compatibility\n * @param field\n * @returns any No response body\n * @throws ApiError\n */\n static catalogMetadataProgramCreate2(field) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/metadata/program/{field}/',\n path: {\n 'field': field\n }\n });\n }\n /**\n * Retrieve catalog-compatible completion information for a user\n * @param userId The user identifier\n * @param fieldKey Specific field to include in the response\n * @returns CourseCompletionCatalogResponse\n * @throws ApiError\n */\n static catalogMilestonesCompletionsCourseCatalogRetrieve(userId, fieldKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/completions/course/catalog/',\n query: {\n 'field_key': fieldKey,\n 'user_id': userId\n },\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `User not found or no completions found`\n }\n });\n }\n /**\n * Retrieve completion information for a specific user and course\n * @param courseId The course identifier (e.g., 'course-v1:org+code+run')\n * @param userId The user identifier\n * @returns CourseCompletion\n * @throws ApiError\n */\n static catalogMilestonesCompletionsCourseManageRetrieve(courseId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/completions/course/manage/',\n query: {\n 'course_id': courseId,\n 'user_id': userId\n },\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `User, course, or completion record not found`\n }\n });\n }\n /**\n * Create or update completion information for a specific user and course\n * @param courseId The course identifier (e.g., 'course-v1:org+code+run')\n * @param userId The user identifier\n * @param requestBody\n * @returns CourseCompletion\n * @throws ApiError\n */\n static catalogMilestonesCompletionsCourseManageCreate(courseId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/completions/course/manage/',\n query: {\n 'course_id': courseId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `User or course not found`,\n 500: `Server error`\n }\n });\n }\n /**\n * Retrieve pathway completion information\n * @param pathwayUuid The unique identifier for the pathway\n * @param userId The user identifier (either user_id or username required)\n * @param username The username (either user_id or username required)\n * @returns PathwayCompletionResponse\n * @throws ApiError\n */\n static catalogMilestonesCompletionsPathwayQueryRetrieve(pathwayUuid, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/completions/pathway/query/',\n query: {\n 'pathway_uuid': pathwayUuid,\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `Pathway, user, or completion information not found`\n }\n });\n }\n /**\n * Retrieve program completion information\n * @param programKey The unique identifier for the program\n * @param userId The user identifier (either user_id or username required)\n * @param username The username (either user_id or username required)\n * @returns ProgramCompletionResponse\n * @throws ApiError\n */\n static catalogMilestonesCompletionsProgramQueryRetrieve(programKey, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/completions/program/query/',\n query: {\n 'program_key': programKey,\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `Program, user, or completion information not found`\n }\n });\n }\n /**\n * Retrieve completion info for resource/user\n * @param resourceId The unique identifier for the resource\n * @param userId The ID of the user\n * @returns ResourceCompletion\n * @throws ApiError\n */\n static catalogMilestonesCompletionsResourceManageRetrieve(resourceId, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/completions/resource/manage/',\n query: {\n 'resource_id': resourceId,\n 'user_id': userId\n },\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `Resource, user, or completion record not found`\n }\n });\n }\n /**\n * Create or update completion information for a specific resource and user\n * @param resourceId The unique identifier for the resource\n * @param userId The ID of the user\n * @param requestBody\n * @returns ResourceCompletion\n * @throws ApiError\n */\n static catalogMilestonesCompletionsResourceManageCreate(resourceId, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/completions/resource/manage/',\n query: {\n 'resource_id': resourceId,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Missing or invalid parameters`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `Resource or user not found`,\n 500: `Server error during completion creation/update`\n }\n });\n }\n /**\n * Retrieve skill point information for a specific block\n * @param blockId ID of the block to retrieve skill point information for\n * @param getObj If True, returns skill objects instead of skill names as keys\n * @returns BlockSkillPointInfoResponse\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsBlockRetrieve(blockId, getObj = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/skill_points/block/',\n query: {\n 'block_id': blockId,\n 'get_obj': getObj\n },\n errors: {\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `Block not found`\n }\n });\n }\n /**\n * Update skill point information for a specific block\n * @param blockId ID of the block to retrieve skill point information for\n * @param requestBody\n * @param getObj If True, returns skill objects instead of skill names as keys\n * @returns any Successfully updated skill points\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsBlockCreate(blockId, requestBody, getObj = false) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/skill_points/block/',\n query: {\n 'block_id': blockId,\n 'get_obj': getObj\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `Block not found`,\n 500: `Server error`\n }\n });\n }\n /**\n * Retrieve skill point information for a specific course\n * @param courseId ID of the course to retrieve skill point information for\n * @param getObj If True, returns skill objects instead of skill names as keys\n * @returns CourseSkillPointInfoResponse\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsCourseRetrieve(courseId, getObj = false) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/skill_points/course/',\n query: {\n 'course_id': courseId,\n 'get_obj': getObj\n },\n errors: {\n 400: `Course not found`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `No skill points found`\n }\n });\n }\n /**\n * Update skill point information for a specific course\n * @param courseId ID of the course to retrieve skill point information for\n * @param requestBody\n * @param getObj If True, returns skill objects instead of skill names as keys\n * @returns any Successfully updated skill points\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsCourseCreate(courseId, requestBody, getObj = false) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/skill_points/course/',\n query: {\n 'course_id': courseId,\n 'get_obj': getObj\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Course not found or invalid request data`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 500: `Server error`\n }\n });\n }\n /**\n * Retrieve paginated list of platform skill points\n * @param departmentMode If True, filters results by department user permissions\n * @param platformKey Platform key identifier\n * @param platformOrg Platform organization identifier\n * @param query Search query for filtering skill points by user or skill name\n * @param sort Sort field for results. Default: '-id'\n * @returns PlatformSkillPointResponse\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsPlatformRetrieve(departmentMode, platformKey, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/skill_points/platform/',\n query: {\n 'department_mode': departmentMode,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Missing platform parameters or retrieval failed`,\n 401: `Unauthorized`,\n 403: `Permission denied`\n }\n });\n }\n /**\n * Update platform skill points for a user\n * @param requestBody\n * @param departmentMode If True, filters results by department user permissions\n * @param platformKey Platform key identifier\n * @param platformOrg Platform organization identifier\n * @param query Search query for filtering skill points by user or skill name\n * @param sort Sort field for results. Default: '-id'\n * @returns any Successfully updated skill points\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsPlatformCreate(requestBody, departmentMode, platformKey, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/skill_points/platform/',\n query: {\n 'department_mode': departmentMode,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`,\n 401: `Unauthorized`,\n 403: `Permission denied`\n }\n });\n }\n /**\n * Delete a platform skill point entry\n * @param skillPointId ID of the skill point to delete\n * @param departmentMode If True, filters results by department user permissions\n * @param platformKey Platform key identifier\n * @param platformOrg Platform organization identifier\n * @param query Search query for filtering skill points by user or skill name\n * @param sort Sort field for results. Default: '-id'\n * @returns any Successfully deleted skill point\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsPlatformDestroy(skillPointId, departmentMode, platformKey, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/milestones/skill_points/platform/',\n query: {\n 'department_mode': departmentMode,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'skill_point_id': skillPointId,\n 'sort': sort\n },\n errors: {\n 400: `Invalid request or deletion failed`,\n 401: `Unauthorized`,\n 403: `Permission denied`\n }\n });\n }\n /**\n * Bulk create/update platform skill points\n * @param requestBody\n * @returns PlatformSkillPointBulkResponse\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsPlatformBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/skill_points/platform/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`,\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 500: `Server error`\n }\n });\n }\n /**\n * Update skill points for all users in a group\n * @param requestBody\n * @returns any Successfully updated group skill points\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsPlatformGroupCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/milestones/skill_points/platform/group/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Invalid request data`,\n 401: `Unauthorized`,\n 403: `Permission denied`\n }\n });\n }\n /**\n * Retrieve skill point information for a specific user\n * @param userId ID of the user to retrieve skill point information for\n * @param username Username to retrieve skill point information for\n * @returns UserSkillPointInfoResponse\n * @throws ApiError\n */\n static catalogMilestonesSkillPointsUserRetrieve(userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/milestones/skill_points/user/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 401: `Unauthorized`,\n 403: `Permission denied`,\n 404: `User not found`\n }\n });\n }\n /**\n * Retrieve pathways matching query. Limited parameters.\n * @returns Pathway\n * @throws ApiError\n */\n static catalogPathwaysList() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/pathways/'\n });\n }\n /**\n * Add or update a pathway.\n * @param requestBody\n * @returns Pathway\n * @throws ApiError\n */\n static catalogPathwaysCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/pathways/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Remove a pathway from the database.\n * @returns PathwayDeleteResponse\n * @throws ApiError\n */\n static catalogPathwaysDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/pathways/',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Retrieve programs matching query parameters. Limited parameters include program_id, name, slug, enabled, and org.\n * @returns Program\n * @throws ApiError\n */\n static catalogProgramsList() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/programs/'\n });\n }\n /**\n * Add or update a program. Accepts a list of courses and updates or creates a program.\n * @param requestBody\n * @returns Program\n * @throws ApiError\n */\n static catalogProgramsCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/programs/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Remove a program from the database. Requires program_id and org as parameters.\n * @returns ProgramDeleteResponse\n * @throws ApiError\n */\n static catalogProgramsDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/programs/',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * GET\n * Get a 'next' course\n *\n * This method retrieves the next recommended course for a user based on the provided parameters.\n * It expects the following parameters in the request query:\n * - user_id: The ID of the user for whom the next course is being recommended.\n * - course_id: The ID of the current course.\n * - org: The organization associated with the course.\n *\n * Returns:\n * - A serialized representation of the next course if found, with a status code of 200.\n * - A status code of 400 if the course_id is not provided.\n * - A status code of 200 with a None response if no next course is found.\n *\n * Error Conditions:\n * - Returns a 400 status code if the course_id is missing from the request parameters.\n *\n * Side Effects:\n * - None\n * @param courseId Current course ID\n * @param org Organization to filter recommendations\n * @param userId User ID for personalized recommendations\n * @returns Course\n * @throws ApiError\n */\n static catalogRecommendationCoursesRetrieve(courseId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/recommendation/courses/',\n query: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve resources matching query. Limited parameters.\n * @param id Resource ID\n * @param itemId Item ID associated with the resource\n * @param key Platform key\n * @param name Resource name\n * @param org Platform organization\n * @param platformKey Platform key (alternative to key)\n * @param platformOrg Platform organization (alternative to org)\n * @param resourceType Type of resource\n * @param userId User ID who owns the resource\n * @param username Username who owns the resource\n * @returns Resource\n * @throws ApiError\n */\n static catalogResourcesList(id, itemId, key, name, org, platformKey, platformOrg, resourceType, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/resources/',\n query: {\n 'id': id,\n 'item_id': itemId,\n 'key': key,\n 'name': name,\n 'org': org,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'resource_type': resourceType,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Create or update a resource with optional image upload\n * Create or update a resource. For updates, include the resource ID.\n * @param formData\n * @param id Resource ID\n * @param itemId Item ID associated with the resource\n * @param key Platform key\n * @param name Resource name\n * @param org Platform organization\n * @param platformKey Platform key (alternative to key)\n * @param platformOrg Platform organization (alternative to org)\n * @param resourceType Type of resource\n * @param userId User ID who owns the resource\n * @param username Username who owns the resource\n * @returns Resource\n * @throws ApiError\n */\n static catalogResourcesCreate(formData, id, itemId, key, name, org, platformKey, platformOrg, resourceType, userId, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/resources/',\n query: {\n 'id': id,\n 'item_id': itemId,\n 'key': key,\n 'name': name,\n 'org': org,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'resource_type': resourceType,\n 'user_id': userId,\n 'username': username\n },\n formData: formData,\n mediaType: 'multipart/form-data'\n });\n }\n /**\n * Remove a resource from the database.\n * @param id Resource ID\n * @param itemId Item ID associated with the resource\n * @param key Platform key\n * @param name Resource name\n * @param org Platform organization\n * @param platformKey Platform key (alternative to key)\n * @param platformOrg Platform organization (alternative to org)\n * @param resourceType Type of resource\n * @param userId User ID who owns the resource\n * @param username Username who owns the resource\n * @returns ResourceDeleteResponse\n * @throws ApiError\n */\n static catalogResourcesDestroy(id, itemId, key, name, org, platformKey, platformOrg, resourceType, userId, username) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/resources/',\n query: {\n 'id': id,\n 'item_id': itemId,\n 'key': key,\n 'name': name,\n 'org': org,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'resource_type': resourceType,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * API View for querying course reviews.\n *\n * This endpoint allows users to retrieve course reviews with filtering by course, user,\n * and platform. Results are paginated and include detailed review information.\n *\n * Query Parameters:\n * course_id (str, optional): Filter reviews by course ID\n * user_id (str/int, optional): Filter reviews by user ID\n * platform_key (str, optional): Filter reviews by platform key\n * platform_org (str, optional): Filter reviews by platform organization\n * org (str, optional): Alias for platform_org\n * sort (str, optional): Field to sort results by (default: '-id')\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course reviews with filtering\n *\n * Returns:\n * GET: A paginated JSON response containing course reviews:\n * {\n * \"count\": 15,\n * \"next\": \"https://api.example.com/api/catalog/reviews/course/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"content\": \"This course was excellent and very informative.\",\n * \"rating\": 4.5,\n * \"title\": \"Great Course!\",\n * \"visible\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"modified\": \"2023-01-15T10:30:00Z\",\n * \"course_id\": \"course-v1:org+course+run\"\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsPlatformAdminForCourse permission\n * - Platform admins can view reviews for courses in their platform (read-only)\n * - DM admins can view all reviews\n * @returns any No response body\n * @throws ApiError\n */\n static catalogReviewsCourseRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/reviews/course/'\n });\n }\n /**\n * Retrieve aggregate review information for a course.\n * @param courseId The course ID to get review information for\n * @returns CourseReviewInfoResponse\n * @throws ApiError\n */\n static catalogReviewsCourseInfoRetrieve(courseId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/reviews/course/info/',\n query: {\n 'course_id': courseId\n },\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * API View for creating, updating, and deleting course reviews.\n *\n * This endpoint allows users to create, update, or delete their own course reviews.\n *\n * Methods:\n * POST: Create or update a course review\n * DELETE: Delete a course review\n *\n * Request Body (POST):\n * A JSON object containing:\n * - course_id (str, required): The course ID to review\n * - username (str, required): The username of the reviewer\n * - rating (float, optional): The rating value (typically 1-5)\n * - title (str, optional): The review title\n * - content (str, optional): The review content/text\n * - visible (bool, optional): Whether the review is visible (default: true)\n *\n * Query Parameters (DELETE):\n * course_id (str, required): The course ID of the review to delete\n * username (str, required): The username of the reviewer\n *\n * Returns:\n * POST: A JSON response containing the created/updated review:\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"content\": \"This course was excellent and very informative.\",\n * \"rating\": 4.5,\n * \"title\": \"Great Course!\",\n * \"visible\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"modified\": \"2023-01-15T10:30:00Z\",\n * \"course_id\": \"course-v1:org+course+run\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage this review\n * 500 Internal Server Error: If an unexpected error occurs during review operations\n *\n * Access Control:\n * - Requires IsDMAdmin or IsEdxUserReadWriteDelete permission\n * - Users can create, update, or delete their own reviews\n * - DM admins can manage all reviews\n * @returns any No response body\n * @throws ApiError\n */\n static catalogReviewsCourseUpdateCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/reviews/course/update/'\n });\n }\n /**\n * API View for creating, updating, and deleting course reviews.\n *\n * This endpoint allows users to create, update, or delete their own course reviews.\n *\n * Methods:\n * POST: Create or update a course review\n * DELETE: Delete a course review\n *\n * Request Body (POST):\n * A JSON object containing:\n * - course_id (str, required): The course ID to review\n * - username (str, required): The username of the reviewer\n * - rating (float, optional): The rating value (typically 1-5)\n * - title (str, optional): The review title\n * - content (str, optional): The review content/text\n * - visible (bool, optional): Whether the review is visible (default: true)\n *\n * Query Parameters (DELETE):\n * course_id (str, required): The course ID of the review to delete\n * username (str, required): The username of the reviewer\n *\n * Returns:\n * POST: A JSON response containing the created/updated review:\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"content\": \"This course was excellent and very informative.\",\n * \"rating\": 4.5,\n * \"title\": \"Great Course!\",\n * \"visible\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"modified\": \"2023-01-15T10:30:00Z\",\n * \"course_id\": \"course-v1:org+course+run\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage this review\n * 500 Internal Server Error: If an unexpected error occurs during review operations\n *\n * Access Control:\n * - Requires IsDMAdmin or IsEdxUserReadWriteDelete permission\n * - Users can create, update, or delete their own reviews\n * - DM admins can manage all reviews\n * @returns void\n * @throws ApiError\n */\n static catalogReviewsCourseUpdateDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/reviews/course/update/'\n });\n }\n /**\n * API View for querying program reviews.\n *\n * This endpoint allows users to retrieve program reviews with filtering by program, user,\n * and platform. Results are paginated and include detailed review information.\n *\n * Query Parameters:\n * program_id (str, optional): Filter reviews by program ID\n * platform_key (str, optional): Filter reviews by platform key\n * platform_org (str, optional): Filter reviews by platform organization\n * org (str, optional): Alias for platform_org\n * user_id (str/int, optional): Filter reviews by user ID\n * sort (str, optional): Field to sort results by (default: '-id')\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program reviews with filtering\n *\n * Returns:\n * GET: A paginated JSON response containing program reviews:\n * {\n * \"count\": 15,\n * \"next\": \"https://api.example.com/api/catalog/reviews/program/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"content\": \"This program was comprehensive and well-structured.\",\n * \"rating\": 4.5,\n * \"title\": \"Excellent Program\",\n * \"visible\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"modified\": \"2023-01-15T10:30:00Z\",\n * \"program_key\": \"program-v1:org+program123\"\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsPlatformAdminForProgram permission\n * - Platform admins can view reviews for programs in their platform (read-only)\n * - DM admins can view all reviews\n * @returns any No response body\n * @throws ApiError\n */\n static catalogReviewsProgramRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/reviews/program/'\n });\n }\n /**\n * Retrieve aggregate review information for a program.\n * @param programKey The program key to get review information for\n * @returns ProgramReviewInfoResponse\n * @throws ApiError\n */\n static catalogReviewsProgramInfoRetrieve(programKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/reviews/program/info/',\n query: {\n 'program_key': programKey\n },\n errors: {\n 400: `No response body`,\n 404: `No response body`\n }\n });\n }\n /**\n * API View for creating, updating, and deleting program reviews.\n *\n * This endpoint allows users to create, update, or delete their own program reviews.\n *\n * Methods:\n * POST: Create or update a program review\n * DELETE: Delete a program review\n *\n * Request Body (POST):\n * A JSON object containing:\n * - program_key (str, required): The program key to review (format: program-v1:org+program_id)\n * - username (str, required): The username of the reviewer\n * - rating (float, optional): The rating value (typically 1-5)\n * - title (str, optional): The review title\n * - content (str, optional): The review content/text\n * - visible (bool, optional): Whether the review is visible (default: true)\n *\n * Query Parameters (DELETE):\n * program_key (str, required): The program key of the review to delete\n * username (str, required): The username of the reviewer\n *\n * Returns:\n * POST: A JSON response containing the created/updated review:\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"content\": \"This program was comprehensive and well-structured.\",\n * \"rating\": 4.5,\n * \"title\": \"Excellent Program\",\n * \"visible\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"modified\": \"2023-01-15T10:30:00Z\",\n * \"program_key\": \"program-v1:org+program123\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage this review\n * 500 Internal Server Error: If an unexpected error occurs during review operations\n *\n * Access Control:\n * - Requires IsDMAdmin or IsEdxUserReadWriteDelete permission\n * - Users can create, update, or delete their own reviews\n * - DM admins can manage all reviews\n * @returns any No response body\n * @throws ApiError\n */\n static catalogReviewsProgramUpdateCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/reviews/program/update/'\n });\n }\n /**\n * API View for creating, updating, and deleting program reviews.\n *\n * This endpoint allows users to create, update, or delete their own program reviews.\n *\n * Methods:\n * POST: Create or update a program review\n * DELETE: Delete a program review\n *\n * Request Body (POST):\n * A JSON object containing:\n * - program_key (str, required): The program key to review (format: program-v1:org+program_id)\n * - username (str, required): The username of the reviewer\n * - rating (float, optional): The rating value (typically 1-5)\n * - title (str, optional): The review title\n * - content (str, optional): The review content/text\n * - visible (bool, optional): Whether the review is visible (default: true)\n *\n * Query Parameters (DELETE):\n * program_key (str, required): The program key of the review to delete\n * username (str, required): The username of the reviewer\n *\n * Returns:\n * POST: A JSON response containing the created/updated review:\n * {\n * \"user_id\": 123,\n * \"username\": \"student1\",\n * \"content\": \"This program was comprehensive and well-structured.\",\n * \"rating\": 4.5,\n * \"title\": \"Excellent Program\",\n * \"visible\": true,\n * \"created\": \"2023-01-15T10:30:00Z\",\n * \"modified\": \"2023-01-15T10:30:00Z\",\n * \"program_key\": \"program-v1:org+program123\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage this review\n * 500 Internal Server Error: If an unexpected error occurs during review operations\n *\n * Access Control:\n * - Requires IsDMAdmin or IsEdxUserReadWriteDelete permission\n * - Users can create, update, or delete their own reviews\n * - DM admins can manage all reviews\n * @returns void\n * @throws ApiError\n */\n static catalogReviewsProgramUpdateDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/reviews/program/update/'\n });\n }\n /**\n * Retrieve roles matching query parameters. Supports filtering by name, id, and slug.\n * @param id Role ID\n * @param name Role name\n * @param nameIexact Exact match for role name (case insensitive)\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Platform key\n * @param slug Role slug\n * @param sort Field to sort results by\n * @returns Role\n * @throws ApiError\n */\n static catalogRolesRetrieve(id, name, nameIexact, page, pageSize, platformKey, slug, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/roles/',\n query: {\n 'id': id,\n 'name': name,\n 'name__iexact': nameIexact,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'slug': slug,\n 'sort': sort\n }\n });\n }\n /**\n * Add a new role or update an existing role based on provided data.\n * @param requestBody\n * @param id Role ID\n * @param name Role name\n * @param nameIexact Exact match for role name (case insensitive)\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Platform key\n * @param slug Role slug\n * @param sort Field to sort results by\n * @returns Role\n * @throws ApiError\n */\n static catalogRolesCreate(requestBody, id, name, nameIexact, page, pageSize, platformKey, slug, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/roles/',\n query: {\n 'id': id,\n 'name': name,\n 'name__iexact': nameIexact,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'slug': slug,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve desired roles for a user.\n * @param userId User ID\n * @param username Username\n * @returns DesiredRole\n * @throws ApiError\n */\n static catalogRolesDesiredRetrieve(userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/roles/desired/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Add or update desired roles for a user.\n * @param requestBody\n * @param userId User ID\n * @param username Username\n * @returns DesiredRole\n * @throws ApiError\n */\n static catalogRolesDesiredCreate(requestBody, userId, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/roles/desired/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Add or update a role through the public API (when enabled).\n * @param requestBody\n * @returns Role\n * @throws ApiError\n */\n static catalogRolesPublicCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/roles/public/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 404: `No response body`\n }\n });\n }\n /**\n * Retrieve reported roles for a user.\n * @param userId User ID\n * @param username Username\n * @returns ReportedRole\n * @throws ApiError\n */\n static catalogRolesReportedRetrieve(userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/roles/reported/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * Add or update reported roles for a user.\n * @param requestBody\n * @param userId User ID\n * @param username Username\n * @returns ReportedRole\n * @throws ApiError\n */\n static catalogRolesReportedCreate(requestBody, userId, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/roles/reported/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `No response body`\n }\n });\n }\n /**\n * POST\n * Retrieve programs matching query.\n *\n * Params:\n * query: The search term used to filter programs.\n * org: The organization to which the programs belong.\n *\n * Returns:\n * A JSON response containing a list of programs that match the search criteria.\n *\n * Error Conditions:\n * - If the request data is malformed or missing required fields, a 400 Bad Request may be returned.\n * - If there is an issue with the database query, a 500 Internal Server Error may be returned.\n *\n * Side Effects:\n * - None\n *\n * Special Return Codes:\n * - A 200 status code indicates successful retrieval of programs matching the query.\n * @param requestBody\n * @param org The organization to which the programs belong\n * @param query The search term used to filter programs\n * @returns ProgramSearch\n * @throws ApiError\n */\n static catalogSearchProgramsCreate(requestBody, org, query = '') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/search/programs/',\n query: {\n 'org': org,\n 'query': query\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve skills matching query. Limited parameters.\n * @param id Skill ID\n * @param name Skill name\n * @param nameIexact Exact match for skill name (case insensitive)\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Platform key\n * @param slug Skill slug\n * @param sort Field to sort results by\n * @returns Skill\n * @throws ApiError\n */\n static catalogSkillsRetrieve(id, name, nameIexact, page, pageSize, platformKey, slug, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/skills/',\n query: {\n 'id': id,\n 'name': name,\n 'name__iexact': nameIexact,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'slug': slug,\n 'sort': sort\n }\n });\n }\n /**\n * Add or update a skill.\n * @param id Skill ID\n * @param name Skill name\n * @param nameIexact Exact match for skill name (case insensitive)\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Platform key\n * @param slug Skill slug\n * @param sort Field to sort results by\n * @param requestBody\n * @returns Skill\n * @throws ApiError\n */\n static catalogSkillsCreate(id, name, nameIexact, page, pageSize, platformKey, slug, sort = 'id', requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/skills/',\n query: {\n 'id': id,\n 'name': name,\n 'name__iexact': nameIexact,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'slug': slug,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve desired skills for a user.\n * @param userId User ID\n * @param username Username\n * @returns DesiredSkill\n * @throws ApiError\n */\n static catalogSkillsDesiredRetrieve(userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/skills/desired/',\n query: {\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Add or update desired skills for a user.\n * @param requestBody\n * @param userId User ID\n * @param username Username\n * @returns DesiredSkill\n * @throws ApiError\n */\n static catalogSkillsDesiredCreate(requestBody, userId, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/skills/desired/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Add or update a skill.\n * @param requestBody\n * @returns Skill\n * @throws ApiError\n */\n static catalogSkillsPublicCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/skills/public/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * GET\n * Retrieve desired skills for user\n *\n * Params:\n * name\n * id\n * slug\n *\n * This method retrieves the skills reported by a user. It requires either\n * a user_id or username to identify the user. If the user is found and has\n * reported skills, the first reported skill is serialized and returned with\n * a status code of 200. If no skills are found, a status code of 400 is returned.\n *\n * Error Conditions:\n * - If the user cannot be identified, a 400 status code is returned.\n * - If no reported skills exist for the user, a 400 status code is returned.\n * @param userId User ID\n * @param username Username\n * @returns ReportedSkill\n * @throws ApiError\n */\n static catalogSkillsReportedRetrieve(userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/skills/reported/',\n query: {\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * POST\n * Add or update a skill.\n *\n * Params:\n * user_id/username\n * skills\n * data\n *\n * This method allows adding or updating a user's reported skills. It requires\n * either a user_id or username to identify the user, along with a list of skills\n * and additional data. If the user is identified and the skills are successfully\n * saved, the serialized skill data is returned. A status code of 201 indicates\n * that a new skill was created, while a status code of 200 indicates an update\n * to an existing skill.\n *\n * Error Conditions:\n * - If the user cannot be identified, a 400 status code is returned.\n * - If the skills cannot be saved, a 400 status code is returned.\n *\n * Side Effects:\n * - If a new skill is created, it will be persisted in the database.\n * - If an existing skill is updated, the changes will be saved in the database.\n * @param requestBody\n * @param userId User ID\n * @param username Username\n * @returns ReportedSkill\n * @throws ApiError\n */\n static catalogSkillsReportedCreate(requestBody, userId, username) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/skills/reported/',\n query: {\n 'user_id': userId,\n 'username': username\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API View for managing course suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete course suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course suggestions for a platform\n * POST: Create or update a course suggestion\n * DELETE: Remove a course suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - course_id (str, required): The course ID to suggest\n * - user_id (str/int, required): The user to suggest the course to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing course suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/course/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param platformKey The platform to retrieve suggestions for\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns PaginatedCourseSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageRetrieve(platformKey, departmentMode, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/course/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing course suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete course suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course suggestions for a platform\n * POST: Create or update a course suggestion\n * DELETE: Remove a course suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - course_id (str, required): The course ID to suggest\n * - user_id (str/int, required): The user to suggest the course to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing course suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/course/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param platformKey The platform to retrieve suggestions for\n * @param requestBody\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns CourseSuggestionDetail\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageCreate(platformKey, requestBody, departmentMode, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/course/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Delete single suggestion\n * @param platformKey The platform to retrieve suggestions for\n * @param suggestionId The ID of the suggestion to delete\n * @param departmentMode Flag to ensure department admins can call the API\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns any Success - suggestion deleted\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageDestroy(platformKey, suggestionId, departmentMode = false, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/suggestions/course/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'suggestion_id': suggestionId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - suggestion does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for bulk management of course suggestions.\n *\n * This endpoint allows administrators to create multiple course suggestions at once.\n *\n * Methods:\n * POST: Create multiple course suggestions in bulk\n *\n * Request Body:\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestions\n * - suggestion_data (list, required): List of suggestion objects, each containing:\n * - course_id (str, required): The course ID to suggest\n * - user_id (str/int, required): The user to suggest the course to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Returns:\n * POST: A JSON response containing the operation results:\n * {\n * \"successes\": 15,\n * \"error_codes\": []\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs during bulk creation\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can create suggestions for their platform\n * - Department admins can create suggestions for their departments\n * - DM admins can create suggestions for any platform\n * @param requestBody\n * @returns BulkSuggestionResponse\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/course/manage/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing course group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete course suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course group suggestions for a platform\n * POST: Create or update a course group suggestion\n * DELETE: Remove a course group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - course_id (str, required): The course ID to suggest\n * - group_id (str/int, required): The group to suggest the course to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing course group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/course/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns PaginatedCourseGroupSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageGroupRetrieve(platformKey, departmentMode, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/course/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing course group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete course suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course group suggestions for a platform\n * POST: Create or update a course group suggestion\n * DELETE: Remove a course group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - course_id (str, required): The course ID to suggest\n * - group_id (str/int, required): The group to suggest the course to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing course group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/course/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param requestBody\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns CourseGroupSuggestionDetail\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageGroupCreate(platformKey, requestBody, departmentMode, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/course/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing course group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete course suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course group suggestions for a platform\n * POST: Create or update a course group suggestion\n * DELETE: Remove a course group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - course_id (str, required): The course ID to suggest\n * - group_id (str/int, required): The group to suggest the course to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing course group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/course/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param suggestionId The ID of the group suggestion to delete\n * @param departmentMode Flag to ensure department admins can call the API\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns any Success - group suggestion deleted\n * @throws ApiError\n */\n static catalogSuggestionsCourseManageGroupDestroy(platformKey, suggestionId, departmentMode = false, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/suggestions/course/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'suggestion_id': suggestionId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - group suggestion does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for retrieving course suggestions for a specific user.\n *\n * This endpoint allows users to view course suggestions that have been made for them,\n * with support for filtering by platform and pagination.\n *\n * Query Parameters:\n * user (str, required): Username or user ID to retrieve suggestions for\n * platform_key (str, optional): Filter suggestions by platform key\n * platform_org (str, optional): Filter suggestions by platform organization\n * sort (str, optional): Field to sort results by (default: '-id')\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of course suggestions for a user\n *\n * Returns:\n * GET: A paginated JSON response containing course suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/course/user/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"course_id\": \"course-v1:org+course+run\",\n * \"course_name\": \"Introduction to Programming\"\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion retrieval fails\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsEdxUserReadOnly permission\n * - Users can view their own suggestions\n * - Platform admins can view suggestions for users in their platform (read-only)\n * - DM admins can view all suggestions\n * @param user Username or user ID to retrieve suggestions for\n * @param email Email to retrieve suggestions for\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Filter suggestions by platform key\n * @param platformOrg Filter suggestions by platform organization\n * @param sort Field to sort results by\n * @param userId User ID to retrieve suggestions for\n * @returns PaginatedCourseSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsCourseUserRetrieve(user, email, page, pageSize, platformKey, platformOrg, sort = '-id', userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/course/user/',\n query: {\n 'email': email,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'user': user,\n 'user_id': userId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing pathway suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete pathway suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of pathway suggestions for a platform\n * POST: Create or update a pathway suggestion\n * DELETE: Remove a pathway suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - pathway_id (str, required): The pathway ID to suggest\n * - user_id (str/int, required): The user to suggest the pathway to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing pathway suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/pathway/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param platformKey The platform to retrieve suggestions for\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns PaginatedPathwaySuggestion\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageRetrieve(platformKey, departmentMode, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/pathway/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing pathway suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete pathway suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of pathway suggestions for a platform\n * POST: Create or update a pathway suggestion\n * DELETE: Remove a pathway suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - pathway_id (str, required): The pathway ID to suggest\n * - user_id (str/int, required): The user to suggest the pathway to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing pathway suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/pathway/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param platformKey The platform to retrieve suggestions for\n * @param requestBody\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns PathwaySuggestionDetail\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageCreate(platformKey, requestBody, departmentMode, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/pathway/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * Delete single suggestion\n * @param platformKey The platform to retrieve suggestions for\n * @param suggestionId The ID of the suggestion to delete\n * @param departmentMode Flag to ensure department admins can call the API\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns any Success - suggestion deleted\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageDestroy(platformKey, suggestionId, departmentMode = false, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/suggestions/pathway/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'suggestion_id': suggestionId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - suggestion does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for bulk creation of pathway suggestions.\n *\n * This endpoint allows administrators to create multiple pathway suggestions at once.\n *\n * Methods:\n * POST: Create multiple pathway suggestions in a single request\n *\n * Request Body:\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestions\n * - suggestion_data (list, required): List of suggestion objects, each containing:\n * - pathway_id (str, required): The pathway ID to suggest\n * - user_id (str/int, required): The user to suggest the pathway to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Returns:\n * POST: A JSON response containing the operation results:\n * {\n * \"successes\": 15,\n * \"error_codes\": []\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs during bulk creation\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can create suggestions for their platform\n * - Department admins can create suggestions for their departments\n * - DM admins can create suggestions for any platform\n * @param requestBody\n * @returns BulkSuggestionResponse\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/pathway/manage/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing pathway group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete pathway suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of pathway group suggestions for a platform\n * POST: Create or update a pathway group suggestion\n * DELETE: Remove a pathway group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - pathway_id (str, required): The pathway ID to suggest\n * - group_id (str/int, required): The group to suggest the pathway to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing pathway group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/pathway/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns PaginatedPathwayGroupSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageGroupRetrieve(platformKey, departmentMode, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/pathway/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing pathway group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete pathway suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of pathway group suggestions for a platform\n * POST: Create or update a pathway group suggestion\n * DELETE: Remove a pathway group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - pathway_id (str, required): The pathway ID to suggest\n * - group_id (str/int, required): The group to suggest the pathway to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing pathway group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/pathway/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param requestBody\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns PathwayGroupSuggestionDetail\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageGroupCreate(platformKey, requestBody, departmentMode, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/pathway/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing pathway group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete pathway suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of pathway group suggestions for a platform\n * POST: Create or update a pathway group suggestion\n * DELETE: Remove a pathway group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - pathway_id (str, required): The pathway ID to suggest\n * - group_id (str/int, required): The group to suggest the pathway to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing pathway group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/pathway/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param suggestionId The ID of the group suggestion to delete\n * @param departmentMode Flag to ensure department admins can call the API\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns any Success - group suggestion deleted\n * @throws ApiError\n */\n static catalogSuggestionsPathwayManageGroupDestroy(platformKey, suggestionId, departmentMode = false, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/suggestions/pathway/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'suggestion_id': suggestionId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - group suggestion does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for retrieving pathway suggestions for a specific user.\n *\n * This endpoint allows users to view pathway suggestions that have been made for them,\n * with support for filtering by platform and pagination.\n *\n * Query Parameters:\n * user (str, required): Username or user ID to retrieve suggestions for\n * platform_key (str, optional): Filter suggestions by platform key\n * platform_org (str, optional): Filter suggestions by platform organization\n * sort (str, optional): Field to sort results by (default: '-id')\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of pathway suggestions for a user\n *\n * Returns:\n * GET: A paginated JSON response containing pathway suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/pathway/user/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"pathway_id\": \"pathway-v1:org+pathway+run\",\n * \"pathway_uuid\": \"12345678-1234-5678-1234-567812345678\",\n * \"pathway_name\": \"Data Science Pathway\",\n * \"pathway_platform_key\": \"platform1\"\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion retrieval fails\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsEdxUserReadOnly permission\n * - Users can view their own suggestions\n * - Platform admins can view suggestions for users in their platform (read-only)\n * - DM admins can view all suggestions\n * @param username Username or user ID to retrieve suggestions for\n * @param email Email to retrieve suggestions for\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Filter suggestions by platform key\n * @param platformOrg Filter suggestions by platform organization\n * @param sort Field to sort results by\n * @param userId User ID to retrieve suggestions for\n * @returns PaginatedPathwaySuggestion\n * @throws ApiError\n */\n static catalogSuggestionsPathwayUserRetrieve(username, email, page, pageSize, platformKey, platformOrg, sort = '-id', userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/pathway/user/',\n query: {\n 'email': email,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete program suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program suggestions for a platform\n * POST: Create or update a program suggestion\n * DELETE: Remove a program suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - program_key (str, required): The program key to suggest\n * - user_id (str/int, required): The user to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing program suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param platformKey The platform to retrieve suggestions for\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns PaginatedProgramSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageRetrieve(platformKey, departmentMode, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/program/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete program suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program suggestions for a platform\n * POST: Create or update a program suggestion\n * DELETE: Remove a program suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - program_key (str, required): The program key to suggest\n * - user_id (str/int, required): The user to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing program suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param platformKey The platform to retrieve suggestions for\n * @param requestBody\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns ProgramSuggestionDetail\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageCreate(platformKey, requestBody, departmentMode, page, pageSize, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/program/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program suggestions.\n *\n * This endpoint allows administrators to view, create, update, and delete program suggestions\n * for users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter suggestions\n * sort (str, optional): Field to sort results by (default: '-id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program suggestions for a platform\n * POST: Create or update a program suggestion\n * DELETE: Remove a program suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestion\n * - program_key (str, required): The program key to suggest\n * - user_id (str/int, required): The user to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing program suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/manage/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated suggestion:\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage suggestions for their platform\n * - Department admins can manage suggestions for their departments\n * - DM admins can manage all suggestions\n * @param suggestionId The ID of the suggestion to delete\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey The platform to delete the suggestion from\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter suggestions\n * @param sort Field to sort results by\n * @returns any Success - suggestion deleted\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageDestroy(suggestionId, departmentMode, page, pageSize, platformKey, platformOrg, query, sort = '-id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/suggestions/program/manage/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'suggestion_id': suggestionId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - suggestion does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for bulk creation of program suggestions.\n *\n * This endpoint allows administrators to create multiple program suggestions at once.\n *\n * Methods:\n * POST: Create multiple program suggestions in bulk\n *\n * Request Body:\n * A JSON object containing:\n * - platform_key (str, required): The platform for the suggestions\n * - suggestion_data (array, required): Array of suggestion objects with:\n * - program_key (str, required): The program key to suggest\n * - user_id (str/int, required): The user to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Returns:\n * POST: A JSON response containing the results of the bulk operation:\n * {\n * \"successes\": 15,\n * \"error_codes\": []\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to create suggestions\n * 500 Internal Server Error: If an unexpected error occurs during bulk creation\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can create suggestions for their platform\n * - Department admins can create suggestions for their departments\n * - DM admins can create suggestions for all platforms\n * @param requestBody\n * @returns BulkSuggestionResponse\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/program/manage/bulk/',\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete program suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program group suggestions for a platform\n * POST: Create or update a program group suggestion\n * DELETE: Remove a program group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - program_key (str, required): The program key to suggest\n * - group_id (str/int, required): The group to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing program group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns PaginatedProgramGroupSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageGroupRetrieve(platformKey, departmentMode, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/program/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete program suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program group suggestions for a platform\n * POST: Create or update a program group suggestion\n * DELETE: Remove a program group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - program_key (str, required): The program key to suggest\n * - group_id (str/int, required): The group to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing program group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param requestBody\n * @param departmentMode Filter suggestions by department admin access\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns ProgramGroupSuggestionDetail\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageGroupCreate(platformKey, requestBody, departmentMode, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/catalog/suggestions/program/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n },\n body: requestBody,\n mediaType: 'application/json',\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for managing program group suggestions.\n *\n * This endpoint allows administrators to view, create, and delete program suggestions\n * for groups of users within a platform.\n *\n * Query Parameters (GET):\n * platform_key (str, required): The platform to retrieve group suggestions for\n * platform_org (str, optional): The organization identifier for the platform\n * query (str, optional): Search term to filter group suggestions\n * sort (str, optional): Field to sort results by (default: 'id')\n * department_mode (bool, optional): Filter suggestions by department admin access\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program group suggestions for a platform\n * POST: Create or update a program group suggestion\n * DELETE: Remove a program group suggestion\n *\n * Request Body (POST):\n * A JSON object containing:\n * - platform_key (str, required): The platform for the group suggestion\n * - program_key (str, required): The program key to suggest\n * - group_id (str/int, required): The group to suggest the program to\n * - accepted (bool, optional): Whether the suggestion is accepted\n * - visible (bool, optional): Whether the suggestion is visible\n * - metadata (dict, optional): Additional suggestion metadata\n *\n * Query Parameters (DELETE):\n * suggestion_id (int, required): The ID of the group suggestion to delete\n *\n * Returns:\n * GET: A paginated JSON response containing program group suggestions:\n * {\n * \"count\": 5,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/group/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\",\n * \"user_count\": 25\n * },\n * ...\n * ]\n * }\n *\n * POST: A JSON response containing the created/updated group suggestion:\n * {\n * \"id\": 123,\n * \"group_id\": 789,\n * \"group_name\": \"Engineering Team\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\",\n * \"user_count\": 25\n * }\n *\n * DELETE: A success response with status 200\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if group suggestion operations fail\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to manage group suggestions\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdmin, or IsDepartmentModeAdminInPlatform permission\n * - Platform admins can manage group suggestions for their platform\n * - Department admins can manage group suggestions for their departments\n * - DM admins can manage all group suggestions\n * @param platformKey The platform to retrieve group suggestions for\n * @param suggestionId The ID of the group suggestion to delete\n * @param departmentMode Flag to ensure department admins can call the API\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformOrg The organization identifier for the platform\n * @param query Search term to filter group suggestions\n * @param sort Field to sort results by\n * @returns any Success - group suggestion deleted\n * @throws ApiError\n */\n static catalogSuggestionsProgramManageGroupDestroy(platformKey, suggestionId, departmentMode = false, page, pageSize, platformOrg, query, sort = 'id') {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/catalog/suggestions/program/manage/group/',\n query: {\n 'department_mode': departmentMode,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort,\n 'suggestion_id': suggestionId\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 404: `Not found - group suggestion does not exist`,\n 500: `Internal server error`\n }\n });\n }\n /**\n * API View for retrieving program suggestions for a specific user.\n *\n * This endpoint allows users to view program suggestions that have been made for them,\n * with support for filtering by platform and pagination.\n *\n * Query Parameters:\n * user (str, required): Username or user ID to retrieve suggestions for\n * platform_key (str, optional): Filter suggestions by platform key\n * platform_org (str, optional): Filter suggestions by platform organization\n * sort (str, optional): Field to sort results by (default: '-id')\n * page (int, optional): Page number for pagination\n * page_size (int, optional): Number of items per page\n *\n * Methods:\n * GET: Retrieve a paginated list of program suggestions for a user\n *\n * Returns:\n * GET: A paginated JSON response containing program suggestions:\n * {\n * \"count\": 10,\n * \"next\": \"https://example.com/api/catalog/suggestions/program/user/?page=2\",\n * \"previous\": null,\n * \"results\": [\n * {\n * \"id\": 123,\n * \"user_id\": 456,\n * \"username\": \"student1\",\n * \"name\": \"Student Name\",\n * \"platform_key\": \"platform1\",\n * \"accepted\": false,\n * \"visible\": true,\n * \"created\": \"2023-06-15T14:30:00Z\",\n * \"modified\": \"2023-06-15T14:30:00Z\",\n * \"metadata\": {},\n * \"program_key\": \"program-v1:org+program+run\",\n * \"program_name\": \"Data Science Program\"\n * },\n * ...\n * ]\n * }\n *\n * Error Responses:\n * 400 Bad Request: If required parameters are missing or invalid, or if suggestion retrieval fails\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsDMAdmin, IsPlatformAdminReadOnly, or IsEdxUserReadOnly permission\n * - Users can view their own suggestions\n * - Platform admins can view suggestions for users in their platform (read-only)\n * - DM admins can view all suggestions\n * @param username Username or user ID to retrieve suggestions for\n * @param email Email to retrieve suggestions for\n * @param page Page number for pagination\n * @param pageSize Number of items per page\n * @param platformKey Filter suggestions by platform key\n * @param platformOrg Filter suggestions by platform organization\n * @param sort Field to sort results by\n * @param userId User ID to retrieve suggestions for\n * @returns PaginatedProgramSuggestion\n * @throws ApiError\n */\n static catalogSuggestionsProgramUserRetrieve(username, email, page, pageSize, platformKey, platformOrg, sort = '-id', userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/catalog/suggestions/program/user/',\n query: {\n 'email': email,\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'sort': sort,\n 'user_id': userId,\n 'username': username\n },\n errors: {\n 400: `Bad request - required parameters missing or invalid`,\n 401: `Unauthorized - authentication required`,\n 403: `Forbidden - insufficient permissions`,\n 500: `Internal server error`\n }\n });\n }\n}\n\nclass CoreService {\n /**\n * Create DM and AXD Tokens for user and platform_key\n *\n * Params:\n * - Any of user_id, username, or email (choose one only, required)\n * - platform_key: str (required)\n * @param requestBody\n * @returns TokenProxyOutput\n * @throws ApiError\n */\n static coreConsolidatedTokenProxyCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/consolidated-token/proxy/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Show (active) departments associated with a platform\n * @returns any No response body\n * @throws ApiError\n */\n static coreDepartmentsRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/departments/'\n });\n }\n /**\n * Create/update a department\n * @returns any No response body\n * @throws ApiError\n */\n static coreDepartmentsCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/departments/'\n });\n }\n /**\n * Delete department\n * @returns void\n * @throws ApiError\n */\n static coreDepartmentsDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/departments/'\n });\n }\n /**\n * Show active users in department (paginated)\n * @returns any No response body\n * @throws ApiError\n */\n static coreDepartmentsMembersRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/departments/members/'\n });\n }\n /**\n * Add single user to department, or update status\n * @returns any No response body\n * @throws ApiError\n */\n static coreDepartmentsMembersCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/departments/members/'\n });\n }\n /**\n * Delete department member\n * @returns void\n * @throws ApiError\n */\n static coreDepartmentsMembersDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/departments/members/'\n });\n }\n /**\n * Add users to department, or update status\n * @returns any No response body\n * @throws ApiError\n */\n static coreDepartmentsMembersBulkCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/departments/members/bulk/'\n });\n }\n /**\n * Get department member admin info of requesting user\n * @returns any No response body\n * @throws ApiError\n */\n static coreDepartmentsMembersCheckRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/departments/members/check/'\n });\n }\n /**\n * Check if a domain is whitelisted\n * @param url\n * @param isActive\n * @returns any No response body\n * @throws ApiError\n */\n static coreDomainsWhitelistRetrieve(url, isActive) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/domains/whitelist/',\n query: {\n 'is_active': isActive,\n 'url': url\n }\n });\n }\n /**\n * Add a new domain to whitelist\n * @param requestBody\n * @returns WhitelistedDomain\n * @throws ApiError\n */\n static coreDomainsWhitelistCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/domains/whitelist/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * **Use Case**\n *\n * Celery heartbeat endpoint.\n *\n * **Example Request**\n *\n * GET /api/core/heartbeat/celery/\n *\n * **Response Values**\n *\n * * 200 on success.\n * * 500 on failure.\n * @returns any No response body\n * @throws ApiError\n */\n static coreHeartbeatCeleryRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/heartbeat/celery/'\n });\n }\n /**\n * **Use Case**\n *\n * Celery Beat heartbeat endpoint.\n *\n * **Example Request**\n *\n * GET /api/core/heartbeat/celery-beat/\n *\n * **Response Values**\n *\n * * 200 on success.\n * * 500 on failure.\n * @returns CeleryHeartbeat\n * @throws ApiError\n */\n static coreHeartbeatCeleryBeatRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/heartbeat/celery-beat/'\n });\n }\n /**\n * GET Launch status\n *\n * Params:\n * key\n * user_id: Optional\n * @param key\n * @param userId\n * @returns PlatformList\n * @throws ApiError\n */\n static coreLauncherRetrieve(key, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/launcher/',\n query: {\n 'key': key,\n 'user_id': userId\n }\n });\n }\n /**\n * POST: Launch a new edX platform\n *\n * Params:\n * user_id: The ID of the requesting user (required)\n * key: The Deep LMS subdomain (required)\n * name: The edX platform name (\"optional\")\n * org: The edX organization (\"optional\")\n * lms_url: LMS URL (\"optional\")\n * cms_url: CMS URL (\"optional\")\n * portal_url: Portal URL (\"optional\")\n * @param requestBody\n * @returns PlatformList\n * @throws ApiError\n */\n static coreLauncherCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/launcher/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * List your LTI Provider Key's\n * @param platformKey Platform Key\n * @returns LtiKey\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiKeysList(platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/lti/1p3/provider/lti-keys/',\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Create a new LTI Provider Key\n * @param requestBody\n * @returns LtiKey\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiKeysCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/lti/1p3/provider/lti-keys/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get details about a specific LTI Provider Key\n * @param id\n * @param platformKey Platform Key\n * @returns LtiKey\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiKeysRetrieve(id, platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/lti/1p3/provider/lti-keys/{id}/',\n path: {\n 'id': id\n },\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Update an LTI Provider Key\n * @param id\n * @param requestBody\n * @returns LtiKey\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiKeysUpdate(id, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/core/lti/1p3/provider/lti-keys/{id}/',\n path: {\n 'id': id\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete an LTI Provider Key\n *\n * **DANGER:** Deleting a key will also delete all Tools that reference that Key. If you need to delete a Key you should first create a new one and update all Tools to reference the new Key before deleting the old one.\n * @param id\n * @param platformKey Platform Key\n * @returns void\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiKeysDestroy(id, platformKey) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/lti/1p3/provider/lti-keys/{id}/',\n path: {\n 'id': id\n },\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * List your LTI Tool's\n * @param platformKey Platform Key\n * @returns LtiTool\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiToolsList(platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/lti/1p3/provider/lti-tools/',\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Create a new LTI Tool\n * @param requestBody\n * @returns LtiTool\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiToolsCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/lti/1p3/provider/lti-tools/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get details about a specific LTI Tool\n * @param id\n * @param platformKey Platform Key\n * @returns LtiTool\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiToolsRetrieve(id, platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/lti/1p3/provider/lti-tools/{id}/',\n path: {\n 'id': id\n },\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Update an LTI Tool\n * @param id\n * @param requestBody\n * @returns LtiTool\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiToolsUpdate(id, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/core/lti/1p3/provider/lti-tools/{id}/',\n path: {\n 'id': id\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete an LTI Tool\n * @param id\n * @param platformKey Platform Key\n * @returns void\n * @throws ApiError\n */\n static coreLti1P3ProviderLtiToolsDestroy(id, platformKey) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/lti/1p3/provider/lti-tools/{id}/',\n path: {\n 'id': id\n },\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Get platform logo\n * @param org\n * @returns any\n * @throws ApiError\n */\n static coreOrgsDarkModeLogoRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/orgs/{org}/dark-mode-logo/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Upload a new platform logo\n * @param org\n * @param requestBody\n * @returns ImageUpload\n * @throws ApiError\n */\n static coreOrgsDarkModeLogoCreateCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/orgs/{org}/dark-mode-logo/create/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get platform logo\n * @param org\n * @returns any\n * @throws ApiError\n */\n static coreOrgsFaviconRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/orgs/{org}/favicon/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Upload a new platform logo\n * @param org\n * @param requestBody\n * @returns ImageUpload\n * @throws ApiError\n */\n static coreOrgsFaviconCreateCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/orgs/{org}/favicon/create/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get platform logo\n * @param org\n * @returns any\n * @throws ApiError\n */\n static coreOrgsLogoRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/orgs/{org}/logo/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Upload a new platform logo\n * @param org\n * @param requestBody\n * @returns ImageUpload\n * @throws ApiError\n */\n static coreOrgsLogoCreateCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/orgs/{org}/logo/create/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @returns PlatformPublicMetadata\n * @throws ApiError\n */\n static coreOrgsMetadataRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/orgs/{org}/metadata/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * @param org\n * @param requestBody\n * @returns PlatformPublicMetadata\n * @throws ApiError\n */\n static coreOrgsMetadataUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/core/orgs/{org}/metadata/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param org\n * @param requestBody\n * @returns PlatformPublicMetadata\n * @throws ApiError\n */\n static coreOrgsMetadataPartialUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/core/orgs/{org}/metadata/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Creates redirect tokens for a URL specified by for a platform\n * @param org\n * @param requestBody\n * @returns RedirectTokenResponse\n * @throws ApiError\n */\n static coreOrgsRedirectTokensCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/orgs/{org}/redirect-tokens/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Returns Redirect URL for the token specified.\n *\n * ```\n * Requires user to be a member of the platform with the token passed\n * ```\n * @param org\n * @param redirectToken\n * @returns RedirectTokenResponse\n * @throws ApiError\n */\n static coreOrgsRedirectTokensRetrieve(org, redirectToken) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/orgs/{org}/redirect-tokens/{redirect_token}/',\n path: {\n 'org': org,\n 'redirect_token': redirectToken\n }\n });\n }\n /**\n * Delete specific token\n * @param org\n * @param redirectToken\n * @returns void\n * @throws ApiError\n */\n static coreOrgsRedirectTokensDeleteDestroy(org, redirectToken) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/orgs/{org}/redirect-tokens/{redirect_token}/delete',\n path: {\n 'org': org,\n 'redirect_token': redirectToken\n }\n });\n }\n /**\n * Get platform logo\n * @param org\n * @returns any\n * @throws ApiError\n */\n static coreOrgsThumbnailRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/orgs/{org}/thumbnail/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Upload a new platform logo\n * @param org\n * @param requestBody\n * @returns ImageUpload\n * @throws ApiError\n */\n static coreOrgsThumbnailCreateCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/orgs/{org}/thumbnail/create/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * GET /api/core/platform/\n * Get main platform info.\n *\n * POST /api/core/platform/\n * Save main platform settings.\n *\n * Params:\n * user_id (optional)\n * key\n * field_key (POST)\n * value (POST)\n * @param key\n * @param userId\n * @returns PlatformList\n * @throws ApiError\n */\n static corePlatformRetrieve(key, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/platform/',\n query: {\n 'key': key,\n 'user_id': userId\n }\n });\n }\n /**\n * Update platform object\n *\n * Params:\n * user_id\n *\n * key\n * new_key (If changing platform key)\n * name\n *\n * Advanced Params (Don't expose these to users)\n * lms_url\n * cms_url\n * portal_url\n * @param requestBody\n * @returns PlatformList\n * @throws ApiError\n */\n static corePlatformCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/platform/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * List Platform API Key's belonging to the target platform\n * @param platformKey Platform key of target platform\n * @returns PlatformApiKey\n * @throws ApiError\n */\n static corePlatformApiTokensList(platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/platform/api-tokens/',\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Create a new Platform Api Key for the target platform\n * @param requestBody\n * @returns PlatformApiKey\n * @throws ApiError\n */\n static corePlatformApiTokensCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/platform/api-tokens/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete Platform Api Key by name in the target platform\n * @param name\n * @param platformKey Platform key of target platform\n * @returns void\n * @throws ApiError\n */\n static corePlatformApiTokensDestroy(name, platformKey) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/platform/api-tokens/{name}',\n path: {\n 'name': name\n },\n query: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * GET /site\n * Get site settings.\n *\n * POST /site\n * Save site settings.\n *\n * Params:\n * user_id\n * key\n * field_key (POST)\n * value (POST)\n * @param key\n * @param userId\n * @returns any\n * @throws ApiError\n */\n static corePlatformConfigSiteRetrieve(key, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/platform/config/site/',\n query: {\n 'key': key,\n 'user_id': userId\n }\n });\n }\n /**\n * GET /site\n * Get site settings.\n *\n * POST /site\n * Save site settings.\n *\n * Params:\n * user_id\n * key\n * field_key (POST)\n * value (POST)\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n static corePlatformConfigSiteCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/platform/config/site/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve users associated with platform\n *\n * Params:\n * platform_key\n * platform_org\n *\n * query\n * sort\n *\n * is_admin: Return tenant admin users\n * @param page\n * @param pageSize\n * @param platformKey\n * @param platformOrg\n * @param query\n * @param sort\n * @returns UserPlatformManagementListViewGetResponse\n * @throws ApiError\n */\n static corePlatformUsersRetrieve(page, pageSize, platformKey, platformOrg, query, sort) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/platform/users/',\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'platform_key': platformKey,\n 'platform_org': platformOrg,\n 'query': query,\n 'sort': sort\n }\n });\n }\n /**\n * Invalidate all tokens for the authenticated user\n * @returns any No response body\n * @throws ApiError\n */\n static coreSessionLogoutCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/session/logout/'\n });\n }\n /**\n * POST signals/edx/\n * @param requestBody\n * @returns any No response body\n * @throws ApiError\n */\n static coreSignalsEdxCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/signals/edx/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Param:\n * Any of user_id/username/email\n * @returns any No response body\n * @throws ApiError\n */\n static coreTokenProxyCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/token/proxy/'\n });\n }\n /**\n * Check token user\n * @returns any No response body\n * @throws ApiError\n */\n static coreTokenVerifyRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/token/verify/'\n });\n }\n /**\n * Show (active) user groups associated with a platform\n * @returns any No response body\n * @throws ApiError\n */\n static coreUserGroupsRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/user_groups/'\n });\n }\n /**\n * Create/update a user group\n * @returns any No response body\n * @throws ApiError\n */\n static coreUserGroupsCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/user_groups/'\n });\n }\n /**\n * Delete user group\n * @returns void\n * @throws ApiError\n */\n static coreUserGroupsDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/user_groups/'\n });\n }\n /**\n * Show active users in user group (paginated)\n *\n * group_id is numeric ID of group\n * @returns any No response body\n * @throws ApiError\n */\n static coreUserGroupsLinkRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/user_groups/link/'\n });\n }\n /**\n * Add single user to user group, or update status\n * @returns any No response body\n * @throws ApiError\n */\n static coreUserGroupsLinkCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/user_groups/link/'\n });\n }\n /**\n * Delete user group link\n * @returns void\n * @throws ApiError\n */\n static coreUserGroupsLinkDestroy() {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/core/user_groups/link/'\n });\n }\n /**\n * Add users to user group, or update status\n * @returns any No response body\n * @throws ApiError\n */\n static coreUserGroupsLinkBulkCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/user_groups/link/bulk/'\n });\n }\n /**\n * Initiates the account deletion process for the authenticated user or specified username.\n * @param requestBody\n * @returns UserDeleteAPIResponse\n * @throws ApiError\n */\n static coreUsersDeleteCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/users/delete/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get detailed user information.\n *\n * Make permission check for platform admins here,\n * then proxy request to edx.\n * @param email\n * @param userId\n * @param username\n * @returns any No response body\n * @throws ApiError\n */\n static coreUsersMetadataProxyRetrieve(email, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/users/metadata/proxy/',\n query: {\n 'email': email,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Retrieve platforms associated with user_id\n *\n * Params:\n * user_id\n * username\n * email\n * @param email\n * @param userId\n * @param username\n * @returns UserPlatformLink\n * @throws ApiError\n */\n static coreUsersPlatformsList(email, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/users/platforms/',\n query: {\n 'email': email,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Explicitly link platform to user_id\n *\n * Params:\n * user_id\n * platform_key\n * added_on (optional)\n * expired_on (optional)\n * is_admin (optional)\n * active (optional)\n * @param requestBody\n * @returns any No response body\n * @throws ApiError\n */\n static coreUsersPlatformsCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/users/platforms/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve proxy user information by user_id\n * @param email\n * @param userId\n * @param username\n * @returns UserProxyGetResponse\n * @throws ApiError\n */\n static coreUsersProxyRetrieve(email, userId, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/users/proxy/',\n query: {\n 'email': email,\n 'user_id': userId,\n 'username': username\n }\n });\n }\n /**\n * Add proxy user\n *\n * Params:\n * user_id\n * username\n * email\n * edx_data\n * data\n * @param requestBody\n * @returns UserProxyPostResponse\n * @throws ApiError\n */\n static coreUsersProxyCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/users/proxy/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Add proxy users by bulk\n *\n * Params:\n * users: list of user objects\n * ```\n * [\n * {\"user_id\": 1, ...},\n * {\"user_id\": 2, ...}\n * ]\n * ```\n * @param requestBody\n * @returns string\n * @throws ApiError\n */\n static coreUsersProxyBulkCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/core/users/proxy/bulk/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Retrieve users based on query\n * Not intended for public use with multitenant platforms\n *\n * Params:\n * query\n * sort\n * @param page\n * @param pageSize\n * @param query\n * @param sort\n * @returns UserSearchViewGetResponse\n * @throws ApiError\n */\n static coreUsersSearchRetrieve(page, pageSize, query, sort) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/core/users/search/',\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'query': query,\n 'sort': sort\n }\n });\n }\n}\n\nclass CredentialsService {\n /**\n * Get all credentials for a platform with search and pagination support.\n *\n * Query Parameters:\n * - platform_org: Platform org ID (takes precedence over URL org)\n * - page: Page number (default: 1)\n * - page_size: Items per page (default: 10, max: 100)\n * - search: Search term to filter credentials\n * - course: Course ID to filter credentials\n * - program: Program ID to filter credentials\n * @param org\n * @param userId\n * @returns Credential\n * @throws ApiError\n */\n static credentialsOrgsUsersRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API View for managing credentials across a platform.\n *\n * This endpoint allows creating and retrieving credentials for a specific organization/tenant,\n * with support for filtering, searching, and pagination.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n *\n * Query Parameters:\n * # Platform identification\n * platform_org (str, optional): Alternative platform identifier (takes precedence over URL org)\n *\n * # Pagination\n * page (int, optional): Page number (default: 1)\n * page_size (int, optional): Items per page (default: 10, max: 100)\n *\n * # Filtering and search\n * search (str, optional): Search term to filter credentials by name or description\n * course (str, optional): Course ID to filter credentials associated with a specific course\n * program (str, optional): Program ID to filter credentials associated with a specific program\n *\n * Methods:\n * GET: Retrieve credentials with filtering and pagination\n * POST: Create a new credential\n *\n * POST Request Body:\n * A JSON object containing credential details:\n * - name (str): Credential name\n * - description (str, optional): Credential description\n * - issuer (str): Issuer entity ID\n * - credential_type (str, optional): Type of credential\n * - html_template (str, optional): HTML template for credential rendering\n * - css_template (str, optional): CSS template for credential styling\n * - icon_image (str, optional): URL to credential icon\n * - background_image (str, optional): URL to credential background\n * - thumbnail_image (str, optional): URL to credential thumbnail\n * - criteria_url (str, optional): URL to credential criteria\n * - criteria_text (str, optional): Text description of credential criteria\n * - issuing_signal (str, optional): Signal that triggers credential issuance\n *\n * Returns:\n * GET: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Ok\"},\n * \"result\": {\n * \"next\": \"URL to next page\",\n * \"previous\": \"URL to previous page\",\n * \"count\": 42,\n * \"data\": [\n * {credential object},\n * {credential object},\n * ...\n * ],\n * \"num_pages\": 5,\n * \"page_number\": 1,\n * \"max_page_size\": 100\n * }\n * }\n *\n * POST: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Created\"},\n * \"result\": {credential object}\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the platform doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires CredentialAssignmentPermission\n * - Only public credentials are returned by default\n * @param org\n * @param userId\n * @param requestBody\n * @returns Credential\n * @throws ApiError\n */\n static credentialsOrgsUsersCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API View for managing individual credentials.\n *\n * This endpoint allows retrieving, updating, and deleting specific credentials\n * identified by their entity_id.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The credential entity ID\n *\n * Methods:\n * GET: Retrieve a specific credential\n * PUT: Update a specific credential\n * DELETE: Delete a specific credential\n *\n * PUT Request Body:\n * A JSON object containing credential details to update:\n * - name (str, optional): Credential name\n * - description (str, optional): Credential description\n * - credential_type (str, optional): Type of credential\n * - html_template (str, optional): HTML template for credential rendering\n * - css_template (str, optional): CSS template for credential styling\n * - icon_image (str, optional): URL to credential icon\n * - background_image (str, optional): URL to credential background\n * - thumbnail_image (str, optional): URL to credential thumbnail\n * - criteria_url (str, optional): URL to credential criteria\n * - criteria_text (str, optional): Text description of credential criteria\n * - issuing_signal (str, optional): Signal that triggers credential issuance\n *\n * Returns:\n * GET: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Ok\"},\n * \"result\": {credential object}\n * }\n *\n * PUT: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Updated\"},\n * \"result\": {credential object}\n * }\n *\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires CredentialAssignmentPermission\n * - Users can only manage credentials they have permission to access\n * @param entityId\n * @param org\n * @param userId\n * @returns Credential\n * @throws ApiError\n */\n static credentialsOrgsUsersRetrieve2(entityId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API View for managing individual credentials.\n *\n * This endpoint allows retrieving, updating, and deleting specific credentials\n * identified by their entity_id.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The credential entity ID\n *\n * Methods:\n * GET: Retrieve a specific credential\n * PUT: Update a specific credential\n * DELETE: Delete a specific credential\n *\n * PUT Request Body:\n * A JSON object containing credential details to update:\n * - name (str, optional): Credential name\n * - description (str, optional): Credential description\n * - credential_type (str, optional): Type of credential\n * - html_template (str, optional): HTML template for credential rendering\n * - css_template (str, optional): CSS template for credential styling\n * - icon_image (str, optional): URL to credential icon\n * - background_image (str, optional): URL to credential background\n * - thumbnail_image (str, optional): URL to credential thumbnail\n * - criteria_url (str, optional): URL to credential criteria\n * - criteria_text (str, optional): Text description of credential criteria\n * - issuing_signal (str, optional): Signal that triggers credential issuance\n *\n * Returns:\n * GET: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Ok\"},\n * \"result\": {credential object}\n * }\n *\n * PUT: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Updated\"},\n * \"result\": {credential object}\n * }\n *\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires CredentialAssignmentPermission\n * - Users can only manage credentials they have permission to access\n * @param entityId\n * @param org\n * @param userId\n * @param requestBody\n * @returns Credential\n * @throws ApiError\n */\n static credentialsOrgsUsersUpdate(entityId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/credentials/orgs/{org}/users/{user_id}/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API View for managing individual credentials.\n *\n * This endpoint allows retrieving, updating, and deleting specific credentials\n * identified by their entity_id.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The credential entity ID\n *\n * Methods:\n * GET: Retrieve a specific credential\n * PUT: Update a specific credential\n * DELETE: Delete a specific credential\n *\n * PUT Request Body:\n * A JSON object containing credential details to update:\n * - name (str, optional): Credential name\n * - description (str, optional): Credential description\n * - credential_type (str, optional): Type of credential\n * - html_template (str, optional): HTML template for credential rendering\n * - css_template (str, optional): CSS template for credential styling\n * - icon_image (str, optional): URL to credential icon\n * - background_image (str, optional): URL to credential background\n * - thumbnail_image (str, optional): URL to credential thumbnail\n * - criteria_url (str, optional): URL to credential criteria\n * - criteria_text (str, optional): Text description of credential criteria\n * - issuing_signal (str, optional): Signal that triggers credential issuance\n *\n * Returns:\n * GET: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Ok\"},\n * \"result\": {credential object}\n * }\n *\n * PUT: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Updated\"},\n * \"result\": {credential object}\n * }\n *\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires CredentialAssignmentPermission\n * - Users can only manage credentials they have permission to access\n * @param entityId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static credentialsOrgsUsersDestroy(entityId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/credentials/orgs/{org}/users/{user_id}/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to issue and retrieve credential assertions for a specific credential.\n *\n * This endpoint allows issuing new credential assertions and retrieving existing\n * assertions for a specific credential.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The credential entity ID\n *\n * Methods:\n * POST: Issue a new credential assertion\n * GET: Retrieve assertions for a specific credential\n *\n * POST Request Body:\n * A JSON object containing recipient information and any additional metadata\n * required for issuing the credential.\n *\n * Returns:\n * POST: A JSON response containing the created assertion using the AssertionSerializer format\n * GET: A paginated list of assertions using the AssertionSerializer format\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param entityId\n * @param org\n * @param userId\n * @returns Assertion\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsRetrieve3(entityId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/{entity_id}/assertions/',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to issue and retrieve credential assertions for a specific credential.\n *\n * This endpoint allows issuing new credential assertions and retrieving existing\n * assertions for a specific credential.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The credential entity ID\n *\n * Methods:\n * POST: Issue a new credential assertion\n * GET: Retrieve assertions for a specific credential\n *\n * POST Request Body:\n * A JSON object containing recipient information and any additional metadata\n * required for issuing the credential.\n *\n * Returns:\n * POST: A JSON response containing the created assertion using the AssertionSerializer format\n * GET: A paginated list of assertions using the AssertionSerializer format\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param entityId\n * @param org\n * @param userId\n * @param requestBody\n * @returns Assertion\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsCreate(entityId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/{entity_id}/assertions/',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint to issue credential assertions in bulk for a specific credential.\n *\n * This endpoint allows issuing credential assertions to multiple users at once.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The credential entity ID\n *\n * POST Request Body:\n * A JSON object containing:\n * - users (list): List of usernames to issue the credential to\n * - Additional metadata required for issuing the credential\n *\n * Returns:\n * A JSON response containing:\n * {\n * \"skipped\": [\"username1\", \"username3\"], // Users that were skipped (e.g., already have the credential)\n * \"issued\": [\"username2\", \"username4\"] // Users that were successfully issued the credential\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required fields\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param entityId\n * @param org\n * @param userId\n * @param requestBody\n * @returns BulkCreateAssertion\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsBulkCreate(entityId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/{entity_id}/assertions/bulk/',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Endpoint to retrieve all credential assertions for a user within an organization.\n *\n * This endpoint provides access to all credential assertions (issued credentials)\n * for a specific user within an organization, with support for filtering.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID to retrieve assertions for\n *\n * Query Parameters:\n * course (str, optional): Filter by course ID\n * include_revoked (bool, optional): Include revoked assertions (default: false)\n * include_expired (bool, optional): Include expired assertions (default: false)\n * exclude_main_tenant_assertions (bool, optional): Exclude assertions from the main tenant (default: false)\n *\n * Returns:\n * A paginated response using the AssertionSerializer format\n *\n * Error Responses:\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the user or organization doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param org\n * @param userId\n * @param course\n * @param excludeMainTenantAssertions\n * @param includeExpired\n * @param includeRevoked\n * @returns Assertion\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsRetrieve(org, userId, course, excludeMainTenantAssertions, includeExpired, includeRevoked) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assertions/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course': course,\n 'exclude_main_tenant_assertions': excludeMainTenantAssertions,\n 'include_expired': includeExpired,\n 'include_revoked': includeRevoked\n }\n });\n }\n /**\n * Get all credentials of a given tenant\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assertions-over-time/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Endpoint to retrieve and update a specific credential assertion.\n *\n * This endpoint allows retrieving details of a specific credential assertion\n * and updating its status (e.g., revoking it).\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The assertion entity ID\n *\n * Methods:\n * GET: Retrieve assertion details\n * PUT: Update assertion status (e.g., revoke)\n *\n * PUT Request Body:\n * A JSON object containing:\n * - revoked (bool): Set to true to revoke the assertion\n * - revocationReason (str): Reason for revocation (required when revoking)\n *\n * Returns:\n * GET: A JSON response containing the assertion details using the AssertionSerializer format\n * PUT: A JSON response containing the updated assertion using the AssertionSerializer format\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the assertion doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param entityId\n * @param org\n * @param userId\n * @returns Assertion\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsRetrieve2(entityId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assertions/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Endpoint to retrieve and update a specific credential assertion.\n *\n * This endpoint allows retrieving details of a specific credential assertion\n * and updating its status (e.g., revoking it).\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The assertion entity ID\n *\n * Methods:\n * GET: Retrieve assertion details\n * PUT: Update assertion status (e.g., revoke)\n *\n * PUT Request Body:\n * A JSON object containing:\n * - revoked (bool): Set to true to revoke the assertion\n * - revocationReason (str): Reason for revocation (required when revoking)\n *\n * Returns:\n * GET: A JSON response containing the assertion details using the AssertionSerializer format\n * PUT: A JSON response containing the updated assertion using the AssertionSerializer format\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the assertion doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param entityId\n * @param org\n * @param userId\n * @param requestBody\n * @returns Assertion\n * @throws ApiError\n */\n static credentialsOrgsUsersAssertionsUpdate(entityId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assertions/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Delete a credential assignment using its entity_id.\n * Only platform admins and department admins can delete assignments.\n * @param assignmentId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static credentialsOrgsUsersAssignmentsDestroy(assignmentId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assignments/{assignment_id}',\n path: {\n 'assignment_id': assignmentId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Get group assignments with department-aware filtering\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static credentialsOrgsUsersAssignmentsGroupsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assignments/groups/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create group assignment with department access validation\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static credentialsOrgsUsersAssignmentsGroupsCreate(org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assignments/groups/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Get assignments and their corresponding assertions based on user role:\n * - Regular users: get only their own assignments\n * - Platform admins: get assignments for all users in their platform\n * - Department admins: get assignments for users in their department groups\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static credentialsOrgsUsersAssignmentsUsersRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assignments/users/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Create assignments with department access validation\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static credentialsOrgsUsersAssignmentsUsersCreate(org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/assignments/users/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Get all credentials of a given tenant\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTime\n * @throws ApiError\n */\n static credentialsOrgsUsersCourseAssertionsOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/course-assertions-over-time/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Endpoint to retrieve the credentials of a given tenant grouped by course.\n *\n * This endpoint provides access to credential data grouped by course for a specific\n * organization/tenant, with support for pagination and filtering.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n *\n * Query Parameters:\n * limit (int, optional): Number of results per page (default: 10)\n * offset (int, optional): Starting position for pagination\n * search (str, optional): Search term e.g course_id\n *\n * Returns:\n * A paginated response using the CourseCredentialSerializer format.\n *\n * Error Responses:\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this data\n * 404 Not Found: If the organization doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n * @param org\n * @param userId\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns any No response body\n * @throws ApiError\n */\n static credentialsOrgsUsersCourseCredentialsList(org, userId, page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/course-credentials/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Get all credentials of a given tenant\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTime\n * @throws ApiError\n */\n static credentialsOrgsUsersCredentialsOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/credentials-over-time/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * API View for managing uploaded images for credentials.\n *\n * This endpoint allows uploading new images and retrieving existing images\n * for use with credentials (icons, backgrounds, thumbnails, etc.).\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n *\n * Query Parameters:\n * query (str, required for GET): Search term to filter images by name\n *\n * Methods:\n * GET: Retrieve images matching a search query\n * POST: Upload a new image\n *\n * POST Request Body:\n * Multipart form data containing:\n * - image (file, required): The image file to upload\n * - name (str, optional): A descriptive name for the image\n *\n * Returns:\n * GET: A JSON array of image objects:\n * [\n * {\n * \"id\": 123,\n * \"name\": \"Logo\",\n * \"image\": \"https://example.com/media/uploaded_images/logo.png\"\n * },\n * {\n * \"id\": 124,\n * \"name\": \"Background\",\n * \"image\": \"https://example.com/media/uploaded_images/background.jpg\"\n * },\n * ...\n * ]\n *\n * POST: A JSON object containing the uploaded image details:\n * {\n * \"id\": 125,\n * \"name\": \"Certificate Icon\",\n * \"image\": \"https://example.com/media/uploaded_images/certificate-icon.png\"\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required parameters\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can upload and retrieve images\n * @param org\n * @param userId\n * @returns UploadedImage\n * @throws ApiError\n */\n static credentialsOrgsUsersImagesRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/images/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API View for managing uploaded images for credentials.\n *\n * This endpoint allows uploading new images and retrieving existing images\n * for use with credentials (icons, backgrounds, thumbnails, etc.).\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n *\n * Query Parameters:\n * query (str, required for GET): Search term to filter images by name\n *\n * Methods:\n * GET: Retrieve images matching a search query\n * POST: Upload a new image\n *\n * POST Request Body:\n * Multipart form data containing:\n * - image (file, required): The image file to upload\n * - name (str, optional): A descriptive name for the image\n *\n * Returns:\n * GET: A JSON array of image objects:\n * [\n * {\n * \"id\": 123,\n * \"name\": \"Logo\",\n * \"image\": \"https://example.com/media/uploaded_images/logo.png\"\n * },\n * {\n * \"id\": 124,\n * \"name\": \"Background\",\n * \"image\": \"https://example.com/media/uploaded_images/background.jpg\"\n * },\n * ...\n * ]\n *\n * POST: A JSON object containing the uploaded image details:\n * {\n * \"id\": 125,\n * \"name\": \"Certificate Icon\",\n * \"image\": \"https://example.com/media/uploaded_images/certificate-icon.png\"\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required parameters\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can upload and retrieve images\n * @param org\n * @param userId\n * @param requestBody\n * @returns UploadedImage\n * @throws ApiError\n */\n static credentialsOrgsUsersImagesCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/images/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API View for managing credential issuers.\n *\n * This endpoint allows creating and retrieving issuers for a specific organization/tenant,\n * with support for filtering and pagination.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n *\n * Query Parameters:\n * q (str, optional): Search term to filter issuers by name\n * limit (int, optional): Number of results per page (default: 50)\n * offset (int, optional): Starting position for pagination\n *\n * Methods:\n * GET: Retrieve issuers with filtering and pagination\n * POST: Create a new issuer\n *\n * POST Request Body:\n * A JSON object containing issuer details:\n * - name (str): Issuer name\n * - iconImage (str, optional): URL to issuer icon\n * - email (str, optional): Contact email for the issuer\n * - url (str, optional): Website URL for the issuer\n * - allowed_template_tags (array, optional): List of allowed template tags\n *\n * Returns:\n * GET: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Ok\"},\n * \"result\": {\n * \"next\": \"URL to next page\",\n * \"previous\": \"URL to previous page\",\n * \"count\": 10,\n * \"data\": [\n * {issuer object},\n * {issuer object},\n * ...\n * ],\n * \"num_pages\": 1,\n * \"page_number\": 1,\n * \"max_page_size\": 1000\n * }\n * }\n *\n * POST: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Created\"},\n * \"result\": {issuer object}\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the platform doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can manage issuers\n * @param org\n * @param q\n * @param userId\n * @returns Issuer\n * @throws ApiError\n */\n static credentialsOrgsUsersIssuersRetrieve(org, q, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/issuers/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'q': q\n }\n });\n }\n /**\n * API View for managing credential issuers.\n *\n * This endpoint allows creating and retrieving issuers for a specific organization/tenant,\n * with support for filtering and pagination.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n *\n * Query Parameters:\n * q (str, optional): Search term to filter issuers by name\n * limit (int, optional): Number of results per page (default: 50)\n * offset (int, optional): Starting position for pagination\n *\n * Methods:\n * GET: Retrieve issuers with filtering and pagination\n * POST: Create a new issuer\n *\n * POST Request Body:\n * A JSON object containing issuer details:\n * - name (str): Issuer name\n * - iconImage (str, optional): URL to issuer icon\n * - email (str, optional): Contact email for the issuer\n * - url (str, optional): Website URL for the issuer\n * - allowed_template_tags (array, optional): List of allowed template tags\n *\n * Returns:\n * GET: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Ok\"},\n * \"result\": {\n * \"next\": \"URL to next page\",\n * \"previous\": \"URL to previous page\",\n * \"count\": 10,\n * \"data\": [\n * {issuer object},\n * {issuer object},\n * ...\n * ],\n * \"num_pages\": 1,\n * \"page_number\": 1,\n * \"max_page_size\": 1000\n * }\n * }\n *\n * POST: A JSON response containing:\n * {\n * \"status\": {\"success\": true, \"description\": \"Created\"},\n * \"result\": {issuer object}\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the platform doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can manage issuers\n * @param org\n * @param q\n * @param userId\n * @param requestBody\n * @returns Issuer\n * @throws ApiError\n */\n static credentialsOrgsUsersIssuersCreate(org, q, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/issuers/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'q': q\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API View for managing individual issuers.\n *\n * This endpoint allows retrieving, updating, and deleting specific issuers\n * identified by their entity_id or org identifier.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The issuer entity ID or org identifier\n *\n * Methods:\n * GET: Retrieve a specific issuer\n * PUT: Update a specific issuer\n * DELETE: Delete a specific issuer\n *\n * PUT Request Body:\n * A JSON object containing issuer details to update:\n * - name (str, optional): Issuer name\n * - iconImage (str, optional): URL to issuer icon\n * - email (str, optional): Contact email for the issuer\n * - url (str, optional): Website URL for the issuer\n * - allowed_template_tags (array, optional): List of allowed template tags\n *\n * Returns:\n * GET: A JSON response containing the issuer details:\n * [\n * {\n * \"name\": \"Example University\",\n * \"org\": \"example-university\",\n * \"entityId\": \"abc123\",\n * \"signatories\": [...],\n * \"url\": \"https://example.com\",\n * \"iconImage\": \"https://example.com/logo.png\",\n * \"allowed_template_tags\": [...]\n * }\n * ]\n *\n * PUT: A JSON response containing the updated issuer details:\n * [\n * {\n * \"name\": \"Example University\",\n * \"org\": \"example-university\",\n * \"entityId\": \"abc123\",\n * \"signatories\": [...],\n * \"url\": \"https://example.com\",\n * \"iconImage\": \"https://example.com/new-logo.png\",\n * \"allowed_template_tags\": [...]\n * }\n * ]\n *\n * DELETE: A JSON response indicating success:\n * {\n * \"status\": {\"success\": true, \"description\": \"Deleted\"}\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the issuer doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can manage issuers\n * @param entityId\n * @param org\n * @param userId\n * @returns Issuer\n * @throws ApiError\n */\n static credentialsOrgsUsersIssuersRetrieve2(entityId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/orgs/{org}/users/{user_id}/issuers/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API View for managing individual issuers.\n *\n * This endpoint allows retrieving, updating, and deleting specific issuers\n * identified by their entity_id or org identifier.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The issuer entity ID or org identifier\n *\n * Methods:\n * GET: Retrieve a specific issuer\n * PUT: Update a specific issuer\n * DELETE: Delete a specific issuer\n *\n * PUT Request Body:\n * A JSON object containing issuer details to update:\n * - name (str, optional): Issuer name\n * - iconImage (str, optional): URL to issuer icon\n * - email (str, optional): Contact email for the issuer\n * - url (str, optional): Website URL for the issuer\n * - allowed_template_tags (array, optional): List of allowed template tags\n *\n * Returns:\n * GET: A JSON response containing the issuer details:\n * [\n * {\n * \"name\": \"Example University\",\n * \"org\": \"example-university\",\n * \"entityId\": \"abc123\",\n * \"signatories\": [...],\n * \"url\": \"https://example.com\",\n * \"iconImage\": \"https://example.com/logo.png\",\n * \"allowed_template_tags\": [...]\n * }\n * ]\n *\n * PUT: A JSON response containing the updated issuer details:\n * [\n * {\n * \"name\": \"Example University\",\n * \"org\": \"example-university\",\n * \"entityId\": \"abc123\",\n * \"signatories\": [...],\n * \"url\": \"https://example.com\",\n * \"iconImage\": \"https://example.com/new-logo.png\",\n * \"allowed_template_tags\": [...]\n * }\n * ]\n *\n * DELETE: A JSON response indicating success:\n * {\n * \"status\": {\"success\": true, \"description\": \"Deleted\"}\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the issuer doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can manage issuers\n * @param entityId\n * @param org\n * @param userId\n * @param requestBody\n * @returns Issuer\n * @throws ApiError\n */\n static credentialsOrgsUsersIssuersUpdate(entityId, org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/credentials/orgs/{org}/users/{user_id}/issuers/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API View for managing individual issuers.\n *\n * This endpoint allows retrieving, updating, and deleting specific issuers\n * identified by their entity_id or org identifier.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n * entity_id (str): The issuer entity ID or org identifier\n *\n * Methods:\n * GET: Retrieve a specific issuer\n * PUT: Update a specific issuer\n * DELETE: Delete a specific issuer\n *\n * PUT Request Body:\n * A JSON object containing issuer details to update:\n * - name (str, optional): Issuer name\n * - iconImage (str, optional): URL to issuer icon\n * - email (str, optional): Contact email for the issuer\n * - url (str, optional): Website URL for the issuer\n * - allowed_template_tags (array, optional): List of allowed template tags\n *\n * Returns:\n * GET: A JSON response containing the issuer details:\n * [\n * {\n * \"name\": \"Example University\",\n * \"org\": \"example-university\",\n * \"entityId\": \"abc123\",\n * \"signatories\": [...],\n * \"url\": \"https://example.com\",\n * \"iconImage\": \"https://example.com/logo.png\",\n * \"allowed_template_tags\": [...]\n * }\n * ]\n *\n * PUT: A JSON response containing the updated issuer details:\n * [\n * {\n * \"name\": \"Example University\",\n * \"org\": \"example-university\",\n * \"entityId\": \"abc123\",\n * \"signatories\": [...],\n * \"url\": \"https://example.com\",\n * \"iconImage\": \"https://example.com/new-logo.png\",\n * \"allowed_template_tags\": [...]\n * }\n * ]\n *\n * DELETE: A JSON response indicating success:\n * {\n * \"status\": {\"success\": true, \"description\": \"Deleted\"}\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the issuer doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can manage issuers\n * @param entityId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static credentialsOrgsUsersIssuersDestroy(entityId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/credentials/orgs/{org}/users/{user_id}/issuers/{entity_id}',\n path: {\n 'entity_id': entityId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * API View for managing issuer authorities (signatories).\n *\n * This endpoint allows creating authorities/signatories that can be associated\n * with issuers or specific credentials.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * user_id (str): The user ID making the request\n *\n * Methods:\n * POST: Create a new issuer authority\n *\n * POST Request Body:\n * A JSON object containing authority details:\n * - name (str, required): Name of the signatory\n * - title (str, required): Title of the signatory\n * - signature (str, required): URL to the signature image\n * - org (str, optional): Organization identifier to associate with an issuer\n * - entityId (str, optional): Issuer entity ID to associate with\n * - credential (str, optional): Credential entity ID to associate with\n *\n * Returns:\n * POST: A JSON response containing the created authority:\n * {\n * \"data\": {\n * \"name\": \"John Smith\",\n * \"title\": \"President\",\n * \"signature\": \"https://example.com/signatures/john-smith.png\"\n * }\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required fields\n * 401 Unauthorized: If the user is not authenticated\n * 403 Forbidden: If the user does not have permission to access this resource\n * 404 Not Found: If the issuer or credential doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Requires IsAdminUserOrStudentDRFMixin\n * - Only authenticated users with appropriate permissions can manage authorities\n * @param org\n * @param userId\n * @param requestBody\n * @returns IssuerAuthority\n * @throws ApiError\n */\n static credentialsOrgsUsersIssuersAuthorityCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/credentials/orgs/{org}/users/{user_id}/issuers/authority/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Public endpoint to retrieve a specific credential assertion by its entity ID.\n *\n * This endpoint allows public access to view a specific credential assertion\n * without authentication.\n *\n * Path Parameters:\n * entity_id (str): The assertion entity ID\n *\n * Returns:\n * A JSON response containing the assertion details using the AssertionSerializer format\n *\n * Error Responses:\n * 404 Not Found:\n * - If the assertion doesn't exist: Empty response with 404 status\n * - If the assertion has been revoked: JSON with error detail and revocation reason\n * 500 Internal Server Error: If an unexpected error occurs\n * @param entityId\n * @returns any No response body\n * @throws ApiError\n */\n static credentialsPublicAssertionsRetrieve(entityId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/credentials/public/assertions/{entity_id}/',\n path: {\n 'entity_id': entityId\n }\n });\n }\n}\n\nclass DepartmentsService {\n /**\n * Get a list of departments with metrics and filtering options.\n *\n * This endpoint provides a paginated list of departments with aggregated metrics\n * about learner performance, course completions, and skill acquisition.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n * program (str, optional): Filter by program\n * pathway (str, optional): Filter by pathway\n * departments (list, optional): Filter by department ids\n * department_id (str, optional): Filter by department id\n * location (str, optional): Filter by location\n * is_enrolled (bool, optional): Filter for departments with enrolled users\n * start_date (date, optional): Filter by learner join date (start range)\n * end_date (date, optional): Filter by learner join date (end range)\n *\n * Returns:\n * A paginated list of departments with comprehensive metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param departments Departments search string. Single string or list of strings. e.g 'sample_department' or `['department', 'another department']`\n * @param endDate Filter by learners date_joined. Start date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param isEnrolled Filter for users who have at least an enro;lment\n * @param length Size of data to return\n * @param location Location search string\n * @param page Page offset\n * @param pathway Pathway string\n * @param program Program search string\n * @param startDate Filter by learners date_joined. Start date. ISO 8601\n * @returns GroupList\n * @throws ApiError\n */\n static departmentsOrgsRetrieve(org, departmentId, departments, endDate, format = 'json', includeMainPlatform = true, isEnrolled, length, location, page, pathway, program, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/departments/orgs/{org}/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'departments': departments,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'is_enrolled': isEnrolled,\n 'length': length,\n 'location': location,\n 'page': page,\n 'pathway': pathway,\n 'program': program,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass EngagementService {\n /**\n * Get engagement metrics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with engagement metrics\n * including activity counts, time spent, and interaction data.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their engagement metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns EngagementPerCourse\n * @throws ApiError\n */\n static engagementOrgsActivityRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/activity',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Completion count per user per course across the platform\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static engagementOrgsCourseCompletionOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/course_completion/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List course completion metrics on a per-course basis.\n *\n * This endpoint provides a paginated table of courses with enrollment and\n * completion statistics for each course.\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Enrollment count\n * - Completion count\n * - Average completion rate\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns CourseCompletionPerCourse\n * @throws ApiError\n */\n static engagementOrgsCourseCompletionPerCourseRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/course_completion/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Average time spent in secs on a per-day basis\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * 3. course_id <optional>\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns AverageOvertime\n * @throws ApiError\n */\n static engagementOrgsCoursesTimeAverageRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/time/average',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent per course in secs in a tree like form\n *\n * Kwargs\n * course_id e.g course-v1:Org+Course4+Run\n *\n * Query Params\n * 1. start_date <optional> e.g 2020-10-01\n * 2. end_date <optional> e.g 2020-10-10\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns TimeDetail\n * @throws ApiError\n */\n static engagementOrgsCoursesTimeDetailRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/time/detail',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Time spent per course in secs on a per-day basis\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * Kwargs\n * 3. course_id\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static engagementOrgsCoursesTimeOverTimeRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/time/over-time',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent by users in a course\n *\n * Query Params\n * course_id e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns TimeSpentByUsersInCourse\n * @throws ApiError\n */\n static engagementOrgsCoursesTimeUsersRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/time/users',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent within a course in ordered hierarchical format\n *\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * Query Params\n * 3. start_date <optional> e.g 2020-10-01\n * 4. end_date <optional> e.g 2020-10-10\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerLearnerTimeSpentInCourseTree\n * @throws ApiError\n */\n static engagementOrgsCoursesTimeUsersDetailRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/time/users/{user_id}/detail',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent in secs on a per-day basis\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * 3. start_date e.g 2020-10-01\n * 4. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static engagementOrgsCoursesTimeUsersOverTimeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/time/users/{user_id}/over-time',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get video engagement metrics for a specific course.\n *\n * This endpoint provides detailed video engagement statistics for a single course,\n * including view counts, completion rates, and time spent on videos.\n *\n * Query Parameters:\n * course_id (str): The course ID to get video engagement data for\n *\n * Returns:\n * Detailed video engagement metrics for the specified course.\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns VideosSpecificCourse\n * @throws ApiError\n */\n static engagementOrgsCoursesVideosRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/videos/',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static engagementOrgsCoursesVideosOverTimeRetrieve(courseId, org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/videos/over-time',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get a summary of video watch statistics for a specific course.\n *\n * This endpoint provides a structured summary of video watch data for a course,\n * organized in a tree-like format by course sections and subsections.\n *\n * Query Parameters:\n * course_id (str): The course ID to get video summary for\n *\n * Returns:\n * A hierarchical structure of video watch data for the course, including:\n * - Section and subsection organization\n * - Video identification and metadata\n * - Watch counts and completion rates\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns VideosInCourseSummary\n * @throws ApiError\n */\n static engagementOrgsCoursesVideosSummaryRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/videos/summary',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * List of users' videos completed records for a specific course\n *\n * Kwargs\n * course_id e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns WatchedVideosPerUser\n * @throws ApiError\n */\n static engagementOrgsCoursesVideosUsersRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/courses/{course_id}/videos/users',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Average time spent by a learner in enrolled courses. Gives a rough estimate of whats the average time\n * that would be spent by a learner in a course\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns AverageOvertime\n * @throws ApiError\n */\n static engagementOrgsTimeAveragePerlearnerPercourseRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/time/average-perlearner-percourse',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Average time spent in secs on a per-day basis\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n * 3. course_id <optional>\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns AverageOvertime\n * @throws ApiError\n */\n static engagementOrgsTimeAverageWithOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/time/average-with-over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get time spent on the platform over time.\n *\n * This endpoint provides daily time spent values (in seconds) across the\n * platform over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily time spent values over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static engagementOrgsTimeOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/time/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get time spent statistics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with the total time\n * spent by users in each course.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Total time spent (in seconds)\n * - Formatted time spent (human-readable)\n * - Percentage of total platform time\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns TimeSpentPerCourse\n * @throws ApiError\n */\n static engagementOrgsTimePerCourseRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/time/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get video engagement metrics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with video engagement metrics\n * including view counts, completion rates, and time spent on videos.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with their video engagement metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns VideoEngagementPerCourse\n * @throws ApiError\n */\n static engagementOrgsVideosRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/videos/',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static engagementOrgsVideosOverTimeRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/engagement/orgs/{org}/videos/over-time',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass FeaturesService {\n /**\n * Returns a list of the apps that the user has access to.\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @returns PaginatedUserAppList\n * @throws ApiError\n */\n static featuresAppsList(page, pageSize) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/features/apps/',\n query: {\n 'page': page,\n 'page_size': pageSize\n }\n });\n }\n /**\n * Updates the user onboarding completed status\n * @param requestBody\n * @returns OnboardingStatusUpdate\n * @throws ApiError\n */\n static featuresAppsUpdateCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/features/apps/update/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Activates free trial for the user\n *\n * Set free_trial_started to True| false for the user app\n *\n * App URL or ID is required as well as the platform key\n * @param requestBody\n * @returns ActivateUserFreeTrial\n * @throws ApiError\n */\n static featuresAppsUpdateTrialStatusCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/features/apps/update-trial-status/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * POST\n * Bulk update user feature config\n *\n * NOTE: Will not create user feature configs\n *\n * Params:\n * platform_key\n *\n * config\n * (OR)\n * feature\n * values\n * @returns any No response body\n * @throws ApiError\n */\n static featuresBulkConfigCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/features/bulk-config/'\n });\n }\n /**\n * Query user feature config\n *\n * Params:\n * user_id/username/email\n * platform_key\n * @returns any No response body\n * @throws ApiError\n */\n static featuresConfigRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/features/config/'\n });\n }\n /**\n * POST\n * Update user feature config\n *\n * Params:\n * user_id/username/email\n * platform_key\n *\n * config\n * (OR)\n * feature\n * values\n * @returns any No response body\n * @throws ApiError\n */\n static featuresConfigCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/features/config/'\n });\n }\n}\n\nclass FinanceService {\n /**\n * Returns table listing products and product info for all or specific org\n * @param org\n * @returns Product\n * @throws ApiError\n */\n static financeOrgsProductsRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/finance/orgs/{org}/products',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Return list of WooCommerce orders for product item_id over optional date range\n * @param itemId\n * @param org\n * @param endDate End of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @param startDate Start of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @returns Order\n * @throws ApiError\n */\n static financeOrgsProductsOrdersRetrieve(itemId, org, endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/finance/orgs/{org}/products/{item_id}/orders',\n path: {\n 'item_id': itemId,\n 'org': org\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n }\n });\n }\n /**\n * Returns Net Revenue over time for org and slug\n * @param itemId\n * @param org\n * @param endDate End of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @param startDate Start of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @returns NetRevenueOverTime\n * @throws ApiError\n */\n static financeOrgsProductsSalesOverTimeRetrieve(itemId, org, endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/finance/orgs/{org}/products/{item_id}/sales-over-time',\n path: {\n 'item_id': itemId,\n 'org': org\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n }\n });\n }\n /**\n * Returns Net Revenue over time for org and slug\n * @param org\n * @param endDate End of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @param startDate Start of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @returns NetRevenueOverTime\n * @throws ApiError\n */\n static financeOrgsRevenueNetOverTimeRetrieve(org, endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/finance/orgs/{org}/revenue/net-over-time',\n path: {\n 'org': org\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n }\n });\n }\n /**\n * Returns Revenue by Product + summary for specific org\n * @param org\n * @param endDate End of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @param startDate Start of date range, not-inclusive. ISO8601 Date or DateTime. Dates will have 00:00:00 set as the time.\n * @returns RevenueByProduct\n * @throws ApiError\n */\n static financeOrgsRevenueProductsRetrieve(org, endDate, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/finance/orgs/{org}/revenue/products',\n path: {\n 'org': org\n },\n query: {\n 'end_date': endDate,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass MediaResourcesService {\n /**\n * List and filter media resources. Supports filtering by course_id, unit_id, item_id and searching across multiple fields.\n * @param org Organization identifier\n * @param userId User identifier\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param itemId Filter by item ID\n * @param page A page number within the paginated result set.\n * @param pageSize Number of results to return per page.\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @returns any Successfully retrieved media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesList(org, userId, courseId, itemId, page, pageSize, search, unitId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'page': page,\n 'page_size': pageSize,\n 'search': search,\n 'unit_id': unitId\n }\n });\n }\n /**\n * List and filter media resources. Supports filtering by course_id, unit_id, item_id and searching across multiple fields.\n * @param org Organization identifier\n * @param userId User identifier\n * @param requestBody\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param itemId Filter by item ID\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @returns any Successfully retrieved media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesCreate(org, userId, requestBody, courseId, itemId, search, unitId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'search': search,\n 'unit_id': unitId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * List and filter media resources. Supports filtering by course_id, unit_id, item_id and searching across multiple fields.\n * @param id A unique integer value identifying this Media Resource.\n * @param org Organization identifier\n * @param userId User identifier\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param itemId Filter by item ID\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @returns any Successfully retrieved media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesRetrieve(id, org, userId, courseId, itemId, search, unitId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'search': search,\n 'unit_id': unitId\n }\n });\n }\n /**\n * List and filter media resources. Supports filtering by course_id, unit_id, item_id and searching across multiple fields.\n * @param id A unique integer value identifying this Media Resource.\n * @param org Organization identifier\n * @param userId User identifier\n * @param requestBody\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param itemId Filter by item ID\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @returns any Successfully retrieved media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesUpdate(id, org, userId, requestBody, courseId, itemId, search, unitId) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'search': search,\n 'unit_id': unitId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * List and filter media resources. Supports filtering by course_id, unit_id, item_id and searching across multiple fields.\n * @param id A unique integer value identifying this Media Resource.\n * @param org Organization identifier\n * @param userId User identifier\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param itemId Filter by item ID\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @param requestBody\n * @returns any Successfully retrieved media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesPartialUpdate(id, org, userId, courseId, itemId, search, unitId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'search': search,\n 'unit_id': unitId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * List and filter media resources. Supports filtering by course_id, unit_id, item_id and searching across multiple fields.\n * @param id A unique integer value identifying this Media Resource.\n * @param org Organization identifier\n * @param userId User identifier\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param itemId Filter by item ID\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @returns any Successfully retrieved media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesDestroy(id, org, userId, courseId, itemId, search, unitId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/{id}/',\n path: {\n 'id': id,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'search': search,\n 'unit_id': unitId\n }\n });\n }\n /**\n * Get media resources for a specific item. The item_type determines which resources are returned based on the provided item_id.\n * @param itemId ID of the item\n * @param itemType Type of item. Valid values: course, unit, resource, course_unit, course_resource, unit_resource, all\n * @param org Organization identifier\n * @param userId User identifier\n * @param courseId Filter by course ID (e.g., course-v1:main+NB101+2025-T1)\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter by unit ID (e.g., block-v1:main+NB101+2025-T1+type@vertical+block@12345)\n * @returns any Successfully retrieved media resources for item\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesByItemRetrieve(itemId, itemType, org, userId, courseId, search, unitId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/by_item/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'item_type': itemType,\n 'search': search,\n 'unit_id': unitId\n }\n });\n }\n /**\n * Search media resources by title, description, or IDs. Supports filtering results by course_id, unit_id, and item_id.\n * @param org Organization identifier\n * @param q Search query string\n * @param userId User identifier\n * @param courseId Filter results by course ID\n * @param itemId Filter results by item ID\n * @param search Search across title, description, course_id, unit_id, item_id, and file_url\n * @param unitId Filter results by unit ID\n * @returns any Successfully searched media resources\n * @throws ApiError\n */\n static mediaOrgsUsersMediaMediaResourcesSearchRetrieve(org, q, userId, courseId, itemId, search, unitId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/media/orgs/{org}/users/{user_id}/media/media-resources/search/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'course_id': courseId,\n 'item_id': itemId,\n 'q': q,\n 'search': search,\n 'unit_id': unitId\n }\n });\n }\n}\n\nclass NotificationService {\n /**\n * Unsubscribe from a campaign using a hash\n * @param unsubscribeHash\n * @returns any\n * @throws ApiError\n */\n static notificationV1CampaignsUnsubscribeRetrieve(unsubscribeHash) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/notification/v1/campaigns/unsubscribe/{unsubscribe_hash}/',\n path: {\n 'unsubscribe_hash': unsubscribeHash\n }\n });\n }\n /**\n * Get notifications for a user\n * @param org\n * @param channel\n * @param endDate\n * @param excludeChannel\n * @param startDate\n * @param status\n * @returns Notification\n * @throws ApiError\n */\n static notificationV1OrgsNotificationsRetrieve(org, channel, endDate, excludeChannel, startDate, status) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/notification/v1/orgs/{org}/notifications/',\n path: {\n 'org': org\n },\n query: {\n 'channel': channel,\n 'end_date': endDate,\n 'exclude_channel': excludeChannel,\n 'start_date': startDate,\n 'status': status\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param requestBody\n * @returns Notification\n * @throws ApiError\n */\n static notificationV1OrgsNotificationsUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/notification/v1/orgs/{org}/notifications/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param requestBody\n * @returns Notification\n * @throws ApiError\n */\n static notificationV1OrgsNotificationsBulkUpdatePartialUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/notification/v1/orgs/{org}/notifications/bulk-update/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get notifications for a user\n * @param org\n * @param userId\n * @param channel\n * @param endDate\n * @param excludeChannel\n * @param startDate\n * @param status\n * @returns Notification\n * @throws ApiError\n */\n static notificationV1OrgsUsersNotificationsRetrieve(org, userId, channel, endDate, excludeChannel, startDate, status) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/notification/v1/orgs/{org}/users/{user_id}/notifications/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'channel': channel,\n 'end_date': endDate,\n 'exclude_channel': excludeChannel,\n 'start_date': startDate,\n 'status': status\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param userId\n * @param requestBody\n * @returns Notification\n * @throws ApiError\n */\n static notificationV1OrgsUsersNotificationsUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PUT',\n url: '/api/notification/v1/orgs/{org}/users/{user_id}/notifications/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Get notifications count for a user\n * @param org\n * @param userId\n * @param channel\n * @param status\n * @returns NotificationCount\n * @throws ApiError\n */\n static notificationV1OrgsUsersNotificationsCountRetrieve(org, userId, channel, status) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/notification/v1/orgs/{org}/users/{user_id}/notifications-count/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'channel': channel,\n 'status': status\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param notificationId\n * @param org\n * @param userId\n * @returns void\n * @throws ApiError\n */\n static notificationV1OrgsUsersNotificationsDestroy(notificationId, org, userId) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/notification/v1/orgs/{org}/users/{user_id}/notifications/{notification_id}/',\n path: {\n 'notification_id': notificationId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param userId\n * @param requestBody\n * @returns Notification\n * @throws ApiError\n */\n static notificationV1OrgsUsersNotificationsBulkUpdatePartialUpdate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/notification/v1/orgs/{org}/users/{user_id}/notifications/bulk-update/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Re-enable campaigns for a user\n * @param platformKey\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n static notificationV1OrgsCampaignsEnableCreate(platformKey, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/notification/v1/orgs/{platform_key}/campaigns/enable/',\n path: {\n 'platform_key': platformKey\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Exclude a user from specified campaigns\n * @param platformKey\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n static notificationV1OrgsCampaignsExcludeCreate(platformKey, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/notification/v1/orgs/{platform_key}/campaigns/exclude/',\n path: {\n 'platform_key': platformKey\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mark all notifications as read for a user. Optionally provide specific notification IDs.\n * @param platformKey\n * @param requestBody\n * @returns MarkAllReadResponse\n * @throws ApiError\n */\n static notificationV1OrgsMarkAllAsReadCreate(platformKey, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/notification/v1/orgs/{platform_key}/mark-all-as-read',\n path: {\n 'platform_key': platformKey\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n}\n\nclass NotificationBuilderService {\n /**\n * Get build recipients\n * Get paginated list of recipients for a notification build\n * @param id\n * @param platformKey\n * @param page Page number\n * @param pageSize Number of items per page\n * @param search Search recipients by username or email\n * @returns Recipient\n * @throws ApiError\n */\n static notificationV1OrgsNotificationBuilderRecipientsList(id, platformKey, page, pageSize, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/notification/v1/orgs/{platform_key}/notification-builder/{id}/recipients/',\n path: {\n 'id': id,\n 'platform_key': platformKey\n },\n query: {\n 'page': page,\n 'page_size': pageSize,\n 'search': search\n }\n });\n }\n /**\n * Get notification context data\n * Get all context data needed for notification building including templates, channels, and platforms\n * @param platformKey\n * @returns ContextResponse\n * @throws ApiError\n */\n static notificationV1OrgsNotificationBuilderContextRetrieve(platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/notification/v1/orgs/{platform_key}/notification-builder/context/',\n path: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * Preview notification\n * Preview notification recipients and get build ID for sending\n * @param platformKey\n * @param requestBody\n * @returns PreviewResponse\n * @throws ApiError\n */\n static notificationV1OrgsNotificationBuilderPreviewCreate(platformKey, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/notification/v1/orgs/{platform_key}/notification-builder/preview/',\n path: {\n 'platform_key': platformKey\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Send notification\n * Send notifications to all recipients in a build\n * @param platformKey\n * @param requestBody\n * @returns SendResponse\n * @throws ApiError\n */\n static notificationV1OrgsNotificationBuilderSendCreate(platformKey, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/notification/v1/orgs/{platform_key}/notification-builder/send/',\n path: {\n 'platform_key': platformKey\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Validate notification source\n * Validate a single notification source (email, username, platform, csv)\n * @param platformKey\n * @param requestBody\n * @returns ValidateSourceResponse\n * @throws ApiError\n */\n static notificationV1OrgsNotificationBuilderValidateSourceCreate(platformKey, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/notification/v1/orgs/{platform_key}/notification-builder/validate_source/',\n path: {\n 'platform_key': platformKey\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n}\n\nclass OverviewService {\n /**\n * Get active user counts over time.\n *\n * This endpoint provides daily counts of active users (users with known activity)\n * over a specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily active user counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * An active user is defined as a user with any activity within the past 30 days.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static overviewOrgsActiveUsersRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/overview/orgs/{org}/active-users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static overviewOrgsAverageGradeRetrieve(org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/overview/orgs/{org}/average-grade',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get course completion summary metrics over time.\n *\n * This endpoint provides completion statistics across the platform over a\n * specified time period, including daily completion counts and overall metrics.\n *\n * Query Parameters:\n * start_date (str): Start date for the time range (ISO format)\n * end_date (str): End date for the time range (ISO format)\n *\n * Returns:\n * Completion data including:\n * - Daily completion counts over time\n * - Total unique user count\n * - Total completion count\n * - Completion percentage\n * - Change metrics compared to previous periods\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns CourseCompletionSummaryOvertime\n * @throws ApiError\n */\n static overviewOrgsCoursesCompletionsRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/overview/orgs/{org}/courses/completions',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List all learners on the platform with aggregated metrics.\n *\n * This endpoint returns a paginated list of all learners with key metrics including:\n * - Enrollment counts\n * - Completion counts\n * - Time spent on platform\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter learners by username, email, or name\n *\n * Returns:\n * A paginated list of learners with their associated metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param search Search string for learner\n * @returns PerlearnerUserList\n * @throws ApiError\n */\n static overviewOrgsLearnersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/overview/orgs/{org}/learners',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'search': search\n }\n });\n }\n /**\n * Get time spent statistics on a per-course basis.\n *\n * This endpoint provides a paginated list of courses with the total time\n * spent by users in each course.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Total time spent (in seconds)\n * - Formatted time spent (human-readable)\n * - Percentage of total platform time\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param startDate start date. ISO 8601\n * @returns TimeSpentPerCourse\n * @throws ApiError\n */\n static overviewOrgsMostActiveCoursesRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, length, page, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/overview/orgs/{org}/most-active-courses',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get registered user counts over time.\n *\n * This endpoint provides daily counts of new user registrations over a\n * specified time period.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n *\n * Returns:\n * Daily registration counts over the specified time period, with change metrics\n * compared to previous periods.\n *\n * Default time range is the last 7 days if no dates are specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OvertimeWithChangeInfo\n * @throws ApiError\n */\n static overviewOrgsRegisteredUsersRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/overview/orgs/{org}/registered-users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass PerformanceService {\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static performanceOrgsCoursesGradingAverageRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/courses/{course_id}/grading/average',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Returns average course grade and grade cuttoff\n *\n * e.g\n * ```\n * {\n * \"data\": {\n * \"grade_cutoffs\": {\n * \"A\": 90,\n * \"B\": 80,\n * \"C\": 70,\n * },\n * \"average_grade\": 50.0,\n * }\n * }\n * ```\n *\n * Kwargs\n * course_id\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns AvgCourseGradeWithCutoff\n * @throws ApiError\n */\n static performanceOrgsCoursesGradingAverageWithCutoffRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/courses/{course_id}/grading/average-with-cutoff',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Grading summary for the entire course overview in a tree-like format\n *\n * Kwargs\n * course_id <required>\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns CourseGradingDetail\n * @throws ApiError\n */\n static performanceOrgsCoursesGradingDetailRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/courses/{course_id}/grading/detail',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Grading information per enrolled user in a course\n *\n * Kwargs\n * course_id <required>\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns GradingPerUser\n * @throws ApiError\n */\n static performanceOrgsCoursesGradingPerLearnerRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/courses/{course_id}/grading/per-learner',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Returns average grades across various assignment types in a course\n *\n * Query Params\n * course_id\n *\n * Returns:\n * dict\n * {\n * \"data\": [\n * {\n * \"assignment_type': <str>,\n * \"weight\": <float>,\n * \"average_weighted_grade\": <float>,\n * \"average_section_grade\": <float>\n * }, ...\n * ]\n * }\n * @param courseId\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns CourseGradeSummary\n * @throws ApiError\n */\n static performanceOrgsCoursesGradingSummaryRetrieve(courseId, org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/courses/{course_id}/grading/summary',\n path: {\n 'course_id': courseId,\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static performanceOrgsGradingAverageRetrieve(org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/grading/average',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * List grade-related performance data for all courses.\n *\n * This endpoint provides a comprehensive view of grade performance across\n * courses, including enrollment counts, pass rates, and average grades.\n *\n * Returns:\n * A paginated list of courses with:\n * - Course identification (ID and name)\n * - Enrollment count\n * - Number of students who passed\n * - Average grade\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @returns PerformanceGradesPerCourse\n * @throws ApiError\n */\n static performanceOrgsGradingPerCourseRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/performance/orgs/{org}/grading/per-course',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page\n }\n });\n }\n}\n\nclass PerlearnerService {\n /**\n * Enhanced API endpoint for listing learners with comprehensive filtering.\n *\n * This endpoint provides a paginated list of learners with detailed metrics\n * and supports advanced filtering options. It uses DM token authentication\n * and respects department-based access controls.\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter by username, email, or full name\n * program (str): Filter by program\n * location (str): Filter by location\n * is_enrolled (bool): Filter for users with enrollments\n * platform (str): Filter by platform\n * start_date (date): Filter by join date (start range)\n * end_date (date): Filter by join date (end range)\n *\n * Returns:\n * A paginated list of learners with comprehensive metrics including:\n * - Course enrollments and completions\n * - Time spent on platform\n * - Pathway progress\n * - Certificate and skill information\n * - Location data\n *\n * Access Control:\n * - Platform admins can see all learners\n * - Department admins can only see learners in their departments\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate Learner date_joined end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param isEnrolled Filter for users who have at least an enrollment\n * @param length Size of data to return\n * @param location Location search string\n * @param page Page offset\n * @param platform Platform search string\n * @param program Program search string\n * @param search Search string for learner. email, username or full name\n * @param startDate Learner date_joined start date. ISO 8601\n * @returns NewPerLearnerList\n * @throws ApiError\n */\n static perlearnerOrgsLearnersRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, isEnrolled, length, location, page, platform, program, search, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/learners',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'is_enrolled': isEnrolled,\n 'length': length,\n 'location': location,\n 'page': page,\n 'platform': platform,\n 'program': program,\n 'search': search,\n 'start_date': startDate\n }\n });\n }\n /**\n * List all learners on the platform with aggregated metrics.\n *\n * This endpoint returns a paginated list of all learners with key metrics including:\n * - Enrollment counts\n * - Completion counts\n * - Time spent on platform\n *\n * Query Parameters:\n * page (int): Page number for pagination\n * length (int): Number of items per page\n * search (str): Filter learners by username, email, or name\n *\n * Returns:\n * A paginated list of learners with their associated metrics.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param length Size of data to return\n * @param page Page offset\n * @param search Search string for learner\n * @returns PerlearnerUserList\n * @throws ApiError\n */\n static perlearnerOrgsUsersRetrieve(org, departmentId, format = 'json', includeMainPlatform = true, length, page, search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'length': length,\n 'page': page,\n 'search': search\n }\n });\n }\n /**\n * Provides information on user enrollments\n *\n * Params\n * user_id e.g developer@ibleducation.com| developer\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns ActivityAPI\n * @throws ApiError\n */\n static perlearnerOrgsUsersActivityRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/activity/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Provides about a learner current grade in a course with the course cut\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerGradeWithCutOff\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesGradingCutoffsRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/grading/cutoffs',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns DetailedGradeView\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesGradingDetailRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/grading/detail',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Query Params\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerGradeSummary\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesGradingSummaryRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/grading/summary',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Average of days with atleast an activity within ENGAGEMENT_INDEX_PERIOD consecutive days for a learner in a course\n * @param courseId\n * @param org\n * @param userId\n * @returns Value\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesOverviewEngagementIndexRetrieve(courseId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/engagement-index',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Provides about a learner current grade in a course with the course cut\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerGradeWithCutOff\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesOverviewGradeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/grade',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Evaluates performance index for platform, per course, per user and per user-per course\n *\n * Query Params\n * course_id <optional>\n * learner_id <optional>\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Value\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesOverviewPerformanceIndexRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/performance-index',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent within a course in secs on a per-day basis\n *\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * Query Params\n * 3. start_date e.g 2020-10-01\n * 4. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesOverviewTimeOverTimeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/overview/time/over-time',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * List of videos within a course a learner has watched\n *\n * Kwargs\n * 1. course_id e.g course-v1:Org+Course4+Run\n * 2. user_id e.g developer@ibleducation.com or dev123 (username|email)\n *\n * Default result when no query param is added is [], 0\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerLearnerCourseVideosWatched\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesVideosRetrieve(courseId, org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/videos',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static perlearnerOrgsUsersCoursesVideosOverTimeRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/courses/{course_id}/videos/over-time',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Summary Grading Information for a learner on a per-enrollment basis\n *\n * Query Params\n * 1. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerlearnerGradingPerCourseAPI\n * @throws ApiError\n */\n static perlearnerOrgsUsersGradesPerCourseRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/grades/per-course',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Retrieve detailed information about a specific learner.\n *\n * This endpoint returns personal and activity information about a learner,\n * including profile data, activity metrics, and location information.\n *\n * Path Parameters:\n * user_id (str): The username or email of the learner\n *\n * Query Parameters:\n * meta (bool): Include additional analytics information when true\n *\n * Returns:\n * Detailed learner information including:\n * - Profile data (username, name, email)\n * - Registration and activity dates\n * - Activity metrics (assessments, time spent, videos watched)\n * - Location and browser information (when available)\n *\n * Access Control:\n * - Platform admins can access any learner\n * - Learners can access their own information\n * - Department admins can access learners in their departments\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param meta Include extra analytics information?\n *\n * * `y` - y\n * * `yes` - yes\n * * `true` - true\n * * `True` - True\n * * `n` - n\n * * `no` - no\n * * `false` - false\n * * `False` - False\n * @param search\n * @returns LearnerInformationAPI\n * @throws ApiError\n */\n static perlearnerOrgsUsersInfoRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true, meta = 'n', search) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/info',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'meta': meta,\n 'search': search\n }\n });\n }\n /**\n * Last course accessed by a learner, includes upto unit information as well\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerLearnerLastAccess\n * @throws ApiError\n */\n static perlearnerOrgsUsersLastAccessRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/last-access',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Average of days with atleast an activity within ENGAGEMENT_INDEX_PERIOD consecutive days\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Value\n * @throws ApiError\n */\n static perlearnerOrgsUsersOverviewEngagementIndexRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/overview/engagement-index',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get average grade value for platform, course, or user.\n *\n * This endpoint returns the average grade at different levels:\n * - Platform level: Average grade across all courses\n * - Course level: Average grade for a specific course\n * - Learner level: Average grade for a specific learner\n * - Course-learner level: Grade for a specific learner in a specific course\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * learner_id (str, optional): Filter by username or email\n *\n * Returns:\n * The average grade value based on the specified filters.\n *\n * Access Control:\n * - Platform admins can access any grade data\n * - Learners can access their own grade data\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Average\n * @throws ApiError\n */\n static perlearnerOrgsUsersOverviewGradesAverageRetrieve(org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/overview/grades/average',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Evaluates performance index for platform, per course, per user and per user-per course\n *\n * Query Params\n * course_id <optional>\n * learner_id <optional>\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Value\n * @throws ApiError\n */\n static perlearnerOrgsUsersOverviewPerformanceIndexRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/overview/performance-index',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Time spent in secs on a per-day basis\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * 3. start_date e.g 2020-10-01\n * 4. end_date e.g 2020-10-10\n *\n * Default result when no query param is added is last_7_days (today inclusive)\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static perlearnerOrgsUsersOverviewTimeOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/overview/time/over-time',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get video watch counts over time.\n *\n * This endpoint provides daily counts of videos watched over a specified time period,\n * with options to filter by course or user.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for the time range (ISO format)\n * end_date (str, optional): End date for the time range (ISO format)\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * Daily video watch counts over the specified time period.\n *\n * Default time range is the last 7 days if no dates are specified.\n *\n * Access Control:\n * - Platform admins can access any video watch data\n * - Learners can access their own video watch data\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static perlearnerOrgsUsersVideosOverTimeRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/videos/over-time',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Summary Videos watched data for a learner per enrollment\n *\n * Query Params\n * 1. user_id e.g developer@ibleducation.com or dev123 (username|email)\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns PerlearnerEngagementVideosWatchedPerCourse\n * @throws ApiError\n */\n static perlearnerOrgsUsersVideosPerCourseRetrieve(org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/perlearner/orgs/{org}/users/{user_id}/videos/per-course',\n path: {\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass PlatformService {\n /**\n * Get a list of registered users on the platform.\n *\n * This endpoint provides a list of all registered users with basic profile\n * information including username, name, email, and registration date.\n *\n * Returns:\n * A list of registered users with their profile information.\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Completion information per enrolled user\n *\n * Gives Percentage of units completed in course\n *\n * Query Params\n * course_id <required>\n * user_id <optional>\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Average days used to complete a course\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressAverageDaysToCompleteRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/average-days-to-complete',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Average time used to complete a course in secs\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressAverageTimeToCompleteRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/average-time-to-complete',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Get completion count statistics.\n *\n * This endpoint returns completion counts at different levels:\n * - Platform level: Total users who have completed at least one course\n * - Course level: Total completions for a specific course\n * - Learner level: Total courses completed by a specific learner\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * A count of completions based on the specified filters.\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressCompletedRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/completed',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Average of total completed units\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressCompletionRateRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/completion-rate',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * In Progress means any unit completion in the past 30 days\n *\n * For platform : Total users who have atleast a course in_progress on the platform\n * For course : Total users\n * For learner : Total courses in progress\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressInProgressRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/in-progress',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Started means an enrollment\n *\n * For platform : Total users who have atleast an enrollment\n * For course : Total users enrolled\n * For learner : Total courses in progress\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesProgressStartedRetrieve(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/progress/started',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Base class for API views that return a single count value.\n *\n * This class formats the response as {\"data\": {value_key: count}} where\n * value_key is configurable (defaults to \"count\").\n *\n * Attributes:\n * value_key: The key used in the response for the count value\n * @param courseId\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesUsersGradesPassedRetrieve(courseId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/users/{user_id}/grades/passed',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Gives Percentage of units completed in course for a specific learner\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns PerlearnerCourseProgress\n * @throws ApiError\n */\n static platformOrgsCoursesUsersProgressRetrieve(courseId, org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/users/{user_id}/progress',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Average days used to complete a course\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesUsersProgressDaysToCompleteRetrieve(courseId, org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/users/{user_id}/progress/days-to-complete',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Time spent count in seconds within a course by a learner\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns Count\n * @throws ApiError\n */\n static platformOrgsCoursesUsersTimeCountRetrieve(courseId, org, userId, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/users/{user_id}/time/count',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * (Total videos watched / Total Course Videos) or Total Videos watched in a course by a learner\n * @param courseId\n * @param org\n * @param userId\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns VideosCount\n * @throws ApiError\n */\n static platformOrgsCoursesUsersVideosCountRetrieve(courseId, org, userId, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/users/{user_id}/videos/count',\n path: {\n 'course_id': courseId,\n 'org': org,\n 'user_id': userId\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Count of total videos in a course\n *\n * Query Params\n * course_id e.g course-v1:Org+Course4+Run\n * @param courseId\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesVideosRetrieve2(courseId, org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/{course_id}/videos/',\n path: {\n 'course_id': courseId,\n 'org': org\n }\n });\n }\n /**\n * Get total count of courses on the platform.\n *\n * This endpoint returns the total number of courses available on the platform.\n *\n * Returns:\n * The total count of courses on the platform.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns Count\n * @throws ApiError\n */\n static platformOrgsCoursesCountRetrieve(org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/count',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * List grading information on a per-course basis.\n *\n * This endpoint provides grading statistics for all courses, including\n * average grades and completion rates.\n *\n * Returns:\n * A list of courses with their associated grading metrics.\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsCoursesGradesRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/grades',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Get video watch statistics on a per-course basis.\n *\n * This endpoint provides a list of courses with aggregated video watch metrics,\n * including total views and completion percentages.\n *\n * Returns:\n * A list of courses with:\n * - Course identification (ID and name)\n * - Video watch count\n * - Percentage of total videos watched\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @returns WatchedVideosPerCourse\n * @throws ApiError\n */\n static platformOrgsCoursesVideosRetrieve(org, departmentId, format = 'json', includeMainPlatform = true) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/courses/videos',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'format': format,\n 'include_main_platform': includeMainPlatform\n }\n });\n }\n /**\n * Get completion count statistics.\n *\n * This endpoint returns completion counts at different levels:\n * - Platform level: Total users who have completed at least one course\n * - Course level: Total completions for a specific course\n * - Learner level: Total courses completed by a specific learner\n *\n * Query Parameters:\n * course_id (str, optional): Filter by course ID\n * user_id (str, optional): Filter by username or email\n *\n * Returns:\n * A count of completions based on the specified filters.\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsProgressCompletedRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/progress/completed',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Average of total completed units\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsProgressCompletionRateRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/progress/completion-rate',\n path: {\n 'org': org\n }\n });\n }\n /**\n * In Progress means any unit completion in the past 30 days\n *\n * For platform : Total users who have atleast a course in_progress on the platform\n * For course : Total users\n * For learner : Total courses in progress\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsProgressInProgressRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/progress/in-progress',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Started means an enrollment\n *\n * For platform : Total users who have atleast an enrollment\n * For course : Total users enrolled\n * For learner : Total courses in progress\n *\n * Query Params\n * 1. course_id <optional> e.g course-v1:Org+Course4+Run\n * 2. user_id <optional> e.g developer@ibleducation.com or dev123 (username|email)\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsProgressStartedRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/progress/started',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Total time spent count on the platform within specified range or all time\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n *\n * Default result is all time\n * @param org\n * @returns any No response body\n * @throws ApiError\n */\n static platformOrgsTimeCountRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/time/count',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Get count of active users on the platform.\n *\n * This endpoint returns the number of users who have had activity on the platform,\n * either for all time or within a specified date range.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n *\n * Returns:\n * The count of active users and change metrics compared to previous periods.\n *\n * Default behavior returns the count for all time if no date range is specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static platformOrgsUsersActiveCountRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/users/active/count',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Get count of registered users on the platform.\n *\n * This endpoint returns the number of users registered on the platform,\n * either for all time or within a specified date range.\n *\n * Query Parameters:\n * start_date (str, optional): Start date for filtering (ISO format)\n * end_date (str, optional): End date for filtering (ISO format)\n *\n * Returns:\n * The count of registered users and change metrics compared to previous periods.\n *\n * Default behavior returns the count for all time if no date range is specified.\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static platformOrgsUsersCountRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/users/count',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n /**\n * Count of users who have completed a course on the platform within specified range or all time\n *\n * Query Params\n * 1. start_date e.g 2020-10-01\n * 2. end_date e.g 2020-10-10\n *\n * Default is all time\n * @param org\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate end date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param includeMainPlatform Include main platform data\n * @param startDate start date. ISO 8601\n * @returns OverTimeWithTotal\n * @throws ApiError\n */\n static platformOrgsUsersCoursesCompletedCountRetrieve(org, departmentId, endDate, format = 'json', includeMainPlatform = true, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/platform/orgs/{org}/users/courses-completed/count',\n path: {\n 'org': org\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'include_main_platform': includeMainPlatform,\n 'start_date': startDate\n }\n });\n }\n}\n\nclass ProvidersService {\n /**\n * Associate an Apple account with a user known user\n * @param requestBody\n * @returns AssociateAccountResponse\n * @throws ApiError\n */\n static providersAppleAssociateAccountCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/apple/associate-account/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * View to handle apple webhooks\n * @returns any No response body\n * @throws ApiError\n */\n static providersAppleHookCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/apple/hook/'\n });\n }\n /**\n * Returns information about a user subscription status\n * @param requestBody\n * @returns AppleSubscriptionStatusView\n * @throws ApiError\n */\n static providersAppleSubscriptionStatusCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/apple/subscription-status/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Checks if a provided transaction_id is valid\n * @param requestBody\n * @returns BaseResponse\n * @throws ApiError\n */\n static providersAppleValidateTransactionIdCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/apple/validate-transaction-id/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Serves a view that redirects to the AWS marketplace create organization page\n *\n * Set CREATE_ORGANIZATION_URL in GlobalConfigurationFetcher to the\n * URL of the AWS marketplace create organization page\n * @returns any No response body\n * @throws ApiError\n */\n static providersAwsCreateOrganizationCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/aws/create-organization/'\n });\n }\n /**\n * API endpoint to get domain setup status\n * @returns any No response body\n * @throws ApiError\n */\n static providersAwsDomainStatusRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/providers/aws/domain-status/'\n });\n }\n /**\n * Proxy to the Platform launch API\n *\n * We cannot expose launching a tenant to an authorized user hence the need for the API\n *\n * The API validates the x_amzn_marketplace_token and then proxies the request to the Platform Launch API\n * @param requestBody\n * @returns TenantLaunchResponse\n * @throws ApiError\n */\n static providersAwsLaunchTenantCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/aws/launch-tenant/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * API endpoint to get/update CNAME records for domain setup\n * @returns any No response body\n * @throws ApiError\n */\n static providersAwsSyncDomainRecordsRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/providers/aws/sync-domain-records/'\n });\n }\n /**\n * API endpoint to get/update CNAME records for domain setup\n * @returns any No response body\n * @throws ApiError\n */\n static providersAwsSyncDomainRecordsCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/aws/sync-domain-records/'\n });\n }\n /**\n * Serves a view that redirects to the GCP marketplace create organization page\n *\n * Set CREATE_ORGANIZATION_URL in GlobalConfigurationFetcher to the URL of the GCP marketplace create organization\n * page\n * @returns any No response body\n * @throws ApiError\n */\n static providersGcpCreateOrganizationCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/gcp/create-organization/'\n });\n }\n /**\n * Serves a view that redirects to the GCP marketplace create organization page\n *\n * Set CREATE_ORGANIZATION_URL in GlobalConfigurationFetcher to the URL of the GCP marketplace create organization\n * page\n * @param productId\n * @returns any No response body\n * @throws ApiError\n */\n static providersGcpCreateOrganizationCreate2(productId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/gcp/create-organization/{product_id}/',\n path: {\n 'product_id': productId\n }\n });\n }\n /**\n * @returns any No response body\n * @throws ApiError\n */\n static providersGcpHookCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/gcp/hook/'\n });\n }\n /**\n * Proxy to the Platform launch API\n *\n * We cannot expose launching a tenant to an authorized user hence the need for the API\n *\n * The API validates the x_gcp_marketplace_token and then proxies the request to the Platform Launc API\n * @param requestBody\n * @returns TenantLaunchResponse\n * @throws ApiError\n */\n static providersGcpLaunchTenantCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/gcp/launch-tenant/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * @param requestBody\n * @returns VerifyGCPMarketPlaceResponse\n * @throws ApiError\n */\n static providersGcpValidateSignupTokenCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/gcp/validate-signup-token/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Google Allows us to pass an obfuscated account id to be sent to during a subscription purchase\n * @param bundleId\n * @returns GooglePayAccountResponse\n * @throws ApiError\n */\n static providersGooglePayGetAccountRetrieve(bundleId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/providers/google-pay/get-account/{bundle_id}',\n path: {\n 'bundle_id': bundleId\n }\n });\n }\n /**\n * View to handle Google Pay webhooks\n * @returns any No response body\n * @throws ApiError\n */\n static providersGooglePayHookCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/google-pay/hook/'\n });\n }\n /**\n * Associate a Google Pay account with a known user\n * @param requestBody\n * @returns BaseResponse\n * @throws ApiError\n */\n static providersGooglePayValidateTransactionIdCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/providers/google-pay/validate-transaction-id/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n}\n\nclass ProvisionService {\n /**\n * POST\n * Update platform provisioning config\n *\n * request body:\n * {\"config_name\": \"demo_config}\n * @param configName\n * @returns any No response body\n * @throws ApiError\n */\n static provisionCreate(configName) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/provision/{config_name}/',\n path: {\n 'config_name': configName\n }\n });\n }\n}\n\nclass RecommendationsService {\n /**\n * API endpoint that returns a search api url prepopulated with context data\n * See http://localhost:8000/api/schema/swagger-ui/#/recommendations\n * @param org\n * @param userId\n * @returns RecommendationSearchAPI\n * @throws ApiError\n */\n static recommendationsOrgsUsersRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/recommendations/orgs/{org}/users/{user_id}/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n}\n\nclass ReportsService {\n /**\n * Lists all available reports in the system.\n *\n * This endpoint returns a list of all reports available to the user, including:\n * - Report metadata (name, description, icon)\n * - Available query parameters for each report\n * - Result columns that will be returned\n * - Current status of any previously requested reports\n *\n * If a report has been previously requested by the user, its status will be included\n * in the response. Expired reports are automatically cleaned up.\n *\n * Returns:\n * A list of report objects with their metadata and status information.\n * @param org\n * @returns ReportList\n * @throws ApiError\n */\n static reportsOrgsRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/reports/orgs/{org}/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Retrieves detailed information about a specific report type.\n *\n * This endpoint provides:\n * - Metadata about the report (name, description, icon)\n * - Available query parameters for the report\n * - Result columns that will be returned\n * - Current status of the most recent report of this type requested by the user\n *\n * Path Parameters:\n * report_name (str): The identifier of the report to retrieve details for\n *\n * Returns:\n * Detailed information about the report type and its current status if previously requested.\n *\n * Error Responses:\n * 404 Not Found: If the specified report type doesn't exist\n * @param org\n * @param reportName\n * @returns ReportDetail\n * @throws ApiError\n */\n static reportsOrgsRetrieve2(org, reportName) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/reports/orgs/{org}/{report_name}',\n path: {\n 'org': org,\n 'report_name': reportName\n }\n });\n }\n /**\n * Creates and manages report generation requests.\n *\n * This endpoint allows users to:\n * 1. Request a new report generation\n * 2. Check the status of a previously requested report\n * 3. Force regeneration of an existing report\n *\n * Reports expire after a configured time period (default is typically 24-48 hours).\n *\n * Request Parameters:\n * report_name (str): The identifier of the report to generate\n * owner (str): The username of the report owner (usually the current user)\n * learner_id (str, optional): Filter by specific learner\n * course_id (str, optional): Filter by specific course\n * start_date (str, optional): Start date for report data (ISO format)\n * end_date (str, optional): End date for report data (ISO format)\n * filters (dict, optional): Additional filters specific to the report type\n * force (bool, optional): Force regeneration even if a valid report exists\n *\n * Returns:\n * For new reports:\n * - report_id: The unique identifier for the report task\n * - state: The current state of the report (PENDING, RUNNING, etc.)\n *\n * For completed reports:\n * - report_id: The unique identifier for the report task\n * - report_name: The name of the report\n * - url: Download URL for the report\n * - state: COMPLETED\n * - expires: Expiration timestamp for the report\n *\n * For in-progress reports:\n * - report_id: The unique identifier for the report task\n * - state: Current state (PENDING, RUNNING)\n * - started_on: When the report generation started\n * - owner: Username of the report owner\n *\n * Error Responses:\n * 400 Bad Request: Invalid parameters or report configuration\n * 404 Not Found: Report type not found\n * 403 Forbidden: User doesn't have permission for the requested report\n * @param org\n * @param requestBody\n * @returns ReportCreate\n * @throws ApiError\n */\n static reportsOrgsNewCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/reports/orgs/{org}/new',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Returns a list of reports available in the system.\n *\n * For each report, it includes:\n * - display_name: Human-readable name of the report\n * - description: Description of what the report contains\n * - icon: URL to an icon representing the report\n * - report_name: Unique identifier for the report\n * - extra_query_params: Additional parameters that can be passed when creating the report\n * - result_columns: Columns that will be included in the report results\n * - status: Current status of the report if it has been previously requested\n *\n * The status will include details like the report ID, state, and download URL if completed.\n * @param key\n * @returns ReportList\n * @throws ApiError\n */\n static reportsPlatformsRetrieve(key) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/reports/platforms/{key}/',\n path: {\n 'key': key\n }\n });\n }\n /**\n * Returns details of a specific report type including its status if previously requested.\n * @param key\n * @param reportName\n * @returns ReportDetail\n * @throws ApiError\n */\n static reportsPlatformsRetrieve2(key, reportName) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/reports/platforms/{key}/{report_name}',\n path: {\n 'key': key,\n 'report_name': reportName\n }\n });\n }\n /**\n * Triggers a new report generation.\n *\n * If the report has been previously requested, it returns the status of the report.\n * Reports expire after a configured duration.\n *\n * The request body should include:\n * - report_name: Name of the report to generate\n * - learner_id: (optional) ID of the learner to filter by\n * - course_id: (optional) ID of the course to filter by\n * - force: (optional) Force generation of a new report even if one exists\n * - filters: (optional) Additional filters for the report\n * - departments: (optional) Department IDs to filter by\n * @param key\n * @param requestBody\n * @returns ReportCreate\n * @throws ApiError\n */\n static reportsPlatformsNewCreate(key, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/reports/platforms/{key}/new',\n path: {\n 'key': key\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n}\n\nclass RolesService {\n /**\n * Retrieve a user's desired role information.\n *\n * This endpoint returns the role and skills that a user has indicated\n * they want to develop or acquire. This represents the user's career\n * goals and learning objectives.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * username (str): The username of the user to retrieve role information for\n *\n * Returns:\n * The user's desired role information including:\n * - Target role title\n * - Skills needed for the role\n * - Current progress toward skill acquisition\n *\n * Error Responses:\n * 400 Bad Request: If the user doesn't exist in the platform or has no desired role\n * 404 Not Found: If the specified platform doesn't exist\n * @param org\n * @param username\n * @returns DesiredRole\n * @throws ApiError\n */\n static rolesPlatformOrgsRolesUsersDesiredRolesRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/roles/platform/orgs/{org}/roles/users/{username}/desired-roles/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n /**\n * Retrieve a user's reported role information.\n *\n * This endpoint returns the role and skills that a user has reported\n * having in their profile. This represents the user's current skills\n * and professional role.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * username (str): The username of the user to retrieve role information for\n *\n * Returns:\n * The user's reported role information including:\n * - Role title\n * - Skills associated with the role\n * - Experience level\n *\n * Error Responses:\n * 400 Bad Request: If the user doesn't exist in the platform or has no reported role\n * 404 Not Found: If the specified platform doesn't exist\n * @param org\n * @param username\n * @returns ReportedRole\n * @throws ApiError\n */\n static rolesPlatformOrgsRolesUsersReportedRolesRetrieve(org, username) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/roles/platform/orgs/{org}/roles/users/{username}/reported-roles/',\n path: {\n 'org': org,\n 'username': username\n }\n });\n }\n}\n\nclass SearchService {\n /**\n * Legacy endpoint for backward compatible mentor search\n * @param audience Filter by target audience\n * @param category Filter by mentor category\n * @param createdBy Filter mentors created by specific user\n * @param filterFacet If present, return only facets without results\n * @param id Retrieve a specific mentor by ID\n * @param limit Number of results per page\n * @param llm Filter by language model type\n * @param offset Starting position for pagination\n * @param orderBy Field to sort results by ('created_at', 'recently_accessed_at')\n * @param orderDirection Sort direction ('asc' or 'desc')\n * @param page Page number (1-based, used with page_size)\n * @param pageSize Number of results per page\n * @param query Search term to filter mentors by name or description\n * @param tags Filter by tags\n * @param tenant Filter by tenant/organization\n * @param uniqueId Retrieve a specific mentor by UUID\n * @returns MentorSearchResponse\n * @throws ApiError\n */\n static searchAiSearchRetrieve(audience, category, createdBy, filterFacet = false, id, limit = 12, llm, offset, orderBy, orderDirection = 'desc', page, pageSize, query, tags, tenant, uniqueId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/ai-search/',\n query: {\n 'audience': audience,\n 'category': category,\n 'created_by': createdBy,\n 'filter_facet': filterFacet,\n 'id': id,\n 'limit': limit,\n 'llm': llm,\n 'offset': offset,\n 'order_by': orderBy,\n 'order_direction': orderDirection,\n 'page': page,\n 'page_size': pageSize,\n 'query': query,\n 'tags': tags,\n 'tenant': tenant,\n 'unique_id': uniqueId\n },\n errors: {\n 400: `Bad request`,\n 500: `Server error`\n }\n });\n }\n /**\n * Search and filter content across the learning catalog.\n *\n * This endpoint provides a powerful search interface for discovering content across\n * multiple content types (courses, programs, pathways, skills, roles, resources).\n * It supports full-text search, faceted filtering, and pagination.\n *\n * Query Parameters:\n * query (str, optional): Search term to filter content by name or description\n * content (list, optional): Content types to include in results\n * (courses, programs, pathways, skills, roles, resources)\n * Default: [\"programs\", \"courses\", \"pathways\", \"skills\"]\n *\n * # Filtering parameters\n * course_id (str, optional): Filter by specific course ID\n * program_id (str, optional): Filter by specific program ID\n * pathway_id (str, optional): Filter by specific pathway ID\n * skill_id (str, optional): Filter by specific skill ID\n * subject (list, optional): Filter by subject areas\n * tenant (list, optional): Filter by tenant/organization\n * topics (list, optional): Filter by topic areas\n * tags (list, optional): Filter by tags\n * level (list, optional): Filter by difficulty level\n * self_paced (list, optional): Filter by course format (self-paced, instructor-led)\n * promotion (list, optional): Filter by promotion status\n * language (list, optional): Filter by content language\n * certificate (list, optional): Filter by certificate type\n * program_type (list, optional): Filter by program type\n * duration (list, optional): Filter by course duration range\n * price (str, optional): Filter by price/audit status\n * resource_type (list, optional): Filter by resource type\n * skills (list, optional): Filter by skills\n *\n * # Sorting and pagination\n * order_by (str, optional): Field to sort results by\n * order_ascending (bool, optional): Sort direction (default: false)\n * alphabetical (bool, optional): Sort alphabetically by name (default: false)\n * limit (int, optional): Number of results per page (default: 12, max: 100)\n * offset (int, optional): Starting position for pagination\n *\n * # Response options\n * return_facet (bool, optional): Include facet data in response (default: true)\n * return_items (bool, optional): Include items in programs/pathways (default: false)\n * allow_skill_search (bool, optional): Enable skill-based search (default: false)\n * update_facet (str, optional): Force facet update\n *\n * Returns:\n * A JSON response containing:\n * - results: List of content items with metadata\n * - count: Total number of matching items\n * - next: URL for the next page of results (if available)\n * - previous: URL for the previous page of results (if available)\n * - current_page: Current page number\n * - total_pages: Total number of pages\n * - facets: Aggregated counts for each filter category (if requested)\n *\n * Each content item contains type-specific fields:\n * - Courses:\n * {\n * \"id\": 123,\n * \"type\": \"course\",\n * \"course_id\": \"CS101\",\n * \"name\": \"Introduction to Computer Science\",\n * \"description\": \"Learn the fundamentals of computer science\",\n * \"short_description\": \"CS fundamentals\",\n * \"image_url\": \"https://example.com/images/cs101.jpg\",\n * \"level\": \"Beginner\",\n * \"subject\": \"Computer Science\",\n * \"topics\": [\"Programming\", \"Algorithms\"],\n * \"tags\": [\"python\", \"coding\"],\n * \"language\": \"English\",\n * \"tenant\": \"example-university\",\n * \"self_paced\": true,\n * \"duration\": \"6 weeks\",\n * \"certificate\": \"Professional Certificate\",\n * \"price\": \"Free\",\n * \"skills\": [\n * {\"id\": 1, \"name\": \"Python Programming\"},\n * {\"id\": 2, \"name\": \"Algorithms\"}\n * ],\n * \"url\": \"https://example.com/courses/cs101\"\n * }\n *\n * - Programs:\n * {\n * \"id\": 456,\n * \"type\": \"program\",\n * \"program_id\": \"PROG123\",\n * \"name\": \"Data Science Program\",\n * \"description\": \"Comprehensive data science curriculum\",\n * \"short_description\": \"Learn data science\",\n * \"image_url\": \"https://example.com/images/datascience.jpg\",\n * \"level\": \"Intermediate\",\n * \"subject\": \"Data Science\",\n * \"topics\": [\"Machine Learning\", \"Statistics\"],\n * \"program_type\": \"Professional Certificate\",\n * \"courses\": [\n * {\"id\": 123, \"name\": \"Introduction to Python\"},\n * {\"id\": 124, \"name\": \"Statistics for Data Science\"}\n * ],\n * \"url\": \"https://example.com/programs/prog123\"\n * }\n *\n * - Pathways:\n * {\n * \"id\": 789,\n * \"type\": \"pathway\",\n * \"pathway_id\": \"PATH456\",\n * \"name\": \"Software Engineering Career Path\",\n * \"description\": \"Complete pathway to become a software engineer\",\n * \"image_url\": \"https://example.com/images/swe-path.jpg\",\n * \"programs\": [\n * {\"id\": 456, \"name\": \"Programming Fundamentals\"},\n * {\"id\": 457, \"name\": \"Web Development\"}\n * ],\n * \"url\": \"https://example.com/pathways/path456\"\n * }\n *\n * - Skills:\n * {\n * \"id\": 321,\n * \"type\": \"skill\",\n * \"name\": \"Machine Learning\",\n * \"description\": \"Building systems that learn from data\",\n * \"courses\": [\n * {\"id\": 125, \"name\": \"Machine Learning Fundamentals\"}\n * ],\n * \"related_skills\": [\n * {\"id\": 322, \"name\": \"Deep Learning\"}\n * ]\n * }\n *\n * - Roles:\n * {\n * \"id\": 654,\n * \"type\": \"role\",\n * \"name\": \"Data Scientist\",\n * \"description\": \"Professional who analyzes and interprets complex data\",\n * \"skills\": [\n * {\"id\": 321, \"name\": \"Machine Learning\"},\n * {\"id\": 323, \"name\": \"Data Analysis\"}\n * ],\n * \"recommended_courses\": [\n * {\"id\": 125, \"name\": \"Machine Learning Fundamentals\"}\n * ]\n * }\n *\n * - Resources:\n * {\n * \"id\": 987,\n * \"type\": \"resource\",\n * \"name\": \"Python Cheat Sheet\",\n * \"description\": \"Quick reference guide for Python\",\n * \"resource_type\": \"PDF\",\n * \"url\": \"https://example.com/resources/python-cheatsheet.pdf\",\n * \"topics\": [\"Programming\", \"Python\"]\n * }\n *\n * Error Responses:\n * 500 Internal Server Error: If an unexpected error occurs during processing\n *\n * Notes:\n * - Results are cached for performance\n * - The 'resources' content type is only included by default if IBL_ENABLE_RESOURCES_IN_FACET is true\n * - For debugging, add ?debug=true to see detailed information about skill matching\n * @param allowSkillSearch Enable skill-based search\n * @param alphabetical Sort alphabetically by name\n * @param certificate Filter by certificate type\n * @param content Content types to include in results\n * @param courseId Filter by specific course ID\n * @param duration Filter by course duration range\n * @param language Filter by content language\n * @param level Filter by difficulty level\n * @param limit Number of results per page\n * @param offset Starting position for pagination\n * @param orderAscending Sort direction\n * @param orderBy Field to sort results by\n * @param pathwayId Filter by specific pathway ID\n * @param price Filter by price/audit status\n * @param programId Filter by specific program ID\n * @param programType Filter by program type\n * @param promotion Filter by promotion status\n * @param query Search term to filter content by name or description\n * @param resourceType Filter by resource type\n * @param returnFacet Include facet data in response\n * @param returnItems Include items in programs/pathways\n * @param selfPaced Filter by course format\n * @param skillId Filter by specific skill ID\n * @param skills Filter by skills\n * @param subject Filter by subject areas\n * @param tags Filter by tags\n * @param tenant Filter by tenant/organization\n * @param topics Filter by topic areas\n * @param updateFacet Force facet update\n * @returns GlobalCatalogSearchResponse\n * @throws ApiError\n */\n static searchCatalogRetrieve(allowSkillSearch = false, alphabetical = false, certificate, content, courseId, duration, language, level, limit = 12, offset, orderAscending = false, orderBy, pathwayId, price, programId, programType, promotion, query, resourceType, returnFacet = true, returnItems = false, selfPaced, skillId, skills, subject, tags, tenant, topics, updateFacet) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/catalog/',\n query: {\n 'allow_skill_search': allowSkillSearch,\n 'alphabetical': alphabetical,\n 'certificate': certificate,\n 'content': content,\n 'course_id': courseId,\n 'duration': duration,\n 'language': language,\n 'level': level,\n 'limit': limit,\n 'offset': offset,\n 'order_ascending': orderAscending,\n 'order_by': orderBy,\n 'pathway_id': pathwayId,\n 'price': price,\n 'program_id': programId,\n 'program_type': programType,\n 'promotion': promotion,\n 'query': query,\n 'resource_type': resourceType,\n 'return_facet': returnFacet,\n 'return_items': returnItems,\n 'self_paced': selfPaced,\n 'skill_id': skillId,\n 'skills': skills,\n 'subject': subject,\n 'tags': tags,\n 'tenant': tenant,\n 'topics': topics,\n 'update_facet': updateFacet\n },\n errors: {\n 400: `Bad request`,\n 500: `Server error`\n }\n });\n }\n /**\n * Search and filter AI mentors across the platform.\n *\n * This endpoint provides a powerful search interface for discovering AI mentors\n * with support for filtering, pagination, and detailed mentor information.\n *\n * Query Parameters:\n * # Identification parameters (for detail view)\n * id (int, optional): Retrieve a specific mentor by ID\n * unique_id (uuid, optional): Retrieve a specific mentor by UUID\n *\n * # Search and filtering parameters\n * query (str, optional): Search term to filter mentors by name or description\n * tenant (str, optional): Filter by tenant/organization\n * llm (list, optional): Filter by language model type\n * audience (list, optional): Filter by target audience\n * category (list, optional): Filter by mentor category\n * tags (list, optional): Filter by tags\n * created_by (str, optional): Filter mentors created by specific user\n *\n * # Sorting and pagination\n * order_by (str, optional): Field to sort results by ('created_at', 'recently_accessed_at')\n * order_direction (str, optional): Sort direction ('asc' or 'desc', default: 'desc')\n * limit (int, optional): Number of results per page (default: 12, max: 100)\n * offset (int, optional): Starting position for pagination\n *\n * Returns:\n * For detail view (when id or unique_id is provided):\n * A JSON response containing a single mentor's details:\n * {\n * \"id\": 123,\n * \"unique_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Professor Smith\",\n * \"description\": \"AI mentor specializing in computer science\",\n * \"image_url\": \"https://example.com/images/prof-smith.jpg\",\n * \"llm\": {\n * \"id\": 1,\n * \"name\": \"GPT-4\",\n * \"description\": \"Advanced language model\"\n * },\n * \"audience\": {\n * \"id\": 2,\n * \"name\": \"College Students\",\n * \"description\": \"For university-level learners\"\n * },\n * \"category\": \"Computer Science\",\n * \"tags\": [\"programming\", \"algorithms\", \"data structures\"],\n * \"created_at\": \"2023-01-15T12:00:00Z\",\n * \"recently_accessed_at\": \"2023-06-20T15:30:00Z\",\n * \"platform\": {\n * \"id\": 1,\n * \"name\": \"Example University\",\n * \"key\": \"example-university\"\n * },\n * \"visibility\": \"public\",\n * \"settings\": {\n * \"temperature\": 0.7,\n * \"max_tokens\": 1024,\n * \"system_prompt\": \"You are Professor Smith, an expert in computer science...\"\n * }\n * }\n *\n * For list view:\n * A JSON response containing:\n * {\n * \"results\": [\n * {\n * \"id\": 123,\n * \"unique_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Professor Smith\",\n * \"description\": \"AI mentor specializing in computer science\",\n * \"image_url\": \"https://example.com/images/prof-smith.jpg\",\n * \"llm\": {\"id\": 1, \"name\": \"GPT-4\"},\n * \"audience\": {\"id\": 2, \"name\": \"College Students\"},\n * \"category\": \"Computer Science\",\n * \"tags\": [\"programming\", \"algorithms\"],\n * \"created_at\": \"2023-01-15T12:00:00Z\",\n * \"recently_accessed_at\": \"2023-06-20T15:30:00Z\"\n * },\n * // Additional mentor objects...\n * ],\n * \"count\": 50,\n * \"next\": \"https://api.example.com/api/search/mentors/?limit=12&offset=12\",\n * \"previous\": null,\n * \"current_page\": 1,\n * \"num_pages\": 5,\n * \"facets\": {\n * \"llm\": [\n * {\"key\": \"GPT-4\", \"doc_count\": 30},\n * {\"key\": \"Claude\", \"doc_count\": 20}\n * ],\n * \"audience\": [\n * {\"key\": \"College Students\", \"doc_count\": 35},\n * {\"key\": \"Professionals\", \"doc_count\": 15}\n * ],\n * \"category\": [\n * {\"key\": \"Computer Science\", \"doc_count\": 25},\n * {\"key\": \"Mathematics\", \"doc_count\": 15},\n * {\"key\": \"Business\", \"doc_count\": 10}\n * ]\n * }\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request parameters are invalid\n * 404 Not Found: If the requested mentor doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Notes:\n * - Results are cached for performance\n * - Public mentors are visible to all users\n * - Private mentors are only visible to authorized users\n * @param audience Filter by target audience\n * @param category Filter by mentor category\n * @param createdBy Filter mentors created by specific user\n * @param id Retrieve a specific mentor by ID\n * @param limit Number of results per page\n * @param llm Filter by language model type\n * @param offset Starting position for pagination\n * @param orderBy Field to sort results by ('created_at', 'recently_accessed_at')\n * @param orderDirection Sort direction ('asc' or 'desc')\n * @param query Search term to filter mentors by name or description\n * @param tags Filter by tags\n * @param tenant Filter by tenant/organization\n * @param uniqueId Retrieve a specific mentor by UUID\n * @returns MentorSearchResponse\n * @throws ApiError\n */\n static searchMentorsRetrieve(audience, category, createdBy, id, limit = 12, llm, offset, orderBy, orderDirection = 'desc', query, tags, tenant, uniqueId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/mentors/',\n query: {\n 'audience': audience,\n 'category': category,\n 'created_by': createdBy,\n 'id': id,\n 'limit': limit,\n 'llm': llm,\n 'offset': offset,\n 'order_by': orderBy,\n 'order_direction': orderDirection,\n 'query': query,\n 'tags': tags,\n 'tenant': tenant,\n 'unique_id': uniqueId\n },\n errors: {\n 400: `Bad request`,\n 500: `Server error`\n }\n });\n }\n /**\n * Search and filter documents associated with a specific mentor\n * @param mentorUniqueId\n * @param access Filter by access level (e.g., 'public', 'private')\n * @param documentType Filter by document type (e.g., 'pdf', 'text')\n * @param limit Number of results per page\n * @param offset Starting position for pagination\n * @param orderBy Field to sort results by ('date_created', 'last_modified', 'document_name')\n * @param orderDirection Sort direction ('asc' or 'desc')\n * @param platformKey Filter by platform key\n * @param query Search term to filter documents by name or content\n * @param trainingStatus Filter by training status (e.g., 'trained', 'pending')\n * @returns DocumentSearchResponse\n * @throws ApiError\n */\n static searchMentorsDocumentsRetrieve(mentorUniqueId, access, documentType, limit = 12, offset, orderBy, orderDirection = 'desc', platformKey, query, trainingStatus) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/mentors/{mentor_unique_id}/documents/',\n path: {\n 'mentor_unique_id': mentorUniqueId\n },\n query: {\n 'access': access,\n 'document_type': documentType,\n 'limit': limit,\n 'offset': offset,\n 'order_by': orderBy,\n 'order_direction': orderDirection,\n 'platform_key': platformKey,\n 'query': query,\n 'training_status': trainingStatus\n },\n errors: {\n 400: `Bad request`,\n 404: `Mentor not found`,\n 500: `Server error`\n }\n });\n }\n /**\n * Handle GET requests for tenant-specific mentor search.\n *\n * Args:\n * request: HTTP request object\n * org: Tenant/organization key\n * username: Username of the user making the request\n *\n * Returns:\n * Response: DRF Response object with search results\n * @param org\n * @param username\n * @param audience Filter by target audience\n * @param category Filter by mentor category\n * @param createdBy Filter mentors created by specific user\n * @param id Retrieve a specific mentor by ID\n * @param limit Number of results per page\n * @param llm Filter by language model type\n * @param offset Starting position for pagination\n * @param orderBy Field to sort results by ('created_at', 'recently_accessed_at')\n * @param orderDirection Sort direction ('asc' or 'desc')\n * @param query Search term to filter mentors by name or description\n * @param tags Filter by tags\n * @param tenant Filter by tenant/organization\n * @param uniqueId Retrieve a specific mentor by UUID\n * @returns MentorSearchResponse\n * @throws ApiError\n */\n static searchOrgsUsersMentorsRetrieve(org, username, audience, category, createdBy, id, limit = 12, llm, offset, orderBy, orderDirection = 'desc', query, tags, tenant, uniqueId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/orgs/{org}/users/{username}/mentors/',\n path: {\n 'org': org,\n 'username': username\n },\n query: {\n 'audience': audience,\n 'category': category,\n 'created_by': createdBy,\n 'id': id,\n 'limit': limit,\n 'llm': llm,\n 'offset': offset,\n 'order_by': orderBy,\n 'order_direction': orderDirection,\n 'query': query,\n 'tags': tags,\n 'tenant': tenant,\n 'unique_id': uniqueId\n },\n errors: {\n 400: `Bad request`,\n 500: `Server error`\n }\n });\n }\n /**\n * Search and filter AI prompts for a specific user within a tenant.\n *\n * This endpoint extends the base prompt search functionality but filters results\n * to only show prompts that are available to a specific user within a specific\n * organization/tenant.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * username (str): The username to filter prompts for\n *\n * Query Parameters:\n * Same as PromptSearchView, plus:\n *\n * # Identification parameters (for detail view)\n * id (int, optional): Retrieve a specific prompt by ID\n *\n * Returns:\n * Same format as PromptSearchView, but filtered to only include prompts\n * that the specified user has access to within the specified organization.\n *\n * Error Responses:\n * 400 Bad Request: If the request parameters are invalid\n * 403 Forbidden: If the requested prompt exists but the user doesn't have access\n * 404 Not Found: If the requested prompt doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - Results are filtered based on user's permissions within the organization\n * - Private prompts are only visible to authorized users\n * @param org\n * @param username\n * @param alphabetical Sort alphabetically\n * @param category Filter by prompt category\n * @param filterFacet If true, return only facets without results\n * @param language Filter by prompt language\n * @param limit Number of results per page\n * @param mentor Filter by mentor UUID\n * @param offset Starting position for pagination\n * @param orderDirection Sort direction ('asc' or 'desc')\n * @param query Search term to filter prompts by name or content\n * @param sortBy Field to sort results by\n * @param style Filter by prompt style\n * @param tenant Filter by tenant/organization\n * @param tone Filter by prompt tone\n * @returns void\n * @throws ApiError\n */\n static searchOrgsUsersPromptsRetrieve(org, username, alphabetical = false, category, filterFacet, language, limit = 10, mentor, offset, orderDirection = 'desc', query, sortBy, style, tenant, tone) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/orgs/{org}/users/{username}/prompts/',\n path: {\n 'org': org,\n 'username': username\n },\n query: {\n 'alphabetical': alphabetical,\n 'category': category,\n 'filter_facet': filterFacet,\n 'language': language,\n 'limit': limit,\n 'mentor': mentor,\n 'offset': offset,\n 'order_direction': orderDirection,\n 'query': query,\n 'sort_by': sortBy,\n 'style': style,\n 'tenant': tenant,\n 'tone': tone\n },\n errors: {\n 400: `Bad request`,\n 403: `Forbidden`,\n 404: `Not found`,\n 500: `Server error`\n }\n });\n }\n /**\n * Determine whether to serve a detail view or a list view.\n * @param org\n * @param username\n * @param certificate Filter by certificate type\n * @param content Content types to include in recommendations (courses, programs, pathways, skills, roles, resources)\n * @param courseId Retrieve a specific course by ID\n * @param duration Filter by course duration range\n * @param language Filter by content language\n * @param level Filter by difficulty level\n * @param limit Number of results per page\n * @param offset Starting position for pagination\n * @param pathwayId Retrieve a specific pathway by ID\n * @param price Filter by price/audit status\n * @param programId Retrieve a specific program by ID\n * @param programType Filter by program type\n * @param query Search term to filter content by name or description\n * @param resourceId Retrieve a specific resource by ID\n * @param resourceType Filter by resource type\n * @param roleId Retrieve a specific role by ID\n * @param selfPaced Filter by course format (self-paced, instructor-led)\n * @param skillId Retrieve a specific skill by ID\n * @param skills Filter by skills\n * @param subject Filter by subject areas\n * @param tags Filter by tags\n * @param topics Filter by topic areas\n * @returns void\n * @throws ApiError\n */\n static searchOrgsUsersRecommendedRetrieve(org, username, certificate, content, courseId, duration, language, level, limit = 12, offset, pathwayId, price, programId, programType, query, resourceId, resourceType, roleId, selfPaced, skillId, skills, subject, tags, topics) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/orgs/{org}/users/{username}/recommended/',\n path: {\n 'org': org,\n 'username': username\n },\n query: {\n 'certificate': certificate,\n 'content': content,\n 'course_id': courseId,\n 'duration': duration,\n 'language': language,\n 'level': level,\n 'limit': limit,\n 'offset': offset,\n 'pathway_id': pathwayId,\n 'price': price,\n 'program_id': programId,\n 'program_type': programType,\n 'query': query,\n 'resource_id': resourceId,\n 'resource_type': resourceType,\n 'role_id': roleId,\n 'self_paced': selfPaced,\n 'skill_id': skillId,\n 'skills': skills,\n 'subject': subject,\n 'tags': tags,\n 'topics': topics\n },\n errors: {\n 400: `Bad request`,\n 404: `User not found`,\n 500: `Server error`\n }\n });\n }\n /**\n * Determine whether to serve a detail view or a list view.\n * If any detail-identifying parameters are present (course_id, program_id, etc.)\n * the detail view is returned; otherwise the aggregated list view is returned.\n * @param username\n * @param allowSkillSearch Enable skill-based search\n * @param alphabetical Sort alphabetically by name\n * @param certificate Filter by certificate type\n * @param content Content types to include in results\n * @param courseId Retrieve a specific course by ID\n * @param duration Filter by course duration range\n * @param language Filter by content language\n * @param level Filter by difficulty level\n * @param limit Number of results per page\n * @param offset Starting position for pagination\n * @param orderAscending Sort direction\n * @param orderBy Field to sort results by\n * @param pathwayId Retrieve a specific pathway by ID\n * @param price Filter by price/audit status\n * @param programId Retrieve a specific program by ID\n * @param programType Filter by program type\n * @param promotion Filter by promotion status\n * @param query Search term to filter content by name or description\n * @param recommended Show only recommended content\n * @param resourceId Retrieve a specific resource by ID\n * @param resourceType Filter by resource type\n * @param returnFacet Include facet data in response\n * @param returnItems Include items in programs/pathways\n * @param roleId Retrieve a specific role by ID\n * @param selfPaced Filter by course format\n * @param skillId Retrieve a specific skill by ID\n * @param skills Filter by skills\n * @param subject Filter by subject areas\n * @param tags Filter by tags\n * @param tenant Filter by tenant/organization\n * @param topics Filter by topic areas\n * @param updateFacet Force facet update\n * @returns any\n * @throws ApiError\n */\n static searchPersonalizedCatalogRetrieve(username, allowSkillSearch = false, alphabetical = false, certificate, content, courseId, duration, language, level, limit = 12, offset, orderAscending = false, orderBy, pathwayId, price, programId, programType, promotion, query, recommended = false, resourceId, resourceType, returnFacet = true, returnItems = false, roleId, selfPaced, skillId, skills, subject, tags, tenant, topics, updateFacet) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/personalized-catalog/{username}/',\n path: {\n 'username': username\n },\n query: {\n 'allow_skill_search': allowSkillSearch,\n 'alphabetical': alphabetical,\n 'certificate': certificate,\n 'content': content,\n 'course_id': courseId,\n 'duration': duration,\n 'language': language,\n 'level': level,\n 'limit': limit,\n 'offset': offset,\n 'order_ascending': orderAscending,\n 'order_by': orderBy,\n 'pathway_id': pathwayId,\n 'price': price,\n 'program_id': programId,\n 'program_type': programType,\n 'promotion': promotion,\n 'query': query,\n 'recommended': recommended,\n 'resource_id': resourceId,\n 'resource_type': resourceType,\n 'return_facet': returnFacet,\n 'return_items': returnItems,\n 'role_id': roleId,\n 'self_paced': selfPaced,\n 'skill_id': skillId,\n 'skills': skills,\n 'subject': subject,\n 'tags': tags,\n 'tenant': tenant,\n 'topics': topics,\n 'update_facet': updateFacet\n }\n });\n }\n /**\n * Search and filter AI prompts across the platform.\n *\n * This endpoint provides a search interface for discovering AI prompts\n * with support for filtering, pagination, and detailed prompt information.\n *\n * Query Parameters:\n * # Identification parameters (for detail view)\n * id (int, optional): Retrieve a specific prompt by ID\n *\n * # Search and filtering parameters\n * query (str, optional): Search term to filter prompts by name or content\n * category (str, optional): Filter by prompt category\n * language (str, optional): Filter by prompt language\n * style (str, optional): Filter by writing style\n * tone (str, optional): Filter by tone\n * tenant (str, optional): Filter by tenant/organization\n * mentor (str, optional): Filter by associated mentor (UUID)\n *\n * # Sorting and pagination\n * sort_by (str, optional): Field to sort results by\n * order_direction (str, optional): Sort direction ('asc' or 'desc', default: 'desc')\n * alphabetical (bool, optional): Sort alphabetically by name (default: false)\n * limit (int, optional): Number of results per page (default: 10)\n * offset (int, optional): Starting position for pagination\n *\n * # Special parameters\n * filter_facet (any, optional): If present, return only facets without results\n *\n * Returns:\n * For detail view (when id is provided):\n * A JSON response containing a single prompt's details:\n * {\n * \"id\": 456,\n * \"name\": \"Essay Writing Guide\",\n * \"content\": \"Write a well-structured essay on the following topic: {{topic}}...\",\n * \"category\": \"Academic Writing\",\n * \"language\": \"English\",\n * \"style\": \"Formal\",\n * \"tone\": \"Professional\",\n * \"mentor\": {\n * \"id\": 123,\n * \"unique_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Professor Smith\"\n * },\n * \"platform\": {\n * \"id\": 1,\n * \"name\": \"Example University\",\n * \"key\": \"example-university\"\n * },\n * \"created_at\": \"2023-02-10T09:15:00Z\",\n * \"updated_at\": \"2023-05-05T14:20:00Z\",\n * \"visibility\": \"public\",\n * \"variables\": [\"topic\", \"length\", \"style\"]\n * }\n *\n * For list view:\n * A JSON response containing:\n * {\n * \"results\": [\n * {\n * \"id\": 456,\n * \"name\": \"Essay Writing Guide\",\n * \"content\": \"Write a well-structured essay on the following topic: {{topic}}...\",\n * \"category\": \"Academic Writing\",\n * \"language\": \"English\",\n * \"style\": \"Formal\",\n * \"tone\": \"Professional\",\n * \"mentor\": {\"id\": 123, \"name\": \"Professor Smith\"},\n * \"created_at\": \"2023-02-10T09:15:00Z\",\n * \"updated_at\": \"2023-05-05T14:20:00Z\"\n * },\n * // Additional prompt objects...\n * ],\n * \"count\": 30,\n * \"next\": \"?limit=10&offset=10\",\n * \"previous\": null,\n * \"current_page\": 1,\n * \"num_pages\": 3,\n * \"facets\": {\n * \"category\": [\n * {\"key\": \"Academic Writing\", \"doc_count\": 15},\n * {\"key\": \"Creative Writing\", \"doc_count\": 10},\n * {\"key\": \"Technical Documentation\", \"doc_count\": 5}\n * ],\n * \"language\": [\n * {\"key\": \"English\", \"doc_count\": 25},\n * {\"key\": \"Spanish\", \"doc_count\": 5}\n * ],\n * \"style\": [\n * {\"key\": \"Formal\", \"doc_count\": 20},\n * {\"key\": \"Casual\", \"doc_count\": 10}\n * ],\n * \"tone\": [\n * {\"key\": \"Professional\", \"doc_count\": 15},\n * {\"key\": \"Friendly\", \"doc_count\": 10},\n * {\"key\": \"Technical\", \"doc_count\": 5}\n * ]\n * }\n * }\n *\n * Error Responses:\n * 400 Bad Request: If the request parameters are invalid\n * 403 Forbidden: If the requested prompt exists but is not publicly available\n * 404 Not Found: If the requested prompt doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Notes:\n * - Only publicly available prompts are returned by default\n * - When filtering by mentor, the mentor ID must be a valid UUID\n * @param alphabetical Sort alphabetically\n * @param category Filter by prompt category\n * @param filterFacet If true, return only facets without results\n * @param language Filter by prompt language\n * @param limit Number of results per page\n * @param mentor Filter by mentor UUID\n * @param offset Starting position for pagination\n * @param orderDirection Sort direction ('asc' or 'desc')\n * @param query Search term to filter prompts by name or content\n * @param sortBy Field to sort results by\n * @param style Filter by prompt style\n * @param tenant Filter by tenant/organization\n * @param tone Filter by prompt tone\n * @returns void\n * @throws ApiError\n */\n static searchPromptsRetrieve(alphabetical = false, category, filterFacet, language, limit = 10, mentor, offset, orderDirection = 'desc', query, sortBy, style, tenant, tone) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/prompts/',\n query: {\n 'alphabetical': alphabetical,\n 'category': category,\n 'filter_facet': filterFacet,\n 'language': language,\n 'limit': limit,\n 'mentor': mentor,\n 'offset': offset,\n 'order_direction': orderDirection,\n 'query': query,\n 'sort_by': sortBy,\n 'style': style,\n 'tenant': tenant,\n 'tone': tone\n },\n errors: {\n 400: `Bad request`,\n 500: `Server error`\n }\n });\n }\n /**\n * Search and filter users within a specific organization/tenant.\n *\n * This endpoint provides a search interface for discovering users within an organization,\n * with support for filtering by departments, pagination, and faceted filtering.\n *\n * Path Parameters:\n * org (str): The organization/tenant identifier\n * username (str): The username of the user making the request\n *\n * Query Parameters:\n * # Search parameters\n * query (str, optional): Search term to filter users by name, username, or email\n *\n * # Department filtering\n * department_mode (bool, optional): Enable department-based filtering (default: false)\n * user_department (bool, optional): Legacy parameter for department_mode (default: false)\n * department (list, optional): Filter by specific departments\n *\n * # Additional filters\n * role (list, optional): Filter by user role\n * status (list, optional): Filter by user status (active, inactive)\n * joined_date (list, optional): Filter by join date range\n * last_login (list, optional): Filter by last login date range\n *\n * # Pagination\n * limit (int, optional): Number of results per page (default: 10)\n * offset (int, optional): Starting position for pagination\n *\n * Returns:\n * A JSON response containing:\n * ```\n * {\n * \"results\": [\n * {\n * \"id\": 123,\n * \"username\": \"john.doe\",\n * \"email\": \"john.doe@example.com\",\n * \"first_name\": \"John\",\n * \"last_name\": \"Doe\",\n * \"full_name\": \"John Doe\",\n * \"profile_image\": \"https://example.com/profiles/john-doe.jpg\",\n * \"role\": \"Student\",\n * \"departments\": [\"Computer Science\", \"Data Science\"],\n * \"status\": \"active\",\n * \"joined_date\": \"2023-01-15T12:00:00Z\",\n * \"last_login\": \"2023-06-20T15:30:00Z\",\n * \"metadata\": {\n * \"location\": \"New York\",\n * \"title\": \"Software Engineer\",\n * \"bio\": \"Experienced software engineer with a passion for education\"\n * }\n * },\n * // Additional user objects...\n * ],\n * \"count\": 50,\n * \"next\": \"https://api.example.com/api/search/users/example-org/admin/?limit=10&offset=10\",\n * \"previous\": null,\n * \"current_page\": 1,\n * \"total_pages\": 5,\n * \"facets\": {\n * \"role\": [\n * {\"key\": \"Student\", \"doc_count\": 30},\n * {\"key\": \"Instructor\", \"doc_count\": 15},\n * {\"key\": \"Admin\", \"doc_count\": 5}\n * ],\n * \"department\": [\n * {\"key\": \"Computer Science\", \"doc_count\": 20},\n * {\"key\": \"Data Science\", \"doc_count\": 15},\n * {\"key\": \"Business\", \"doc_count\": 10},\n * {\"key\": \"Engineering\", \"doc_count\": 5}\n * ],\n * \"status\": [\n * {\"key\": \"active\", \"doc_count\": 45},\n * {\"key\": \"inactive\", \"doc_count\": 5}\n * ]\n * }\n * }\n * ```\n * Error Responses:\n * 400 Bad Request: If the request parameters are invalid\n * 403 Forbidden: If the user doesn't have department admin privileges (when using department_mode)\n * 404 Not Found: If the user or organization doesn't exist\n * 500 Internal Server Error: If an unexpected error occurs\n *\n * Access Control:\n * - The requesting user must have an active account in the specified organization\n * - When department_mode is enabled, the user must be an admin of at least one department\n * - Department filtering restricts results to users in departments where the requesting user is an admin\n * @param org\n * @param username\n * @param department Filter by department names\n * @param educationDegree Filter by degree\n * @param educationFieldOfStudy Filter by field of study\n * @param educationInstitution Filter by institution\n * @param includeMembershipData Include user group membership data in results\n * @param limit Number of results per page\n * @param offset Starting position for pagination\n * @param q Search term to filter users by name, email, or other attributes\n * @param userResumeCompany Filter by company\n * @param userResumeIndustry Filter by industry\n * @param userResumeJobTitle Filter by job title\n * @param userResumeLocation Filter by location\n * @param userResumeSkills Filter by skills\n * @returns UserSearchResponse\n * @throws ApiError\n */\n static searchUsersOrgsUsersRetrieve(org, username, department, educationDegree, educationFieldOfStudy, educationInstitution, includeMembershipData = false, limit = 10, offset, q, userResumeCompany, userResumeIndustry, userResumeJobTitle, userResumeLocation, userResumeSkills) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/search/users/orgs/{org}/users/{username}/',\n path: {\n 'org': org,\n 'username': username\n },\n query: {\n 'department': department,\n 'education__degree': educationDegree,\n 'education__field_of_study': educationFieldOfStudy,\n 'education__institution': educationInstitution,\n 'include_membership_data': includeMembershipData,\n 'limit': limit,\n 'offset': offset,\n 'q': q,\n 'user_resume__company': userResumeCompany,\n 'user_resume__industry': userResumeIndustry,\n 'user_resume__job_title': userResumeJobTitle,\n 'user_resume__location': userResumeLocation,\n 'user_resume__skills': userResumeSkills\n },\n errors: {\n 400: `Bad request`,\n 403: `Forbidden`,\n 404: `Not found`,\n 500: `Server error`\n }\n });\n }\n}\n\nclass ServiceService {\n /**\n * User/tenant creation API\n *\n * To create using any payment provider, ensure you use the StudentToken Authentication Mechanism\n * and also include the correct `provider_key` in the request body:\n *\n * ```\n * apple_transaction_id: str\n * stripe_checkout_id: str\n * x_gcp_marketplace_token: str\n * aws_transaction_id: str\n * google_pay_transaction_id: str\n * ```\n *\n * To create a tenant without a payment provider, call the API without ny of the above provider keys in the request body\n * @param requestBody\n * @returns TenantLaunchResponse\n * @throws ApiError\n */\n static serviceLaunchTenantCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/launch/tenant/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * User creation flow\n * @returns any No response body\n * @throws ApiError\n */\n static serviceManageUserCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/manage/user/'\n });\n }\n /**\n * Make user tenant admin\n * @returns any No response body\n * @throws ApiError\n */\n static serviceManageUserRoleCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/manage/user/role/'\n });\n }\n /**\n * Stripe checkout session API View for user upgrade\n *\n * Request the following fields:\n *\n * - tenant\n * - sku\n * - mode\n * - success_url\n * - cancel_url\n *\n * Response:\n * {\n * \"redirect_to\": \"https://checkout.stripe.com/xxx/xxxx/xxxx\",\n * }\n * @param org\n * @param userId\n * @param requestBody\n * @returns StripeCheckoutSessionResponse\n * @throws ApiError\n */\n static serviceOrgsUsersStripeCheckoutSessionCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/orgs/{org}/users/{user_id}/stripe/checkout-session/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param userId\n * @param requestBody\n * @returns StripeCustomerPortalResponse\n * @throws ApiError\n */\n static serviceOrgsUsersStripeCustomerPortalCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/orgs/{org}/users/{user_id}/stripe/customer-portal/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param userId\n * @returns StripeLocalProduct\n * @throws ApiError\n */\n static serviceOrgsUsersStripeProductsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/service/orgs/{org}/users/{user_id}/stripe/products/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsPlatformAdmin\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static serviceOrgsUsersStripeProductsManageCreate(org, userId) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/orgs/{org}/users/{user_id}/stripe/products/manage/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param userId\n * @param requestBody\n * @returns StripeSubscriptionRenewalResponse\n * @throws ApiError\n */\n static serviceOrgsUsersStripeSubscriptionRenewalCreate(org, userId, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/orgs/{org}/users/{user_id}/stripe/subscription-renewal/',\n path: {\n 'org': org,\n 'user_id': userId\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @param userId\n * @returns any No response body\n * @throws ApiError\n */\n static serviceOrgsUsersStripeSubscriptionsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/service/orgs/{org}/users/{user_id}/stripe/subscriptions/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Handle course payment callback after successful Stripe checkout.\n * Enrolls the user in the purchased course.\n *\n * URL Parameters:\n * - stripe_checkout_id: The local Checkout Session UUID\n *\n * Response:\n * - Redirect: Successfully processed course enrollment\n * - 404: Checkout session not found\n * - 400: Invalid checkout session or product\n * - 500: Server error during processing\n * @param platformKey\n * @returns any No response body\n * @throws ApiError\n */\n static serviceOrgsStripeCoursePaymentCallbackRetrieve(platformKey) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/service/orgs/{platform_key}/stripe/course-payment-callback/',\n path: {\n 'platform_key': platformKey\n }\n });\n }\n /**\n * @param checkoutUuid\n * @returns any No response body\n * @throws ApiError\n */\n static serviceStripeCheckoutRetrieve(checkoutUuid) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/service/stripe/checkout/{checkout_uuid}/',\n path: {\n 'checkout_uuid': checkoutUuid\n }\n });\n }\n /**\n * Stripe free trial checkout session. No user auth\n *\n * Request the following fields:\n *\n * - success_url\n * - cancel_url\n * - product\n *\n * Response:\n * {\n * \"redirect_to\": \"https://checkout.stripe.com/xxx/xxxx/xxxx\",\n * }\n * @param requestBody\n * @returns StripeCheckoutSessionResponse\n * @throws ApiError\n */\n static serviceStripeCheckoutFreeTrialCreate(requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/stripe/checkout/free-trial/',\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Check if tenant exists or not\n * @returns any No response body\n * @throws ApiError\n */\n static serviceTenantValidationCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/tenant/validation/'\n });\n }\n /**\n * GET\n * Gets site hash_key from\n * or\n * Gets site_id form hash_key\n * @returns any No response body\n * @throws ApiError\n */\n static serviceTokenRetrieve() {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/service/token/'\n });\n }\n /**\n * Check if tenant exists or not\n * @returns any No response body\n * @throws ApiError\n */\n static serviceUserValidationCreate() {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/service/user/validation/'\n });\n }\n}\n\nclass SkillsService {\n /**\n * List all available skills on the platform.\n *\n * This endpoint returns information about all skills that can be\n * acquired on the platform.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n *\n * Returns:\n * A list of all skills with basic information about each skill.\n *\n * Access Control:\n * - Platform admins can access this information\n * - All authenticated users can access this information\n * @param org\n * @returns SkillInfo\n * @throws ApiError\n */\n static skillsOrgsSkillsList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Retrieve percentile distribution for a specific skill.\n *\n * This endpoint returns the percentile distribution of points earned\n * by users for a specific skill.\n *\n * Path Parameters:\n * skill_id (int): The ID of the skill to retrieve percentile information for\n * org (str, optional): The platform/organization identifier to filter results\n *\n * Returns:\n * A list of percentile breakpoints for the specified skill.\n *\n * Error Responses:\n * 404 Not Found: If the specified skill doesn't exist\n *\n * Access Control:\n * - Platform admins can access this information\n * - All authenticated users can access this information\n * @param org\n * @param skillId\n * @returns PointsPercentile\n * @throws ApiError\n */\n static skillsOrgsSkillsPercentileRetrieve(org, skillId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/{skill_id}/percentile/',\n path: {\n 'org': org,\n 'skill_id': skillId\n }\n });\n }\n /**\n * Retrieve detailed information about a specific skill.\n *\n * This endpoint returns comprehensive information about a specific skill,\n * including its description, categories, and related courses.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * skill_name (str): The name of the skill to retrieve details for\n *\n * Returns:\n * Detailed information about the specified skill.\n *\n * Error Responses:\n * 404 Not Found: If the specified skill doesn't exist\n *\n * Access Control:\n * - Platform admins can access this information\n * - All authenticated users can access this information\n * @param org\n * @param skillName\n * @returns SkillDetail\n * @throws ApiError\n */\n static skillsOrgsSkillsRetrieve(org, skillName) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/{skill_name}/',\n path: {\n 'org': org,\n 'skill_name': skillName\n }\n });\n }\n /**\n * Mixin that includes the StudentTokenAuthentication and IsAdminUserOrStudent\n * @param org\n * @returns PointsPercentile\n * @throws ApiError\n */\n static skillsOrgsSkillsPercentileList(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/percentile/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Manage skill thresholds for a platform.\n *\n * This endpoint allows platform administrators to view, create, update, and delete\n * skill thresholds. Skill thresholds define the minimum points required to consider\n * a skill as acquired or mastered.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n *\n * Methods:\n * GET: Retrieve all skill thresholds for the platform\n * POST: Create a new skill threshold\n * PATCH: Update an existing skill threshold\n * DELETE: Delete all skill thresholds for the platform\n *\n * Request Body (POST):\n * name (str, required): The name of the threshold level (e.g., \"Beginner\", \"Intermediate\")\n * threshold (int, required): The minimum points required to reach this threshold\n *\n * Request Body (PATCH):\n * name (str, required): The name of the existing threshold to update\n * threshold (int, required): The new minimum points value for this threshold\n *\n * Returns:\n * GET: A list of all skill thresholds for the platform\n * POST/PATCH: The created or updated skill threshold with format:\n * {\n * \"name\": \"threshold_name\",\n * \"threshold\": threshold_value\n * }\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required fields\n * 404 Not Found: If the specified platform doesn't exist or the threshold\n * to update cannot be found\n *\n * Access Control:\n * - Only platform administrators can access this endpoint\n * @param org\n * @returns SkillThreshold\n * @throws ApiError\n */\n static skillsOrgsSkillsThresholdsRetrieve(org) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/thresholds/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Manage skill thresholds for a platform.\n *\n * This endpoint allows platform administrators to view, create, update, and delete\n * skill thresholds. Skill thresholds define the minimum points required to consider\n * a skill as acquired or mastered.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n *\n * Methods:\n * GET: Retrieve all skill thresholds for the platform\n * POST: Create a new skill threshold\n * PATCH: Update an existing skill threshold\n * DELETE: Delete all skill thresholds for the platform\n *\n * Request Body (POST):\n * name (str, required): The name of the threshold level (e.g., \"Beginner\", \"Intermediate\")\n * threshold (int, required): The minimum points required to reach this threshold\n *\n * Request Body (PATCH):\n * name (str, required): The name of the existing threshold to update\n * threshold (int, required): The new minimum points value for this threshold\n *\n * Returns:\n * GET: A list of all skill thresholds for the platform\n * POST/PATCH: The created or updated skill threshold with format:\n * {\n * \"name\": \"threshold_name\",\n * \"threshold\": threshold_value\n * }\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required fields\n * 404 Not Found: If the specified platform doesn't exist or the threshold\n * to update cannot be found\n *\n * Access Control:\n * - Only platform administrators can access this endpoint\n * @param org\n * @param requestBody\n * @returns SkillThreshold\n * @throws ApiError\n */\n static skillsOrgsSkillsThresholdsCreate(org, requestBody) {\n return request(OpenAPI, {\n method: 'POST',\n url: '/api/skills/orgs/{org}/skills/thresholds/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Manage skill thresholds for a platform.\n *\n * This endpoint allows platform administrators to view, create, update, and delete\n * skill thresholds. Skill thresholds define the minimum points required to consider\n * a skill as acquired or mastered.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n *\n * Methods:\n * GET: Retrieve all skill thresholds for the platform\n * POST: Create a new skill threshold\n * PATCH: Update an existing skill threshold\n * DELETE: Delete all skill thresholds for the platform\n *\n * Request Body (POST):\n * name (str, required): The name of the threshold level (e.g., \"Beginner\", \"Intermediate\")\n * threshold (int, required): The minimum points required to reach this threshold\n *\n * Request Body (PATCH):\n * name (str, required): The name of the existing threshold to update\n * threshold (int, required): The new minimum points value for this threshold\n *\n * Returns:\n * GET: A list of all skill thresholds for the platform\n * POST/PATCH: The created or updated skill threshold with format:\n * {\n * \"name\": \"threshold_name\",\n * \"threshold\": threshold_value\n * }\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required fields\n * 404 Not Found: If the specified platform doesn't exist or the threshold\n * to update cannot be found\n *\n * Access Control:\n * - Only platform administrators can access this endpoint\n * @param org\n * @param requestBody\n * @returns SkillThreshold\n * @throws ApiError\n */\n static skillsOrgsSkillsThresholdsPartialUpdate(org, requestBody) {\n return request(OpenAPI, {\n method: 'PATCH',\n url: '/api/skills/orgs/{org}/skills/thresholds/',\n path: {\n 'org': org\n },\n body: requestBody,\n mediaType: 'application/json'\n });\n }\n /**\n * Manage skill thresholds for a platform.\n *\n * This endpoint allows platform administrators to view, create, update, and delete\n * skill thresholds. Skill thresholds define the minimum points required to consider\n * a skill as acquired or mastered.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n *\n * Methods:\n * GET: Retrieve all skill thresholds for the platform\n * POST: Create a new skill threshold\n * PATCH: Update an existing skill threshold\n * DELETE: Delete all skill thresholds for the platform\n *\n * Request Body (POST):\n * name (str, required): The name of the threshold level (e.g., \"Beginner\", \"Intermediate\")\n * threshold (int, required): The minimum points required to reach this threshold\n *\n * Request Body (PATCH):\n * name (str, required): The name of the existing threshold to update\n * threshold (int, required): The new minimum points value for this threshold\n *\n * Returns:\n * GET: A list of all skill thresholds for the platform\n * POST/PATCH: The created or updated skill threshold with format:\n * {\n * \"name\": \"threshold_name\",\n * \"threshold\": threshold_value\n * }\n * DELETE: No content (204)\n *\n * Error Responses:\n * 400 Bad Request: If the request data is invalid or missing required fields\n * 404 Not Found: If the specified platform doesn't exist or the threshold\n * to update cannot be found\n *\n * Access Control:\n * - Only platform administrators can access this endpoint\n * @param org\n * @returns void\n * @throws ApiError\n */\n static skillsOrgsSkillsThresholdsDestroy(org) {\n return request(OpenAPI, {\n method: 'DELETE',\n url: '/api/skills/orgs/{org}/skills/thresholds/',\n path: {\n 'org': org\n }\n });\n }\n /**\n * Retrieve a user's skill information.\n *\n * This endpoint returns information about skills that a user has acquired\n * through the platform. It can return all skills or filter by a specific skill.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * user_id (str): The username of the user to retrieve skill information for\n *\n * Query Parameters:\n * skill_name (str, optional): Filter results to a specific skill\n *\n * Returns:\n * When skill_name is provided:\n * Details about the specific skill including points earned and percentile ranking\n *\n * When skill_name is not provided:\n * A list of all skills the user has acquired with their points\n *\n * Access Control:\n * - Platform admins can access any user's skill information\n * - Users can access their own skill information\n * @param org\n * @param userId\n * @returns UserSkill\n * @throws ApiError\n */\n static skillsOrgsSkillsUsersRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/users/{user_id}/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve a user's desired skills.\n *\n * This endpoint returns the skills that a user has indicated they want\n * to develop or acquire through the platform.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * user_id (str): The username of the user to retrieve skill information for\n *\n * Returns:\n * The user's desired skills information.\n *\n * Error Responses:\n * 400 Bad Request: If the user doesn't exist in the platform or has no desired skills\n * 404 Not Found: If the specified platform doesn't exist\n *\n * Access Control:\n * - Platform admins can access any user's information\n * - Users can access their own information\n * @param org\n * @param userId\n * @returns DesiredSkill\n * @throws ApiError\n */\n static skillsOrgsSkillsUsersDesiredSkillsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/users/{user_id}/desired-skills/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve a user's total skill points and percentile ranking.\n *\n * This endpoint returns the total skill points a user has earned across\n * all skills and their percentile ranking compared to other users on the platform.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * user_id (str): The username of the user to retrieve information for\n *\n * Returns:\n * The user's total skill points and percentile ranking information:\n * - Username\n * - Total points earned across all skills\n * - Percentile ranking compared to other users\n *\n * Access Control:\n * - Platform admins can access any user's information\n * - Users can access their own information\n * @param org\n * @param userId\n * @returns UserSkillPointsPercentile\n * @throws ApiError\n */\n static skillsOrgsSkillsUsersPointPercentileRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/users/{user_id}/point-percentile/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n /**\n * Retrieve a user's self-reported skills.\n *\n * This endpoint returns the skills that a user has reported having\n * prior to or outside of the platform learning experience.\n *\n * Path Parameters:\n * org (str): The platform/organization identifier\n * user_id (str): The username of the user to retrieve skill information for\n *\n * Returns:\n * The user's self-reported skills information.\n *\n * Error Responses:\n * 400 Bad Request: If the user doesn't exist in the platform or has no reported skills\n * 404 Not Found: If the specified platform doesn't exist\n *\n * Access Control:\n * - Platform admins can access any user's information\n * - Users can access their own information\n * @param org\n * @param userId\n * @returns ReportedSkill\n * @throws ApiError\n */\n static skillsOrgsSkillsUsersReportedSkillsRetrieve(org, userId) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/skills/orgs/{org}/skills/users/{user_id}/reported-skills/',\n path: {\n 'org': org,\n 'user_id': userId\n }\n });\n }\n}\n\nclass UserGroupsService {\n /**\n * Get a list of user groups with metrics and filtering options.\n *\n * This endpoint provides a paginated list of user groups with aggregated metrics\n * about learner performance, course completions, and skill acquisition.\n *\n * This endpoint uses DM token authentication and respects department-based\n * access controls.\n *\n * Query Parameters:\n * page (int, optional): Page number for pagination\n * length (int, optional): Number of items per page\n * program (str, optional): Filter by program\n * pathway (str, optional): Filter by pathway\n * groups (list, optional): Filter by group names\n * location (str, optional): Filter by location\n * is_enrolled (bool, optional): Filter for groups with enrolled users\n * start_date (date, optional): Filter by learner join date (start range)\n * end_date (date, optional): Filter by learner join date (end range)\n *\n * Returns:\n * A paginated list of user groups with comprehensive metrics.\n *\n * Access Control:\n * - Platform admins can see all groups\n * - Department admins can only see groups in their departments\n * @param key\n * @param departmentId When `department_mode=1` is passed, it allows to filter data for only user content groups for the specified department\n * @param endDate Filter by learners date_joined. Start date. ISO 8601\n * @param format Format\n *\n * * `json` - json\n * @param groups Groups search string. Single string or list of strings. e.g 'sample_group' or `['group', 'another group']`\n * @param includeMainPlatform Include main platform data\n * @param isEnrolled Filter for users who have at least an enrollment\n * @param length Size of data to return\n * @param location Location search string\n * @param page Page offset\n * @param pathway Pathway string\n * @param program Program search string\n * @param startDate Filter by learners date_joined. Start date. ISO 8601\n * @returns GroupList\n * @throws ApiError\n */\n static userGroupsOrgsRetrieve(key, departmentId, endDate, format = 'json', groups, includeMainPlatform = true, isEnrolled, length, location, page, pathway, program, startDate) {\n return request(OpenAPI, {\n method: 'GET',\n url: '/api/user-groups/orgs/{key}/',\n path: {\n 'key': key\n },\n query: {\n 'department_id': departmentId,\n 'end_date': endDate,\n 'format': format,\n 'groups': groups,\n 'include_main_platform': includeMainPlatform,\n 'is_enrolled': isEnrolled,\n 'length': length,\n 'location': location,\n 'page': page,\n 'pathway': pathway,\n 'program': program,\n 'start_date': startDate\n }\n });\n }\n}\n\nexport { AcceptanceEnum, AccessEnum, AiAccountService, AiAnalyticsService, AiBotService, AiFinetuningService, AiIndexService, AiMarketingService, AiMediaService, AiMentorService, AiPromptService, AlignMentorBubbleEnum, AnalyticsService, ApiError, AudienceService, BlankEnum, CancelError, CancelablePromise, CareerService, CatalogService, CeleryHeartbeatFailStatusEnum, CeleryHeartbeatStatusEnum, ComponentBlockTypeEnum, CoreService, CourseCreationTaskStatusEnum, CredentialsService, DataSetStatusEnum, DepartmentsService, EngagementService, FeaturesService, FinanceService, GooglePayAccountResponseStatusEnum, GreetingMethodEnum, InstitutionTypeEnum, ItemTypeEnum, KindEnum, MediaResourcesService, MediaTypeEnum, MentorVisibilityEnum, ModeEnum, NotificationBuilderService, NotificationService, NotificationSourceTypeEnum, NotificationStatusEnum, OpenAPI, OverviewService, PerformanceService, PeriodicAgentLogStatusEnum, PerlearnerService, PlatformListStatusEnum, PlatformService, PreviousAgentStatusEnum, ProgramTypeEnum, PromptVisibilityEnum, Provider05cEnum, Provider63aEnum, ProvidersService, ProvisionService, RatingEnum, RecommendationsService, ReportsService, ResourceScrappedDataStatusEnum, RolesService, SearchService, ServiceService, SkillsService, StateEnum, Status6eeEnum, StepStatusEnum, TargetSystemEnum, ThemeEnum, TrainingStatusEnum, TransportEnum, TypeC42Enum, UserGroupsService, VoiceProviderEnum };\n//# sourceMappingURL=index.esm.js.map\n","export const STORAGE_KEYS = {\n CURRENT_TENANT: \"current_tenant\",\n TENANT: \"tenant\",\n TENANTS: \"tenants\",\n REDIRECT_TO: \"redirect-to\",\n AUTH_TOKEN: \"axd_token\",\n TOKEN_EXPIRY: \"axd_token_expires\",\n EDX_TOKEN_KEY: \"edx_jwt_token\",\n DM_TOKEN_KEY: \"dm_token\",\n AXD_TOKEN_KEY: \"axd_token\",\n USER_DATA: \"userData\",\n};\n\n// URL patterns\nexport const URL_PATTERNS = {\n PLATFORM_KEY: /\\/platform\\/([^/]+)\\//,\n};\n\n// App identifiers\nexport const APP_IDENTIFIERS = {\n APP_NAME: \"mentor\",\n};\n\n// Query parameters\nexport const QUERY_PARAMS = {\n APP: \"app\",\n REDIRECT_TO: \"redirect-to\",\n TENANT: \"tenant\",\n};\n\n// Tenant identifiers\nexport const TENANT_IDENTIFIERS = {\n MAIN: \"main\",\n};\n\nexport enum SERVICES {\n LMS = \"LMS\",\n AXD = \"AXD\",\n DM = \"DM\",\n}\n","export default class Config {\n public static lmsUrl = \"https://learn.iblai.app\";\n public static dmUrl = \"https://base.manager.iblai.app\";\n public static axdUrl = \"https://base.manager.iblai.app\";\n}\n","import { StorageService } from \"../services/StorageService\";\n\nexport class IblDataLayer {\n public static storage: StorageService;\n}\n","import { STORAGE_KEYS, SERVICES } from \"@/constants\";\nimport Config from \"@/config\";\nimport { IblDataLayer } from \"../core\";\nimport { OpenAPI } from \"@iblai/iblai-api\";\nimport {\n BaseQueryApi,\n fetchBaseQuery,\n type BaseQueryFn,\n type FetchArgs,\n type FetchBaseQueryError,\n type FetchBaseQueryMeta,\n type QueryReturnValue,\n} from \"@reduxjs/toolkit/query\";\n\n// Custom error structure\ntype CustomError = {\n status: number;\n error: string | object;\n};\n\n/**\n * Get the service URL based on the provided service type.\n */\nexport const getServiceUrl = (service: SERVICES): string => {\n switch (service) {\n case SERVICES.LMS:\n return Config.lmsUrl;\n case SERVICES.DM:\n return Config.dmUrl;\n case SERVICES.AXD:\n return Config.axdUrl;\n default:\n return Config.dmUrl;\n }\n};\n\n/**\n * Get the headers required for API requests based on the provided service type.\n */\nexport const getHeaders = async (\n service: SERVICES,\n): Promise<{ Authorization: string }> => {\n // Check if storage is initialized\n if (!IblDataLayer.storage) {\n throw new Error(\n \"Storage not initialized. Please ensure the data layer is properly initialized before making API calls.\",\n );\n }\n\n const token =\n service === SERVICES.LMS\n ? await IblDataLayer.storage.getItem(STORAGE_KEYS.EDX_TOKEN_KEY)\n : service === SERVICES.DM\n ? await IblDataLayer.storage.getItem(STORAGE_KEYS.DM_TOKEN_KEY)\n : await IblDataLayer.storage.getItem(STORAGE_KEYS.AXD_TOKEN_KEY);\n\n const prefix = service === SERVICES.LMS ? \"JWT\" : \"Token\";\n return { Authorization: `${prefix} ${token}` };\n};\n\n/**\n * Build a generic RTK Query endpoint from a service function.\n */\nexport const buildEndpointFromService = <Args extends unknown[], Result>(\n service: SERVICES,\n serviceFn: (...args: Args) => Promise<Result>,\n): {\n queryFn: BaseQueryFn<Args, Result, FetchBaseQueryError | CustomError>;\n} => {\n return {\n async queryFn(\n args: Args,\n ): Promise<\n QueryReturnValue<Result, FetchBaseQueryError | CustomError, object>\n > {\n try {\n OpenAPI.BASE = getServiceUrl(service);\n OpenAPI.HEADERS = await getHeaders(service);\n\n const data = await serviceFn(...args);\n return { data };\n } catch (err: any) {\n return {\n error: {\n status: err?.status || 500,\n error: err?.body || err?.message || \"Unknown error\",\n },\n };\n }\n },\n };\n};\n\n/**\n * Shortcut for building an endpoint using the DM service.\n */\nexport const buildEndpointFromDmService = <Args extends any[], Result>(\n serviceFn: (...args: Args) => Promise<Result>,\n): {\n queryFn: BaseQueryFn<Args, Result, FetchBaseQueryError | CustomError>;\n} => buildEndpointFromService(SERVICES.DM, serviceFn);\n\n/**\n * Shortcut for building an endpoint using the AXD service.\n */\nexport const buildEndpointFromAxdService = <Args extends any[], Result>(\n serviceFn: (...args: Args) => Promise<Result>,\n): {\n queryFn: BaseQueryFn<Args, Result, FetchBaseQueryError | CustomError>;\n} => buildEndpointFromService(SERVICES.AXD, serviceFn);\n\nexport interface CustomQueryArgs extends Omit<FetchArgs, \"url\"> {\n url: string;\n service: SERVICES;\n}\n\nexport type ExtendedFetchBaseQueryError = FetchBaseQueryError & {\n data?: { detail?: string; message?: string } | string;\n};\n\nconst isErrorObject = (\n data: unknown,\n): data is { detail?: string; message?: string } => {\n return (\n typeof data === \"object\" &&\n data !== null &&\n (\"detail\" in data || \"message\" in data)\n );\n};\n\nconst baseQuery = (\n service: SERVICES,\n): BaseQueryFn<\n string | FetchArgs,\n unknown,\n FetchBaseQueryError,\n object,\n FetchBaseQueryMeta\n> =>\n fetchBaseQuery({\n baseUrl: getServiceUrl(service),\n\n prepareHeaders: async (headers) => {\n const authHeaders = await getHeaders(service);\n\n // Remove this in favor of the isForm flag in the future\n headers.set(\"Content-Type\", \"application/json\");\n\n Object.entries(authHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n\n return headers;\n },\n });\n\nexport const iblFetchBaseQuery: BaseQueryFn<\n CustomQueryArgs,\n unknown,\n ExtendedFetchBaseQueryError,\n Record<string, unknown>,\n FetchBaseQueryMeta\n> = async <T>(\n args: CustomQueryArgs,\n api: BaseQueryApi,\n extraOptions: Record<string, unknown>,\n): Promise<{ data: T }> => {\n try {\n const result = await baseQuery(args.service)(args, api, extraOptions);\n if (result.error) {\n const errorData = result.error.data;\n const errorMessage =\n typeof errorData === \"string\"\n ? errorData\n : isErrorObject(errorData)\n ? errorData.detail || errorData.message || \"Unknown server error\"\n : \"Unknown server error\";\n throw new Error(errorMessage);\n }\n return { data: result?.data as T };\n } catch (e) {\n if (\n e instanceof Error &&\n e.message !== \"Unknown server error\" &&\n !isErrorObject(e) &&\n typeof e !== \"string\"\n ) {\n throw new Error(\"something went wrong fetching data\");\n }\n throw e;\n }\n};\n","import { CoreService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromDmService } from \"../utils\";\n\nexport const apiKeysApiSlice = createApi({\n reducerPath: \"apiKeysApiSlice\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [\"apiKeys\"],\n endpoints: (builder) => ({\n getApiKeys: builder.query({\n ...buildEndpointFromDmService(CoreService.corePlatformApiTokensList),\n providesTags: [\"apiKeys\"],\n }),\n createApiKey: builder.mutation({\n ...buildEndpointFromDmService(CoreService.corePlatformApiTokensCreate),\n invalidatesTags: [\"apiKeys\"],\n }),\n deleteApiKey: builder.mutation({\n ...buildEndpointFromDmService(CoreService.corePlatformApiTokensDestroy),\n invalidatesTags: [\"apiKeys\"],\n }),\n }),\n});\n\nexport const apiKeysApiReducer = apiKeysApiSlice.reducer;\nexport const {\n useGetApiKeysQuery,\n useLazyGetApiKeysQuery,\n useCreateApiKeyMutation,\n useDeleteApiKeyMutation,\n} = apiKeysApiSlice;\n","import { buildEndpointFromAxdService } from \"../utils\";\n\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { AiAnalyticsService, ReportsService } from \"@iblai/iblai-api\";\n\nexport const chatHistoryApiSlice = createApi({\n reducerPath: \"chatHistoryApiSlice\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [\"chatHistory\", \"chatHistoryFilter\", \"chatHistoryExportStatus\"],\n endpoints: (builder) => ({\n getChatHistoryFilter: builder.query({\n ...buildEndpointFromAxdService(\n AiAnalyticsService.aiAnalyticsOrgsUsersChatHistoryFilterRetrieve,\n ),\n providesTags: [\"chatHistoryFilter\"],\n }),\n getChatHistory: builder.query({\n ...buildEndpointFromAxdService(\n AiAnalyticsService.aiAnalyticsOrgsUsersChatHistoryList,\n ),\n providesTags: [\"chatHistory\"],\n }),\n exportChatHistory: builder.mutation({\n ...buildEndpointFromAxdService(ReportsService.reportsOrgsNewCreate),\n }),\n getChatHistoryExportStatus: builder.query({\n ...buildEndpointFromAxdService(ReportsService.reportsOrgsRetrieve2),\n providesTags: [\"chatHistoryExportStatus\"],\n }),\n }),\n});\n\nexport const {\n useGetChatHistoryFilterQuery,\n useLazyGetChatHistoryFilterQuery,\n useGetChatHistoryQuery,\n useLazyGetChatHistoryQuery,\n useExportChatHistoryMutation,\n useGetChatHistoryExportStatusQuery,\n useLazyGetChatHistoryExportStatusQuery,\n} = chatHistoryApiSlice;\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromAxdService } from \"../utils\";\nimport { AiMentorService } from \"@iblai/iblai-api\";\n\nexport const chatApiSlice = createApi({\n reducerPath: \"chatApiSlice\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [\"pinnedMessage\", \"recentMessage\"],\n endpoints: (builder) => ({\n getPinnedMessages: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersPinMessageList,\n ),\n providesTags: [\"pinnedMessage\"],\n }),\n addPinnedMessage: builder.mutation({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersPinMessageCreate,\n ),\n }),\n getVectorDocuments: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersCleanVectorResultsList,\n ),\n }),\n }),\n});\n\nexport const {\n useGetPinnedMessagesQuery,\n useAddPinnedMessageMutation,\n useLazyGetVectorDocumentsQuery,\n} = chatApiSlice;\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromAxdService } from \"../utils\";\nimport { AiMentorService } from \"@iblai/iblai-api\";\n\nexport const llmsApiSlice = createApi({\n reducerPath: \"llmsApiSlice\",\n baseQuery: fakeBaseQuery(),\n endpoints: (builder) => ({\n getLlms: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorLlmsList,\n ),\n }),\n }),\n});\n\nexport const { useGetLlmsQuery, useLazyGetLlmsQuery } = llmsApiSlice;\n","import { AiMentorService, SearchService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\n\nimport { buildEndpointFromAxdService } from \"../utils\";\n\nexport const mentorApiSlice = createApi({\n reducerPath: \"mentorApiSlice\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [\"mentor\", \"mentors\"],\n endpoints: (builder) => ({\n createMentor: builder.mutation({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorWithSettingsCreate,\n ),\n invalidatesTags: [\"mentors\"],\n }),\n\n getMentors: builder.query({\n ...buildEndpointFromAxdService(\n SearchService.searchOrgsUsersMentorsRetrieve,\n ),\n providesTags: [\"mentors\"],\n }),\n\n editMentor: builder.mutation({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorsSettingsUpdate,\n ),\n invalidatesTags: (result, error, arg) => [{ type: \"mentor\", id: arg[0] }],\n }),\n\n seedMentors: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorSeedRetrieve,\n ),\n }),\n\n getMentorDetails: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorsRetrieve,\n ),\n providesTags: (result, error, arg) => [{ type: \"mentor\", id: arg[0] }],\n }),\n\n getMentorSettings: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorsSettingsRetrieve,\n ),\n providesTags: (result, error, arg) => [{ type: \"mentor\", id: arg[0] }],\n }),\n\n getMentorPublicSettings: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorsPublicSettingsRetrieve,\n ),\n }),\n updateMentorSettings: builder.mutation({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorsSettingsUpdate,\n ),\n }),\n }),\n});\n\nexport const mentorApiReducer = mentorApiSlice.reducer;\nexport const {\n useCreateMentorMutation,\n useGetMentorsQuery,\n useLazyGetMentorsQuery,\n useEditMentorMutation,\n useSeedMentorsQuery,\n useLazySeedMentorsQuery,\n useGetMentorDetailsQuery,\n useLazyGetMentorDetailsQuery,\n useGetMentorSettingsQuery,\n useLazyGetMentorSettingsQuery,\n useGetMentorPublicSettingsQuery,\n useLazyGetMentorPublicSettingsQuery,\n useUpdateMentorSettingsMutation,\n} = mentorApiSlice;\n","import { AiMentorService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\n\nimport { buildEndpointFromAxdService } from \"../utils\";\n\nexport const mentorCategoriesApiSlice = createApi({\n reducerPath: \"mentorCategoriesApiSlice\",\n baseQuery: fakeBaseQuery(),\n endpoints: (builder) => ({\n getMentorCategories: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorCategoriesList,\n ),\n }),\n }),\n});\n\nexport const { useGetMentorCategoriesQuery, useLazyGetMentorCategoriesQuery } =\n mentorCategoriesApiSlice;\n","import { AiPromptService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromAxdService } from \"../utils\";\n\nexport const promptsApiSlice = createApi({\n reducerPath: \"promptsApiSlice\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [\"prompts\", \"promptCategories\"],\n endpoints: (builder) => ({\n getPromptCategories: builder.query({\n ...buildEndpointFromAxdService(\n AiPromptService.aiPromptOrgsUsersPromptsCategoryRetrieve,\n ),\n providesTags: [\"promptCategories\"],\n }),\n getPrompts: builder.query({\n ...buildEndpointFromAxdService(\n AiPromptService.aiPromptOrgsUsersPromptList,\n ),\n providesTags: [\"prompts\"],\n }),\n createPrompt: builder.mutation({\n ...buildEndpointFromAxdService(\n AiPromptService.aiPromptOrgsUsersPromptCreate,\n ),\n invalidatesTags: [\"prompts\"],\n }),\n updatePrompt: builder.mutation({\n ...buildEndpointFromAxdService(\n AiPromptService.aiPromptOrgsUsersPromptUpdate,\n ),\n invalidatesTags: [\"prompts\"],\n }),\n deletePrompt: builder.mutation({\n ...buildEndpointFromAxdService(\n AiPromptService.aiPromptOrgsUsersPromptDestroy,\n ),\n invalidatesTags: [\"prompts\"],\n }),\n }),\n});\n\nexport const {\n useGetPromptCategoriesQuery,\n useLazyGetPromptCategoriesQuery,\n useGetPromptsQuery,\n useLazyGetPromptsQuery,\n useCreatePromptMutation,\n useUpdatePromptMutation,\n useDeletePromptMutation,\n} = promptsApiSlice;\n","import { SERVICES } from \"@/constants\";\n\nexport const TENANTS_ENDPOINTS = {\n GET_USER_TENANTS: {\n service: SERVICES.LMS,\n path: (): string => `/api/ibl/users/manage/platform/`,\n },\n};\n\nexport const TENANTS_QUERY_KEYS = {\n GET_USER_TENANTS: (): string[] => [\"USER_TENANTS\"],\n};\n\nexport const TENANTS_REDUCER_KEY = \"tenantsApiSlice\";\n","import { CoreService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\n\nimport { buildEndpointFromAxdService } from \"../utils\";\nimport { Tenant } from \"./types\";\nimport { TENANTS_ENDPOINTS } from \"./constants\";\n\nexport const tenantApiSlice = createApi({\n reducerPath: \"tenantApiSlice\",\n baseQuery: fakeBaseQuery(),\n\n endpoints: (builder) => ({\n getTenantMetadata: builder.query({\n ...buildEndpointFromAxdService(CoreService.coreOrgsMetadataRetrieve),\n }),\n\n getUserTenants: builder.query<Tenant[], void>({\n query: () => ({\n url: TENANTS_ENDPOINTS.GET_USER_TENANTS.path(),\n service: TENANTS_ENDPOINTS.GET_USER_TENANTS.service,\n }),\n }),\n }),\n});\n\nexport const tenantApiReducer = tenantApiSlice.reducer;\nexport const {\n useGetTenantMetadataQuery,\n useLazyGetTenantMetadataQuery,\n useGetUserTenantsQuery,\n useLazyGetUserTenantsQuery,\n} = tenantApiSlice;\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromAxdService } from \"../utils\";\nimport { AiIndexService } from \"@iblai/iblai-api\";\n\nexport const trainingDocumentsApiSlice = createApi({\n reducerPath: \"trainingDocumentsApiSlice\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [\"trainingDocuments\"],\n endpoints: (builder) => ({\n getTrainingDocuments: builder.query({\n ...buildEndpointFromAxdService(\n AiIndexService.aiIndexOrgsUsersDocumentsPathwaysList,\n ),\n providesTags: [\"trainingDocuments\"],\n }),\n addTrainingDocument: builder.mutation({\n ...buildEndpointFromAxdService(\n AiIndexService.aiIndexOrgsUsersDocumentsTrainCreate,\n ),\n invalidatesTags: [\"trainingDocuments\"],\n }),\n editTrainingDocument: builder.mutation({\n ...buildEndpointFromAxdService(\n AiIndexService.aiIndexOrgsUsersDocumentsUpdate,\n ),\n invalidatesTags: [\"trainingDocuments\"],\n }),\n deleteTrainingDocument: builder.mutation({\n ...buildEndpointFromAxdService(\n AiIndexService.aiIndexOrgsUsersDocumentsDestroy,\n ),\n invalidatesTags: [\"trainingDocuments\"],\n }),\n }),\n});\n\nexport const {\n useGetTrainingDocumentsQuery,\n useLazyGetTrainingDocumentsQuery,\n useAddTrainingDocumentMutation,\n useEditTrainingDocumentMutation,\n useDeleteTrainingDocumentMutation,\n} = trainingDocumentsApiSlice;\n","export const featureTags = {\n PLATFORM_USERS: \"PLATFORM_USERS\",\n};\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromDmService } from \"../utils\";\nimport { CatalogService, CoreService, PlatformService } from \"@iblai/iblai-api\";\nimport { featureTags } from \"../constants\";\n\nexport interface InviteUserRequest {\n email: string;\n platform_key: string;\n redirect_to: string;\n source: string;\n}\n\nexport interface InviteUserResponse {\n active: boolean;\n email: string;\n id: number;\n metadata: any;\n platform_key: string;\n redirect_to: string;\n source: string;\n username: string;\n}\n\nexport interface InvitedUserRequest {\n platform_key: string;\n page: number;\n}\n\nexport interface InvitedUserResponse {\n count: number;\n next_page?: number;\n previous_page?: number;\n results: {\n active: boolean;\n email: string;\n id: number;\n metadata: unknown;\n platform_key: string;\n redirect_to: string;\n source: string;\n username: string;\n }[];\n}\n\nexport const platformApiSlice = createApi({\n reducerPath: \"platform-api\",\n baseQuery: fakeBaseQuery(),\n tagTypes: [featureTags.PLATFORM_USERS, \"platform_invitations\"],\n endpoints: (builder) => ({\n usersGradesPassed: builder.query<unknown, [string, string, string]>({\n ...buildEndpointFromDmService(\n PlatformService.platformOrgsCoursesUsersGradesPassedRetrieve,\n ),\n }),\n platformUsers: builder.query({\n ...buildEndpointFromDmService(CoreService.corePlatformUsersRetrieve),\n providesTags: [featureTags.PLATFORM_USERS],\n }),\n platformInvitations: builder.query({\n ...buildEndpointFromDmService(\n CatalogService.catalogInvitationsPlatformRetrieve,\n ),\n providesTags: [\"platform_invitations\"],\n }),\n inviteUser: builder.mutation({\n ...buildEndpointFromDmService(\n CatalogService.catalogInvitationsPlatformCreate,\n ),\n invalidatesTags: [\"platform_invitations\"],\n }),\n }),\n});\n\nexport const platformApiReducer = platformApiSlice.reducer;\nexport const {\n useUsersGradesPassedQuery,\n useLazyPlatformUsersQuery,\n usePlatformInvitationsQuery,\n usePlatformUsersQuery,\n useInviteUserMutation,\n} = platformApiSlice;\n","import { SERVICES } from \"@/constants\";\n\nexport const USERS_ENDPOINTS = {\n GET_USER_METADATA: {\n service: SERVICES.LMS,\n path: (): string => `/api/ibl/users/manage/metadata/`,\n },\n RESET_PASSWORD: {\n service: SERVICES.LMS,\n path: (): string => `/account/password`,\n },\n UPDATE_USER_ROLES: {\n service: SERVICES.LMS,\n path: (): string => `/api/ibl/users/manage/roles/`,\n },\n};\n\nexport const USERS_QUERY_KEYS = {\n GET_USER_METADATA: (): string[] => [\"USER_METADATA\"],\n};\n\nexport const USERS_REDUCER_PATH = \"userApiSlice\";\n","import { createApi } from \"@reduxjs/toolkit/query/react\";\n\nimport {\n USERS_ENDPOINTS,\n USERS_QUERY_KEYS,\n USERS_REDUCER_PATH,\n} from \"@/features/user/constants\";\nimport { iblFetchBaseQuery } from \"@/features/utils\";\nimport type {\n UserProfile,\n GetUserMetadataArgs,\n UpdateUserRoleRequest,\n} from \"@/features/user/types\";\nimport { featureTags } from \"../constants\";\n\nexport const userApiSlice = createApi({\n reducerPath: USERS_REDUCER_PATH,\n\n baseQuery: iblFetchBaseQuery,\n\n tagTypes: [\n ...USERS_QUERY_KEYS.GET_USER_METADATA(),\n featureTags.PLATFORM_USERS,\n ],\n\n endpoints: (builder) => ({\n getUserMetadata: builder.query<UserProfile, GetUserMetadataArgs>({\n query: (args) => ({\n url: USERS_ENDPOINTS.GET_USER_METADATA.path(),\n service: USERS_ENDPOINTS.GET_USER_METADATA.service,\n params: args.params,\n }),\n providesTags: USERS_QUERY_KEYS.GET_USER_METADATA(),\n }),\n updateUserMetadata: builder.mutation<unknown, UserProfile>({\n query: (args) => ({\n url: USERS_ENDPOINTS.GET_USER_METADATA.path(),\n service: USERS_ENDPOINTS.GET_USER_METADATA.service,\n body: args,\n method: \"POST\",\n }),\n invalidatesTags: USERS_QUERY_KEYS.GET_USER_METADATA(),\n }),\n resetPassword: builder.mutation<unknown, unknown>({\n query: (args) => ({\n url: USERS_ENDPOINTS.RESET_PASSWORD.path(),\n service: USERS_ENDPOINTS.RESET_PASSWORD.service,\n body: args,\n method: \"POST\",\n }),\n }),\n updateUserRole: builder.mutation<unknown, UpdateUserRoleRequest>({\n query: (args) => ({\n url: USERS_ENDPOINTS.UPDATE_USER_ROLES.path(),\n service: USERS_ENDPOINTS.UPDATE_USER_ROLES.service,\n body: args,\n method: \"POST\",\n }),\n invalidatesTags: [featureTags.PLATFORM_USERS],\n }),\n }),\n});\n\nexport const {\n useGetUserMetadataQuery,\n useLazyGetUserMetadataQuery,\n useUpdateUserMetadataMutation,\n useResetPasswordMutation,\n useUpdateUserRoleMutation,\n} = userApiSlice;\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromAxdService } from \"../utils\";\nimport { CoreService } from \"@iblai/iblai-api\";\n\nexport const coreApiSlice = createApi({\n reducerPath: \"coreApiSlice\",\n baseQuery: fakeBaseQuery(),\n endpoints: (builder) => ({\n createRedirectToken: builder.mutation({\n ...buildEndpointFromAxdService(CoreService.coreOrgsRedirectTokensCreate),\n }),\n }),\n});\n\nexport const { useCreateRedirectTokenMutation } = coreApiSlice;\n","import { SkillsService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\n\nimport { buildEndpointFromAxdService } from \"../utils\";\n\nexport const skillsApiSlice = createApi({\n // TODO: replace to catalogSlice\n reducerPath: \"skillsApiSlice\",\n\n baseQuery: fakeBaseQuery(),\n\n tagTypes: [\"skills\"],\n\n endpoints: (builder) => ({\n getReportedSkills: builder.query({\n ...buildEndpointFromAxdService(\n SkillsService.skillsOrgsSkillsUsersReportedSkillsRetrieve,\n ),\n }),\n getSkillsPointsPercentile: builder.query({\n ...buildEndpointFromAxdService(\n SkillsService.skillsOrgsSkillsUsersPointPercentileRetrieve,\n ),\n }),\n getDesiredSkills: builder.query({\n ...buildEndpointFromAxdService(\n SkillsService.skillsOrgsSkillsUsersDesiredSkillsRetrieve,\n ),\n }),\n }),\n});\n\nexport const {\n useGetReportedSkillsQuery,\n useLazyGetReportedSkillsQuery,\n useGetSkillsPointsPercentileQuery,\n useLazyGetSkillsPointsPercentileQuery,\n useGetDesiredSkillsQuery,\n useLazyGetDesiredSkillsQuery,\n} = skillsApiSlice;\n","import { AiAccountService, CredentialsService } from \"@iblai/iblai-api\";\nimport { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\n\nimport { buildEndpointFromAxdService } from \"../utils\";\n\nexport const credentialsApiSlice = createApi({\n reducerPath: \"credentialsApiSlice\",\n baseQuery: fakeBaseQuery(),\n endpoints: (builder) => ({\n getCredentials: builder.query({\n ...buildEndpointFromAxdService(\n AiAccountService.aiAccountOrgsIntegrationCredentialRetrieve,\n ),\n }),\n getUserCredentials: builder.query({\n ...buildEndpointFromAxdService(\n CredentialsService.credentialsOrgsUsersAssertionsRetrieve,\n ),\n }),\n }),\n});\n\nexport const {\n useGetCredentialsQuery,\n useLazyGetCredentialsQuery,\n useGetUserCredentialsQuery,\n useLazyGetUserCredentialsQuery,\n} = credentialsApiSlice;\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromDmService } from \"../utils\";\nimport { CatalogService } from \"@iblai/iblai-api\";\n\nexport const userInvitationsApiSlice = createApi({\n reducerPath: \"userInvitationsApiSlice\",\n baseQuery: fakeBaseQuery(),\n endpoints: (builder) => ({\n getUserInvitations: builder.query({\n ...buildEndpointFromDmService(\n CatalogService.catalogInvitationsPlatformRetrieve,\n ),\n }),\n createUserInvitation: builder.mutation({\n ...buildEndpointFromDmService(\n CatalogService.catalogInvitationsPlatformCreate,\n ),\n }),\n }),\n});\n\nexport const {\n useGetUserInvitationsQuery,\n useLazyGetUserInvitationsQuery,\n useCreateUserInvitationMutation,\n} = userInvitationsApiSlice;\n","import { createApi, fakeBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { buildEndpointFromAxdService } from \"../utils\";\nimport { AiMentorService } from \"@iblai/iblai-api\";\n\nexport const toolsApiSlice = createApi({\n reducerPath: \"toolsApiSlice\",\n baseQuery: fakeBaseQuery(),\n endpoints: (builder) => ({\n getTools: builder.query({\n ...buildEndpointFromAxdService(\n AiMentorService.aiMentorOrgsUsersMentorsAvailableToolsList,\n ),\n }),\n }),\n});\n\nexport const { useGetToolsQuery, useLazyGetToolsQuery } = toolsApiSlice;\n","import { platformApiSlice } from \"@/features/platform/api-slice\";\nimport { apiKeysApiSlice } from \"@/features/api-keys/api-slice\";\nimport { mentorApiSlice } from \"@/features/mentor/api-slice\";\nimport { tenantApiSlice } from \"@/features/tenant/api-slice\";\nimport { userApiSlice } from \"@/features/user/api-slice\";\nimport { llmsApiSlice } from \"@/features/llms/api-slice\";\nimport { toolsApiSlice } from \"@/features/tools/api-slice\";\nimport { mentorCategoriesApiSlice } from \"@/features/mentor-categories/api-slice\";\nimport { trainingDocumentsApiSlice } from \"@/features/training-documents/api-slice\";\nimport { chatHistoryApiSlice } from \"@/features/chat-history/api-slice\";\nimport { promptsApiSlice } from \"@/features/prompts/api-slice\";\nimport { credentialsApiSlice } from \"@/features/credentials/api-slice\";\nimport { userInvitationsApiSlice } from \"@/features/user-invitations/api-slice\";\nexport const mentorReducer = {\n [mentorApiSlice.reducerPath]: mentorApiSlice.reducer,\n [tenantApiSlice.reducerPath]: tenantApiSlice.reducer,\n [userApiSlice.reducerPath]: userApiSlice.reducer,\n [platformApiSlice.reducerPath]: platformApiSlice.reducer,\n [apiKeysApiSlice.reducerPath]: apiKeysApiSlice.reducer,\n [llmsApiSlice.reducerPath]: llmsApiSlice.reducer,\n [toolsApiSlice.reducerPath]: toolsApiSlice.reducer,\n [mentorCategoriesApiSlice.reducerPath]: mentorCategoriesApiSlice.reducer,\n [trainingDocumentsApiSlice.reducerPath]: trainingDocumentsApiSlice.reducer,\n [chatHistoryApiSlice.reducerPath]: chatHistoryApiSlice.reducer,\n [promptsApiSlice.reducerPath]: promptsApiSlice.reducer,\n [credentialsApiSlice.reducerPath]: credentialsApiSlice.reducer,\n [userInvitationsApiSlice.reducerPath]: userInvitationsApiSlice.reducer,\n};\n\nexport const mentorMiddleware = [\n mentorApiSlice.middleware,\n tenantApiSlice.middleware,\n userApiSlice.middleware,\n platformApiSlice.middleware,\n apiKeysApiSlice.middleware,\n llmsApiSlice.middleware,\n toolsApiSlice.middleware,\n mentorCategoriesApiSlice.middleware,\n trainingDocumentsApiSlice.middleware,\n chatHistoryApiSlice.middleware,\n promptsApiSlice.middleware,\n credentialsApiSlice.middleware,\n userInvitationsApiSlice.middleware,\n];\n","import { StorageService } from \"@/services/StorageService\";\nimport Config from \"@/config\";\nimport { IblDataLayer } from \"@/core\";\n\nexport const initializeDataLayer = (\n dmUrl: string,\n axdUrl: string,\n lmsUrl: string,\n storageService: StorageService,\n): void => {\n IblDataLayer.storage = storageService;\n Config.dmUrl = dmUrl;\n Config.axdUrl = axdUrl;\n Config.lmsUrl = lmsUrl;\n};\n"],"names":["getHeaders","SERVICES","fetchBaseQuery","createApi","fakeBaseQuery"],"mappings":"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B,OAAO;AACP,MAAM,KAAK,EAAE;AACb,QAAQ,SAAS,EAAE,OAAO;AAC1B,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,kBAAkB,EAAE,cAAc;AAC1C,QAAQ,mBAAmB,EAAE,eAAe;AAC5C,QAAQ,gBAAgB,EAAE,aAAa;AACvC,QAAQ,uBAAuB,EAAE,mBAAmB;AACpD,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,UAAU,EAAE;AACpB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qCAAqC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACzE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,4DAA4D;AACvE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,uCAAuC,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AAClE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qCAAqC,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AAC7E,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,4CAA4C,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACpF,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,OAAO;AACrB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,sCAAsC,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AACjE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,C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AuC,CAAC,KAAK,EAAE;AACxD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,0CAA0C;AACrD,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,EAAE;AACjB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,2CAA2C,CAAC;AAC1D,QAAQ,GAAG,EAAE,CAAC,yCAAyC;AACvD;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,sCAAsC,CAAC,WAAW,EAAE;AAC7D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,2CAA2C;AACtD,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE,kBAAkB;AACnC,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,2CAA2C,CAAC;AAC1D,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC;AAC3B,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;AACxB,QAAQ,GAAG,EAAE,CAAC,yCAAyC,CAAC;AACxD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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Q,cAAc,EAAE,WAAW;AACnC,QAAQ,yBAAyB,EAAE,qBAAqB;AACxD,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,2CAA2C,CAAC;AAC1D,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC;AAC3B,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;AACxB,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,kCAAkC,CAAC,WAAW,EAAE;AACzD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,uCAAuC;AAClD,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE,kBAAkB;AACnC,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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E,CAAC,gBAAgB;AAC9B;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,8BAA8B,GAAG;AAC1C,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,4BAA4B,GAAG;AACxC,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,oCAAoC,GAAG;AAChD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qCAAqC,CAAC,KAAK,EAAE;AACtD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,+CAA+C;AAC1D,MAAM,IAAI,EAAE;AACZ,QAAQ,OAAO,EAAE;AACjB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,+BAA+B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I,EAAE,EAAE;AAChB,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,eAAe,EAAE,YAAY;AACrC,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,UAAU,EAAE;AACpB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,4BAA4B,GAAG;AACxC,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,gCAAgC,CAAC,QAAQ,EAAE;AACpD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,mCAAmC;AAC9C,MAAM,KAAK,EAAE;AACb,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAQ,GAAG,EAAE,CAAC,gBAAgB;AAC9B;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,gCAAgC,GAAG;AAC5C,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,iCAAiC,GAAG;AAC7C,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,6BAA6B,GAAG;AACzC,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,iCAAiC,CAAC,UAAU,EAAE;AACvD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,oCAAoC;AAC/C,MAAM,KAAK,EAAE;AACb,QAAQ,aAAa,EAAE;AACvB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAQ,GAAG,EAAE,CAAC,gBAAgB;AAC9B;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,iCAAiC,GAAG;AAC7C,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,kCAAkC,GAAG;AAC9C,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;AACpG,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,qBAAqB;AAChC,MAAM,KAAK,EAAE;AACb,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,MAAM,EAAE,IAAI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;AACxC,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,6BAA6B,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,+BAA+B;AAC1C,MAAM,KAAK,EAAE;AACb,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,UAAU,EAAE;AACpB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,+BAA+B;AAC1C,MAAM,KAAK,EAAE;AACb,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,UAAU,EAAE;AACpB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,sCAAsC,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AAC/H,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,yCAAyC;AACpD,MAAM,KAAK,EAAE;AACb,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,oCAAoC,CAAC,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AAC1I,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,yCAAyC;AACpD,MAAM,KAAK,EAAE;AACb,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE,kBAAkB;AACnC,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qCAAqC,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AACpJ,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE,yCAAyC;AACpD,MAAM,KAAK,EAAE;AACb,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,eAAe,EAAE;AACzB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qCAAqC,CAAC;AACpD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,wCAAwC,CAAC,WAAW,EAAE;AAC/D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,8CAA8C;AACzD,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE,kBAAkB;AACnC,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,2CAA2C,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE;AACnI,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,+CAA+C;AAC1D,MAAM,KAAK,EAAE;AACb,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,yCAAyC,CAAC,WAAW,EAAE,WAAW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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,uCAAuC,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AAChI,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,0CAA0C;AACrD,MAAM,KAAK,EAAE;AACb,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qCAAqC,CAAC,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;AAC3I,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,0CAA0C;AACrD,MAAM,KAAK,EAAE;AACb,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE,kBAAkB;AACnC,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,oDAAoD,CAAC;AACnE,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACrD,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC;AACnD,QAAQ,GAAG,EAAE,CAAC,qBAAqB;AACnC;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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IAAI;AACpB,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE;AAChB;AACA,KAAK,CAAC;AACN;AACA;;AAEA,MAAM,kBAAkB,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE;AACnD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,8CAA8C;AACzD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AAC9D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,8CAA8C;AACzD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,6BAA6B,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,yDAAyD;AACpE,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACxE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,yDAAyD;AACpE,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,2BAA2B,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;AAC5D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE,yDAAyD;AACpE,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,uCAAuC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;AACxE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,qEAAqE;AAChF,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,oCAAoC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EA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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,kCAAkC,CAAC,GAAG,EAAE,MAAM,EAAE;AACzD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,qDAAqD;AAChE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,gCAAgC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AACpE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,qDAAqD;AAChE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,mCAAmC,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE;AAC7D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,sDAAsD;AACjE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,KAAK,EAAE;AACb,QAAQ,GAAG,EAAE;AACb;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,iCAAiC,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;AACxE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,sDAAsD;AACjE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,KAAK,EAAE;AACb,QAAQ,GAAG,EAAE;AACb,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,oCAAoC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;AACrE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,iCAAiC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AAC/E,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,kCAAkC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;AACnE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,0CAA0C,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;AAC9E,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,gEAAgE;AAC3E,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAA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C1B,QAAQ,GAAG,EAAE,CAAC,YAAY;AAC1B;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qBAAqB,CAAC,gBAAgB,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;AAC1X,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,sBAAsB;AACjC,MAAM,KAAK,EAAE;AACb,QAAQ,oBAAoB,EAAE,gBAAgB;AAC9C,QAAQ,cAAc,EAAE,YAAY;AACpC,QAAQ,aAAa,EAAE,WAAW;AAClC,QAAQ,SAAS,EAAE,OAAO;AAC1B,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,UAAU,EAAE,OAAO;AAC3B,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,WAAW,EAAE,SAAS;AAC9B,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,eAAe,EAAE,YAAY;AACrC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,UAAU,EAAE,OAAO;AAC3B,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,SAAS,EAAE,OAAO;AAC1B,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,cAAc,EAAE;AACxB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC;AAC1B,QAAQ,GAAG,EAAE,CAAC,YAAY;AAC1B;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC5J,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,sBAAsB;AACjC,MAAM,KAAK,EAAE;AACb,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,UAAU,EAAE,OAAO;AAC3B,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,OAAO,EAAE,KAAK;AACt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I;AACpB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,cAAc,EAAE;AACxB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,qBAAqB,CAAC,YAAY,GAAG,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;AAC/K,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,sBAAsB;AACjC,MAAM,KAAK,EAAE;AACb,QAAQ,cAAc,EAAE,YAAY;AACpC,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,cAAc,EAAE,WAAW;AACnC,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,iBAAiB,EAAE,cAAc;AACzC,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC;AAC1B,QAAQ,GAAG,EAAE,CAAC,YAAY;AAC1B;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,GAAG,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;AACtR,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,gDAAgD;AAC3D,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,UAAU,EAAE;AACpB,OAAO;AACP,MAAM,KAAK,EAAE;AACb,QAAQ,YAAY,EAAE,UAAU;AAChC,QAAQ,mBAAmB,EAAE,eAAe;AAC5C,QAAQ,2BAA2B,EAAE,qBAAqB;AAC1D,QAAQ,wBAAwB,EAAE,oBAAoB;AACtD,QAAQ,yBAAyB,EAAE,qBAAqB;AACxD,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,sBAAsB,EAAE,iBAAiB;AACjD,QAAQ,uBAAuB,EAAE,kBAAkB;AACnD,QAAQ,wBAAwB,EAAE,kBAAkB;AACpD,QAAQ,uBAAuB,EAAE,kBAAkB;AACnD,QAAQ,qBAAqB,EAAE;AAC/B,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC;AAC1B,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;AACxB,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;AACxB,QAAQ,GAAG,EAAE,CAAC,YAAY;AAC1B;AACA,KAAK,CAAC;AACN;AACA;;AAsRA,MAAM,aAAa,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,oBAAoB,CAAC,GAAG,EAAE;AACnC,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,+BAA+B;AAC1C,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE;AACf;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,kCAAkC,CAAC,GAAG,EAAE,OAAO,EAAE;AAC1D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,sDAAsD;AACjE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,UAAU,EAAE;AACpB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,wBAAwB,CAAC,GAAG,EAAE,SAAS,EAAE;AAClD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,6CAA6C;AACxD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,YAAY,EAAE;AACtB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,8BAA8B,CAAC,GAAG,EAAE;AAC7C,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,2CAA2C;AACtD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE;AACf;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,kCAAkC,CAAC,GAAG,EAAE;AACjD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,2CAA2C;AACtD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE;AACf;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,gCAAgC,CAAC,GAAG,EAAE,WAAW,EAAE;AAC5D,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,GAAG,EAAE,2CAA2C;AACtD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE;AACf,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,uCAAuC,CAAC,GAAG,EAAE,WAAW,EAAE;AACnE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,OAAO;AACrB,MAAM,GAAG,EAAE,2CAA2C;AACtD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE;AACf,OAAO;AACP,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,iCAAiC,CAAC,GAAG,EAAE;AAChD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,GAAG,EAAE,2CAA2C;AACtD,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE;AACf;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE;AACpD,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,gDAAgD;AAC3D,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,0CAA0C,CAAC,GAAG,EAAE,MAAM,EAAE;AACjE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,+DAA+D;AAC1E,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,4CAA4C,CAAC,GAAG,EAAE,MAAM,EAAE;AACnE,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,GAAG,EAAE,iEAAiE;AAC5E,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,SAAS,EAAE;AACnB;AACA,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","x_google_ignoreList":[0]}