@instructure/athena-api-client 4.5.2 → 4.7.0

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 (82) hide show
  1. package/README.md +10 -0
  2. package/dist/apis/AdminApi.d.ts +29 -1
  3. package/dist/apis/AdminApi.js +79 -0
  4. package/dist/esm/apis/AdminApi.d.ts +29 -1
  5. package/dist/esm/apis/AdminApi.js +80 -1
  6. package/dist/esm/models/AdminClaimConceptMediaReviewNotificationsRequest.d.ts +32 -0
  7. package/dist/esm/models/AdminClaimConceptMediaReviewNotificationsRequest.js +41 -0
  8. package/dist/esm/models/AdminConceptDiagram.d.ts +15 -2
  9. package/dist/esm/models/AdminConceptDiagram.js +9 -0
  10. package/dist/esm/models/AdminConceptDiagramDetail.d.ts +15 -2
  11. package/dist/esm/models/AdminConceptDiagramDetail.js +9 -0
  12. package/dist/esm/models/AdminConceptImage.d.ts +15 -2
  13. package/dist/esm/models/AdminConceptImage.js +9 -0
  14. package/dist/esm/models/AdminConceptImageDetail.d.ts +15 -2
  15. package/dist/esm/models/AdminConceptImageDetail.js +9 -0
  16. package/dist/esm/models/AdminConceptMediaAgentReview.d.ts +131 -0
  17. package/dist/esm/models/AdminConceptMediaAgentReview.js +117 -0
  18. package/dist/esm/models/AdminConceptMediaReviewDurationStats.d.ts +50 -0
  19. package/dist/esm/models/AdminConceptMediaReviewDurationStats.js +55 -0
  20. package/dist/esm/models/AdminConceptMediaReviewKindStats.d.ts +89 -0
  21. package/dist/esm/models/AdminConceptMediaReviewKindStats.js +83 -0
  22. package/dist/esm/models/AdminConceptMediaReviewNotification.d.ts +123 -0
  23. package/dist/esm/models/AdminConceptMediaReviewNotification.js +111 -0
  24. package/dist/esm/models/AdminConceptMediaReviewNotifications.d.ts +33 -0
  25. package/dist/esm/models/AdminConceptMediaReviewNotifications.js +44 -0
  26. package/dist/esm/models/AdminConceptMediaReviewStats.d.ts +51 -0
  27. package/dist/esm/models/AdminConceptMediaReviewStats.js +56 -0
  28. package/dist/esm/models/AdminShownConceptDiagram.d.ts +15 -2
  29. package/dist/esm/models/AdminShownConceptDiagram.js +9 -0
  30. package/dist/esm/models/AdminShownConceptImage.d.ts +15 -2
  31. package/dist/esm/models/AdminShownConceptImage.js +9 -0
  32. package/dist/esm/models/ConceptMediaFlagResult.d.ts +16 -0
  33. package/dist/esm/models/ConceptMediaFlagResult.js +13 -0
  34. package/dist/esm/models/ConceptMediaReviewIssue.d.ts +64 -0
  35. package/dist/esm/models/ConceptMediaReviewIssue.js +69 -0
  36. package/dist/esm/models/StudyObjective.d.ts +6 -0
  37. package/dist/esm/models/StudyObjective.js +4 -0
  38. package/dist/esm/models/StudyObjectiveConceptAttachment.d.ts +14 -0
  39. package/dist/esm/models/StudyObjectiveConceptAttachment.js +11 -0
  40. package/dist/esm/models/UpcomingStudyObjective.d.ts +6 -0
  41. package/dist/esm/models/UpcomingStudyObjective.js +4 -0
  42. package/dist/esm/models/index.d.ts +8 -0
  43. package/dist/esm/models/index.js +8 -0
  44. package/dist/models/AdminClaimConceptMediaReviewNotificationsRequest.d.ts +32 -0
  45. package/dist/models/AdminClaimConceptMediaReviewNotificationsRequest.js +48 -0
  46. package/dist/models/AdminConceptDiagram.d.ts +15 -2
  47. package/dist/models/AdminConceptDiagram.js +9 -0
  48. package/dist/models/AdminConceptDiagramDetail.d.ts +15 -2
  49. package/dist/models/AdminConceptDiagramDetail.js +9 -0
  50. package/dist/models/AdminConceptImage.d.ts +15 -2
  51. package/dist/models/AdminConceptImage.js +9 -0
  52. package/dist/models/AdminConceptImageDetail.d.ts +15 -2
  53. package/dist/models/AdminConceptImageDetail.js +9 -0
  54. package/dist/models/AdminConceptMediaAgentReview.d.ts +131 -0
  55. package/dist/models/AdminConceptMediaAgentReview.js +125 -0
  56. package/dist/models/AdminConceptMediaReviewDurationStats.d.ts +50 -0
  57. package/dist/models/AdminConceptMediaReviewDurationStats.js +62 -0
  58. package/dist/models/AdminConceptMediaReviewKindStats.d.ts +89 -0
  59. package/dist/models/AdminConceptMediaReviewKindStats.js +91 -0
  60. package/dist/models/AdminConceptMediaReviewNotification.d.ts +123 -0
  61. package/dist/models/AdminConceptMediaReviewNotification.js +119 -0
  62. package/dist/models/AdminConceptMediaReviewNotifications.d.ts +33 -0
  63. package/dist/models/AdminConceptMediaReviewNotifications.js +51 -0
  64. package/dist/models/AdminConceptMediaReviewStats.d.ts +51 -0
  65. package/dist/models/AdminConceptMediaReviewStats.js +63 -0
  66. package/dist/models/AdminShownConceptDiagram.d.ts +15 -2
  67. package/dist/models/AdminShownConceptDiagram.js +9 -0
  68. package/dist/models/AdminShownConceptImage.d.ts +15 -2
  69. package/dist/models/AdminShownConceptImage.js +9 -0
  70. package/dist/models/ConceptMediaFlagResult.d.ts +16 -0
  71. package/dist/models/ConceptMediaFlagResult.js +14 -0
  72. package/dist/models/ConceptMediaReviewIssue.d.ts +64 -0
  73. package/dist/models/ConceptMediaReviewIssue.js +77 -0
  74. package/dist/models/StudyObjective.d.ts +6 -0
  75. package/dist/models/StudyObjective.js +4 -0
  76. package/dist/models/StudyObjectiveConceptAttachment.d.ts +14 -0
  77. package/dist/models/StudyObjectiveConceptAttachment.js +12 -1
  78. package/dist/models/UpcomingStudyObjective.d.ts +6 -0
  79. package/dist/models/UpcomingStudyObjective.js +4 -0
  80. package/dist/models/index.d.ts +8 -0
  81. package/dist/models/index.js +8 -0
  82. package/package.json +1 -1
package/README.md CHANGED
@@ -57,6 +57,7 @@ All URIs are relative to *http://localhost:3000*
57
57
  *AccountsApi* | [**createAccount**](docs/AccountsApi.md#createaccountoperation) | **POST** /api/v1/accounts | Create a new account
58
58
  *AccountsApi* | [**listAccounts**](docs/AccountsApi.md#listaccounts) | **GET** /api/v1/accounts | List all accounts
59
59
  *AccountsApi* | [**updateAccount**](docs/AccountsApi.md#updateaccount) | **PATCH** /api/v1/accounts/{id} | Update an account
60
+ *AdminApi* | [**adminClaimConceptMediaReviewNotifications**](docs/AdminApi.md#adminclaimconceptmediareviewnotificationsoperation) | **POST** /api/v1/admin/concept-media-reviews/notifications/claim | Claim agent-flagged media for the admin notification email
60
61
  *AdminApi* | [**adminDeleteConceptDiagram**](docs/AdminApi.md#admindeleteconceptdiagram) | **POST** /api/v1/admin/concept-diagrams/{diagramId}/delete | Soft-delete a concept diagram
61
62
  *AdminApi* | [**adminDeleteConceptImage**](docs/AdminApi.md#admindeleteconceptimage) | **POST** /api/v1/admin/concept-images/{imageId}/delete | Soft-delete a concept image
62
63
  *AdminApi* | [**adminGenerateConceptDiagram**](docs/AdminApi.md#admingenerateconceptdiagramoperation) | **POST** /api/v1/admin/concept-diagrams | Enqueue a hidden draft diagram for a concept
@@ -69,6 +70,7 @@ All URIs are relative to *http://localhost:3000*
69
70
  *AdminApi* | [**adminGetConceptDiagram**](docs/AdminApi.md#admingetconceptdiagram) | **GET** /api/v1/admin/concept-diagrams/{diagramId} | Get a library concept diagram in any state
70
71
  *AdminApi* | [**adminGetConceptImage**](docs/AdminApi.md#admingetconceptimage) | **GET** /api/v1/admin/concept-images/{imageId} | Get a library concept image in any state
71
72
  *AdminApi* | [**adminGetConceptMediaJob**](docs/AdminApi.md#admingetconceptmediajob) | **GET** /api/v1/admin/concept-media-jobs/{jobId} | Get an admin concept media generation job
73
+ *AdminApi* | [**adminGetConceptMediaReviewStats**](docs/AdminApi.md#admingetconceptmediareviewstats) | **GET** /api/v1/admin/concept-media-reviews/stats | Concept media reviewer stats over a window
72
74
  *AdminApi* | [**adminGetQuizSessionSummary**](docs/AdminApi.md#admingetquizsessionsummary) | **GET** /api/v1/admin/quiz-sessions/{sessionId}/summary | Get quiz session summary for any session within the account
73
75
  *AdminApi* | [**adminGetStudyObjectiveSummary**](docs/AdminApi.md#admingetstudyobjectivesummary) | **GET** /api/v1/admin/study-objectives/summary | Aggregate study-objective statistics across all account users
74
76
  *AdminApi* | [**adminGetUserChats**](docs/AdminApi.md#admingetuserchats) | **GET** /api/v1/admin/users/{externalId}/chats | Get chats with stats for a user
@@ -248,16 +250,23 @@ All URIs are relative to *http://localhost:3000*
248
250
  - [AdminChatAnalysis](docs/AdminChatAnalysis.md)
249
251
  - [AdminChatCanvasUsage](docs/AdminChatCanvasUsage.md)
250
252
  - [AdminChatWithStats](docs/AdminChatWithStats.md)
253
+ - [AdminClaimConceptMediaReviewNotificationsRequest](docs/AdminClaimConceptMediaReviewNotificationsRequest.md)
251
254
  - [AdminCohortStats](docs/AdminCohortStats.md)
252
255
  - [AdminConceptDiagram](docs/AdminConceptDiagram.md)
253
256
  - [AdminConceptDiagramDetail](docs/AdminConceptDiagramDetail.md)
254
257
  - [AdminConceptImage](docs/AdminConceptImage.md)
255
258
  - [AdminConceptImageDetail](docs/AdminConceptImageDetail.md)
256
259
  - [AdminConceptMediaActor](docs/AdminConceptMediaActor.md)
260
+ - [AdminConceptMediaAgentReview](docs/AdminConceptMediaAgentReview.md)
257
261
  - [AdminConceptMediaConcept](docs/AdminConceptMediaConcept.md)
258
262
  - [AdminConceptMediaHistoryEntry](docs/AdminConceptMediaHistoryEntry.md)
259
263
  - [AdminConceptMediaJob](docs/AdminConceptMediaJob.md)
260
264
  - [AdminConceptMediaPromptSuggestion](docs/AdminConceptMediaPromptSuggestion.md)
265
+ - [AdminConceptMediaReviewDurationStats](docs/AdminConceptMediaReviewDurationStats.md)
266
+ - [AdminConceptMediaReviewKindStats](docs/AdminConceptMediaReviewKindStats.md)
267
+ - [AdminConceptMediaReviewNotification](docs/AdminConceptMediaReviewNotification.md)
268
+ - [AdminConceptMediaReviewNotifications](docs/AdminConceptMediaReviewNotifications.md)
269
+ - [AdminConceptMediaReviewStats](docs/AdminConceptMediaReviewStats.md)
261
270
  - [AdminConceptMediaRevision](docs/AdminConceptMediaRevision.md)
262
271
  - [AdminConceptSearchResult](docs/AdminConceptSearchResult.md)
263
272
  - [AdminExchangeChat](docs/AdminExchangeChat.md)
@@ -333,6 +342,7 @@ All URIs are relative to *http://localhost:3000*
333
342
  - [ConceptDiagramGalleryItem](docs/ConceptDiagramGalleryItem.md)
334
343
  - [ConceptImageGalleryItem](docs/ConceptImageGalleryItem.md)
335
344
  - [ConceptMediaFlagResult](docs/ConceptMediaFlagResult.md)
345
+ - [ConceptMediaReviewIssue](docs/ConceptMediaReviewIssue.md)
336
346
  - [CreateAccountRequest](docs/CreateAccountRequest.md)
337
347
  - [CreateChatRequest](docs/CreateChatRequest.md)
338
348
  - [CreateFeatureDto](docs/CreateFeatureDto.md)
@@ -10,7 +10,11 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime';
13
- import type { AdminChat, AdminChatAnalysis, AdminChatCanvasUsage, AdminChatWithStats, AdminCohortStats, AdminConceptDiagramDetail, AdminConceptImageDetail, AdminConceptMediaJob, AdminConceptMediaPromptSuggestion, AdminConceptSearchResult, AdminGenerateConceptDiagramRequest, AdminGenerateConceptImageRequest, AdminPaginatedActiveStreaks, AdminPaginatedChats, AdminPaginatedConceptDiagrams, AdminPaginatedConceptImages, AdminPaginatedLastExchanges, AdminPaginatedQuizParticipantSessions, AdminPaginatedQuizSessions, AdminPaginatedStudyObjectiveUserCounts, AdminPaginatedStudyObjectives, AdminPaginatedTaxonomyEnrollments, AdminRegenerateConceptDiagramRequest, AdminRegenerateConceptImageRequest, AdminResetLearningDataResponse, AdminReviseConceptDiagramRequest, AdminReviseConceptImageRequest, AdminShowConceptMediaRequest, AdminShownConceptDiagram, AdminShownConceptImage, AdminStreak, AdminStudyObjectiveSummary, AdminSuggestConceptMediaPromptRequest, AdminTopConcept, AdminTriggerAnalysisResponse, AdminUpdateChatRequest, AdminUserActivity, AdminUserActivityTotals, AdminUserEngagement, AdminUsersActivityRequest, AdminUsersActivityTotalsRequest, QuizSessionSummary } from '../models/index';
13
+ import type { AdminChat, AdminChatAnalysis, AdminChatCanvasUsage, AdminChatWithStats, AdminClaimConceptMediaReviewNotificationsRequest, AdminCohortStats, AdminConceptDiagramDetail, AdminConceptImageDetail, AdminConceptMediaJob, AdminConceptMediaPromptSuggestion, AdminConceptMediaReviewNotifications, AdminConceptMediaReviewStats, AdminConceptSearchResult, AdminGenerateConceptDiagramRequest, AdminGenerateConceptImageRequest, AdminPaginatedActiveStreaks, AdminPaginatedChats, AdminPaginatedConceptDiagrams, AdminPaginatedConceptImages, AdminPaginatedLastExchanges, AdminPaginatedQuizParticipantSessions, AdminPaginatedQuizSessions, AdminPaginatedStudyObjectiveUserCounts, AdminPaginatedStudyObjectives, AdminPaginatedTaxonomyEnrollments, AdminRegenerateConceptDiagramRequest, AdminRegenerateConceptImageRequest, AdminResetLearningDataResponse, AdminReviseConceptDiagramRequest, AdminReviseConceptImageRequest, AdminShowConceptMediaRequest, AdminShownConceptDiagram, AdminShownConceptImage, AdminStreak, AdminStudyObjectiveSummary, AdminSuggestConceptMediaPromptRequest, AdminTopConcept, AdminTriggerAnalysisResponse, AdminUpdateChatRequest, AdminUserActivity, AdminUserActivityTotals, AdminUserEngagement, AdminUsersActivityRequest, AdminUsersActivityTotalsRequest, QuizSessionSummary } from '../models/index';
14
+ export interface AdminClaimConceptMediaReviewNotificationsOperationRequest {
15
+ xUserId: string;
16
+ adminClaimConceptMediaReviewNotificationsRequest?: AdminClaimConceptMediaReviewNotificationsRequest;
17
+ }
14
18
  export interface AdminDeleteConceptDiagramRequest {
15
19
  xUserId: string;
16
20
  diagramId: string;
@@ -60,6 +64,10 @@ export interface AdminGetConceptMediaJobRequest {
60
64
  xUserId: string;
61
65
  jobId: string;
62
66
  }
67
+ export interface AdminGetConceptMediaReviewStatsRequest {
68
+ xUserId: string;
69
+ days?: number;
70
+ }
63
71
  export interface AdminGetQuizSessionSummaryRequest {
64
72
  xUserId: string;
65
73
  sessionId: string;
@@ -245,6 +253,16 @@ export interface AdminUpdateChatOperationRequest {
245
253
  *
246
254
  */
247
255
  export declare class AdminApi extends runtime.BaseAPI {
256
+ /**
257
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
258
+ * Claim agent-flagged media for the admin notification email
259
+ */
260
+ adminClaimConceptMediaReviewNotificationsRaw(requestParameters: AdminClaimConceptMediaReviewNotificationsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AdminConceptMediaReviewNotifications>>;
261
+ /**
262
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
263
+ * Claim agent-flagged media for the admin notification email
264
+ */
265
+ adminClaimConceptMediaReviewNotifications(requestParameters: AdminClaimConceptMediaReviewNotificationsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AdminConceptMediaReviewNotifications>;
248
266
  /**
249
267
  * Removes the diagram from every learner read and from the default admin list. The row is kept. Idempotent. Applies to later reads only: a diagram already rendered in an open chat stays until the chat is reloaded.
250
268
  * Soft-delete a concept diagram
@@ -357,6 +375,16 @@ export declare class AdminApi extends runtime.BaseAPI {
357
375
  * Get an admin concept media generation job
358
376
  */
359
377
  adminGetConceptMediaJob(requestParameters: AdminGetConceptMediaJobRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AdminConceptMediaJob>;
378
+ /**
379
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
380
+ * Concept media reviewer stats over a window
381
+ */
382
+ adminGetConceptMediaReviewStatsRaw(requestParameters: AdminGetConceptMediaReviewStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AdminConceptMediaReviewStats>>;
383
+ /**
384
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
385
+ * Concept media reviewer stats over a window
386
+ */
387
+ adminGetConceptMediaReviewStats(requestParameters: AdminGetConceptMediaReviewStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AdminConceptMediaReviewStats>;
360
388
  /**
361
389
  * Returns the session summary (quiz details, questions, responses, score) for any quiz session belonging to a user within the caller\'s account. Intended for admin-style views in calling applications; authorization on whether the calling user is allowed to act as an admin is the calling application\'s responsibility - this endpoint only enforces account isolation. Unlike the per-user `getQuizSessionSummary` endpoint, this endpoint does not gate on the `enhanced-quizzing` feature flag; an admin can read any historical session in their account regardless of whether the chat owner currently has the feature.
362
390
  * Get quiz session summary for any session within the account
@@ -29,6 +29,45 @@ const index_1 = require("../models/index");
29
29
  *
30
30
  */
31
31
  class AdminApi extends runtime.BaseAPI {
32
+ /**
33
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
34
+ * Claim agent-flagged media for the admin notification email
35
+ */
36
+ adminClaimConceptMediaReviewNotificationsRaw(requestParameters, initOverrides) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ if (requestParameters['xUserId'] == null) {
39
+ throw new runtime.RequiredError('xUserId', 'Required parameter "xUserId" was null or undefined when calling adminClaimConceptMediaReviewNotifications().');
40
+ }
41
+ const queryParameters = {};
42
+ const headerParameters = {};
43
+ headerParameters['Content-Type'] = 'application/json';
44
+ if (requestParameters['xUserId'] != null) {
45
+ headerParameters['X-User-Id'] = String(requestParameters['xUserId']);
46
+ }
47
+ if (this.configuration && this.configuration.apiKey) {
48
+ headerParameters["X-Auth-Token"] = yield this.configuration.apiKey("X-Auth-Token"); // AuthToken authentication
49
+ }
50
+ let urlPath = `/api/v1/admin/concept-media-reviews/notifications/claim`;
51
+ const response = yield this.request({
52
+ path: urlPath,
53
+ method: 'POST',
54
+ headers: headerParameters,
55
+ query: queryParameters,
56
+ body: (0, index_1.AdminClaimConceptMediaReviewNotificationsRequestToJSON)(requestParameters['adminClaimConceptMediaReviewNotificationsRequest']),
57
+ }, initOverrides);
58
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.AdminConceptMediaReviewNotificationsFromJSON)(jsonValue));
59
+ });
60
+ }
61
+ /**
62
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
63
+ * Claim agent-flagged media for the admin notification email
64
+ */
65
+ adminClaimConceptMediaReviewNotifications(requestParameters, initOverrides) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ const response = yield this.adminClaimConceptMediaReviewNotificationsRaw(requestParameters, initOverrides);
68
+ return yield response.value();
69
+ });
70
+ }
32
71
  /**
33
72
  * Removes the diagram from every learner read and from the default admin list. The row is kept. Idempotent. Applies to later reads only: a diagram already rendered in an open chat stays until the chat is reloaded.
34
73
  * Soft-delete a concept diagram
@@ -523,6 +562,46 @@ class AdminApi extends runtime.BaseAPI {
523
562
  return yield response.value();
524
563
  });
525
564
  }
565
+ /**
566
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
567
+ * Concept media reviewer stats over a window
568
+ */
569
+ adminGetConceptMediaReviewStatsRaw(requestParameters, initOverrides) {
570
+ return __awaiter(this, void 0, void 0, function* () {
571
+ if (requestParameters['xUserId'] == null) {
572
+ throw new runtime.RequiredError('xUserId', 'Required parameter "xUserId" was null or undefined when calling adminGetConceptMediaReviewStats().');
573
+ }
574
+ const queryParameters = {};
575
+ if (requestParameters['days'] != null) {
576
+ queryParameters['days'] = requestParameters['days'];
577
+ }
578
+ const headerParameters = {};
579
+ if (requestParameters['xUserId'] != null) {
580
+ headerParameters['X-User-Id'] = String(requestParameters['xUserId']);
581
+ }
582
+ if (this.configuration && this.configuration.apiKey) {
583
+ headerParameters["X-Auth-Token"] = yield this.configuration.apiKey("X-Auth-Token"); // AuthToken authentication
584
+ }
585
+ let urlPath = `/api/v1/admin/concept-media-reviews/stats`;
586
+ const response = yield this.request({
587
+ path: urlPath,
588
+ method: 'GET',
589
+ headers: headerParameters,
590
+ query: queryParameters,
591
+ }, initOverrides);
592
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.AdminConceptMediaReviewStatsFromJSON)(jsonValue));
593
+ });
594
+ }
595
+ /**
596
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
597
+ * Concept media reviewer stats over a window
598
+ */
599
+ adminGetConceptMediaReviewStats(requestParameters, initOverrides) {
600
+ return __awaiter(this, void 0, void 0, function* () {
601
+ const response = yield this.adminGetConceptMediaReviewStatsRaw(requestParameters, initOverrides);
602
+ return yield response.value();
603
+ });
604
+ }
526
605
  /**
527
606
  * Returns the session summary (quiz details, questions, responses, score) for any quiz session belonging to a user within the caller\'s account. Intended for admin-style views in calling applications; authorization on whether the calling user is allowed to act as an admin is the calling application\'s responsibility - this endpoint only enforces account isolation. Unlike the per-user `getQuizSessionSummary` endpoint, this endpoint does not gate on the `enhanced-quizzing` feature flag; an admin can read any historical session in their account regardless of whether the chat owner currently has the feature.
528
607
  * Get quiz session summary for any session within the account
@@ -10,7 +10,11 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime';
13
- import type { AdminChat, AdminChatAnalysis, AdminChatCanvasUsage, AdminChatWithStats, AdminCohortStats, AdminConceptDiagramDetail, AdminConceptImageDetail, AdminConceptMediaJob, AdminConceptMediaPromptSuggestion, AdminConceptSearchResult, AdminGenerateConceptDiagramRequest, AdminGenerateConceptImageRequest, AdminPaginatedActiveStreaks, AdminPaginatedChats, AdminPaginatedConceptDiagrams, AdminPaginatedConceptImages, AdminPaginatedLastExchanges, AdminPaginatedQuizParticipantSessions, AdminPaginatedQuizSessions, AdminPaginatedStudyObjectiveUserCounts, AdminPaginatedStudyObjectives, AdminPaginatedTaxonomyEnrollments, AdminRegenerateConceptDiagramRequest, AdminRegenerateConceptImageRequest, AdminResetLearningDataResponse, AdminReviseConceptDiagramRequest, AdminReviseConceptImageRequest, AdminShowConceptMediaRequest, AdminShownConceptDiagram, AdminShownConceptImage, AdminStreak, AdminStudyObjectiveSummary, AdminSuggestConceptMediaPromptRequest, AdminTopConcept, AdminTriggerAnalysisResponse, AdminUpdateChatRequest, AdminUserActivity, AdminUserActivityTotals, AdminUserEngagement, AdminUsersActivityRequest, AdminUsersActivityTotalsRequest, QuizSessionSummary } from '../models/index';
13
+ import type { AdminChat, AdminChatAnalysis, AdminChatCanvasUsage, AdminChatWithStats, AdminClaimConceptMediaReviewNotificationsRequest, AdminCohortStats, AdminConceptDiagramDetail, AdminConceptImageDetail, AdminConceptMediaJob, AdminConceptMediaPromptSuggestion, AdminConceptMediaReviewNotifications, AdminConceptMediaReviewStats, AdminConceptSearchResult, AdminGenerateConceptDiagramRequest, AdminGenerateConceptImageRequest, AdminPaginatedActiveStreaks, AdminPaginatedChats, AdminPaginatedConceptDiagrams, AdminPaginatedConceptImages, AdminPaginatedLastExchanges, AdminPaginatedQuizParticipantSessions, AdminPaginatedQuizSessions, AdminPaginatedStudyObjectiveUserCounts, AdminPaginatedStudyObjectives, AdminPaginatedTaxonomyEnrollments, AdminRegenerateConceptDiagramRequest, AdminRegenerateConceptImageRequest, AdminResetLearningDataResponse, AdminReviseConceptDiagramRequest, AdminReviseConceptImageRequest, AdminShowConceptMediaRequest, AdminShownConceptDiagram, AdminShownConceptImage, AdminStreak, AdminStudyObjectiveSummary, AdminSuggestConceptMediaPromptRequest, AdminTopConcept, AdminTriggerAnalysisResponse, AdminUpdateChatRequest, AdminUserActivity, AdminUserActivityTotals, AdminUserEngagement, AdminUsersActivityRequest, AdminUsersActivityTotalsRequest, QuizSessionSummary } from '../models/index';
14
+ export interface AdminClaimConceptMediaReviewNotificationsOperationRequest {
15
+ xUserId: string;
16
+ adminClaimConceptMediaReviewNotificationsRequest?: AdminClaimConceptMediaReviewNotificationsRequest;
17
+ }
14
18
  export interface AdminDeleteConceptDiagramRequest {
15
19
  xUserId: string;
16
20
  diagramId: string;
@@ -60,6 +64,10 @@ export interface AdminGetConceptMediaJobRequest {
60
64
  xUserId: string;
61
65
  jobId: string;
62
66
  }
67
+ export interface AdminGetConceptMediaReviewStatsRequest {
68
+ xUserId: string;
69
+ days?: number;
70
+ }
63
71
  export interface AdminGetQuizSessionSummaryRequest {
64
72
  xUserId: string;
65
73
  sessionId: string;
@@ -245,6 +253,16 @@ export interface AdminUpdateChatOperationRequest {
245
253
  *
246
254
  */
247
255
  export declare class AdminApi extends runtime.BaseAPI {
256
+ /**
257
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
258
+ * Claim agent-flagged media for the admin notification email
259
+ */
260
+ adminClaimConceptMediaReviewNotificationsRaw(requestParameters: AdminClaimConceptMediaReviewNotificationsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AdminConceptMediaReviewNotifications>>;
261
+ /**
262
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
263
+ * Claim agent-flagged media for the admin notification email
264
+ */
265
+ adminClaimConceptMediaReviewNotifications(requestParameters: AdminClaimConceptMediaReviewNotificationsOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AdminConceptMediaReviewNotifications>;
248
266
  /**
249
267
  * Removes the diagram from every learner read and from the default admin list. The row is kept. Idempotent. Applies to later reads only: a diagram already rendered in an open chat stays until the chat is reloaded.
250
268
  * Soft-delete a concept diagram
@@ -357,6 +375,16 @@ export declare class AdminApi extends runtime.BaseAPI {
357
375
  * Get an admin concept media generation job
358
376
  */
359
377
  adminGetConceptMediaJob(requestParameters: AdminGetConceptMediaJobRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AdminConceptMediaJob>;
378
+ /**
379
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
380
+ * Concept media reviewer stats over a window
381
+ */
382
+ adminGetConceptMediaReviewStatsRaw(requestParameters: AdminGetConceptMediaReviewStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AdminConceptMediaReviewStats>>;
383
+ /**
384
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
385
+ * Concept media reviewer stats over a window
386
+ */
387
+ adminGetConceptMediaReviewStats(requestParameters: AdminGetConceptMediaReviewStatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AdminConceptMediaReviewStats>;
360
388
  /**
361
389
  * Returns the session summary (quiz details, questions, responses, score) for any quiz session belonging to a user within the caller\'s account. Intended for admin-style views in calling applications; authorization on whether the calling user is allowed to act as an admin is the calling application\'s responsibility - this endpoint only enforces account isolation. Unlike the per-user `getQuizSessionSummary` endpoint, this endpoint does not gate on the `enhanced-quizzing` feature flag; an admin can read any historical session in their account regardless of whether the chat owner currently has the feature.
362
390
  * Get quiz session summary for any session within the account
@@ -21,11 +21,50 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
21
21
  });
22
22
  };
23
23
  import * as runtime from '../runtime';
24
- import { AdminChatFromJSON, AdminChatAnalysisFromJSON, AdminChatCanvasUsageFromJSON, AdminChatWithStatsFromJSON, AdminCohortStatsFromJSON, AdminConceptDiagramDetailFromJSON, AdminConceptImageDetailFromJSON, AdminConceptMediaJobFromJSON, AdminConceptMediaPromptSuggestionFromJSON, AdminConceptSearchResultFromJSON, AdminGenerateConceptDiagramRequestToJSON, AdminGenerateConceptImageRequestToJSON, AdminPaginatedActiveStreaksFromJSON, AdminPaginatedChatsFromJSON, AdminPaginatedConceptDiagramsFromJSON, AdminPaginatedConceptImagesFromJSON, AdminPaginatedLastExchangesFromJSON, AdminPaginatedQuizParticipantSessionsFromJSON, AdminPaginatedQuizSessionsFromJSON, AdminPaginatedStudyObjectiveUserCountsFromJSON, AdminPaginatedStudyObjectivesFromJSON, AdminPaginatedTaxonomyEnrollmentsFromJSON, AdminRegenerateConceptDiagramRequestToJSON, AdminRegenerateConceptImageRequestToJSON, AdminResetLearningDataResponseFromJSON, AdminReviseConceptDiagramRequestToJSON, AdminReviseConceptImageRequestToJSON, AdminShowConceptMediaRequestToJSON, AdminShownConceptDiagramFromJSON, AdminShownConceptImageFromJSON, AdminStreakFromJSON, AdminStudyObjectiveSummaryFromJSON, AdminSuggestConceptMediaPromptRequestToJSON, AdminTopConceptFromJSON, AdminTriggerAnalysisResponseFromJSON, AdminUpdateChatRequestToJSON, AdminUserActivityFromJSON, AdminUserActivityTotalsFromJSON, AdminUserEngagementFromJSON, AdminUsersActivityRequestToJSON, AdminUsersActivityTotalsRequestToJSON, QuizSessionSummaryFromJSON, } from '../models/index';
24
+ import { AdminChatFromJSON, AdminChatAnalysisFromJSON, AdminChatCanvasUsageFromJSON, AdminChatWithStatsFromJSON, AdminClaimConceptMediaReviewNotificationsRequestToJSON, AdminCohortStatsFromJSON, AdminConceptDiagramDetailFromJSON, AdminConceptImageDetailFromJSON, AdminConceptMediaJobFromJSON, AdminConceptMediaPromptSuggestionFromJSON, AdminConceptMediaReviewNotificationsFromJSON, AdminConceptMediaReviewStatsFromJSON, AdminConceptSearchResultFromJSON, AdminGenerateConceptDiagramRequestToJSON, AdminGenerateConceptImageRequestToJSON, AdminPaginatedActiveStreaksFromJSON, AdminPaginatedChatsFromJSON, AdminPaginatedConceptDiagramsFromJSON, AdminPaginatedConceptImagesFromJSON, AdminPaginatedLastExchangesFromJSON, AdminPaginatedQuizParticipantSessionsFromJSON, AdminPaginatedQuizSessionsFromJSON, AdminPaginatedStudyObjectiveUserCountsFromJSON, AdminPaginatedStudyObjectivesFromJSON, AdminPaginatedTaxonomyEnrollmentsFromJSON, AdminRegenerateConceptDiagramRequestToJSON, AdminRegenerateConceptImageRequestToJSON, AdminResetLearningDataResponseFromJSON, AdminReviseConceptDiagramRequestToJSON, AdminReviseConceptImageRequestToJSON, AdminShowConceptMediaRequestToJSON, AdminShownConceptDiagramFromJSON, AdminShownConceptImageFromJSON, AdminStreakFromJSON, AdminStudyObjectiveSummaryFromJSON, AdminSuggestConceptMediaPromptRequestToJSON, AdminTopConceptFromJSON, AdminTriggerAnalysisResponseFromJSON, AdminUpdateChatRequestToJSON, AdminUserActivityFromJSON, AdminUserActivityTotalsFromJSON, AdminUserEngagementFromJSON, AdminUsersActivityRequestToJSON, AdminUsersActivityTotalsRequestToJSON, QuizSessionSummaryFromJSON, } from '../models/index';
25
25
  /**
26
26
  *
27
27
  */
28
28
  export class AdminApi extends runtime.BaseAPI {
29
+ /**
30
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
31
+ * Claim agent-flagged media for the admin notification email
32
+ */
33
+ adminClaimConceptMediaReviewNotificationsRaw(requestParameters, initOverrides) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ if (requestParameters['xUserId'] == null) {
36
+ throw new runtime.RequiredError('xUserId', 'Required parameter "xUserId" was null or undefined when calling adminClaimConceptMediaReviewNotifications().');
37
+ }
38
+ const queryParameters = {};
39
+ const headerParameters = {};
40
+ headerParameters['Content-Type'] = 'application/json';
41
+ if (requestParameters['xUserId'] != null) {
42
+ headerParameters['X-User-Id'] = String(requestParameters['xUserId']);
43
+ }
44
+ if (this.configuration && this.configuration.apiKey) {
45
+ headerParameters["X-Auth-Token"] = yield this.configuration.apiKey("X-Auth-Token"); // AuthToken authentication
46
+ }
47
+ let urlPath = `/api/v1/admin/concept-media-reviews/notifications/claim`;
48
+ const response = yield this.request({
49
+ path: urlPath,
50
+ method: 'POST',
51
+ headers: headerParameters,
52
+ query: queryParameters,
53
+ body: AdminClaimConceptMediaReviewNotificationsRequestToJSON(requestParameters['adminClaimConceptMediaReviewNotificationsRequest']),
54
+ }, initOverrides);
55
+ return new runtime.JSONApiResponse(response, (jsonValue) => AdminConceptMediaReviewNotificationsFromJSON(jsonValue));
56
+ });
57
+ }
58
+ /**
59
+ * Atomically marks up to `limit` flagged reviews not yet notified as notified and returns them, oldest first. Each flagged review is returned by exactly one call, even with concurrent callers, so the caller owns sending its email: a review claimed here is never returned again. Empty when nothing is waiting.
60
+ * Claim agent-flagged media for the admin notification email
61
+ */
62
+ adminClaimConceptMediaReviewNotifications(requestParameters, initOverrides) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const response = yield this.adminClaimConceptMediaReviewNotificationsRaw(requestParameters, initOverrides);
65
+ return yield response.value();
66
+ });
67
+ }
29
68
  /**
30
69
  * Removes the diagram from every learner read and from the default admin list. The row is kept. Idempotent. Applies to later reads only: a diagram already rendered in an open chat stays until the chat is reloaded.
31
70
  * Soft-delete a concept diagram
@@ -520,6 +559,46 @@ export class AdminApi extends runtime.BaseAPI {
520
559
  return yield response.value();
521
560
  });
522
561
  }
562
+ /**
563
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
564
+ * Concept media reviewer stats over a window
565
+ */
566
+ adminGetConceptMediaReviewStatsRaw(requestParameters, initOverrides) {
567
+ return __awaiter(this, void 0, void 0, function* () {
568
+ if (requestParameters['xUserId'] == null) {
569
+ throw new runtime.RequiredError('xUserId', 'Required parameter "xUserId" was null or undefined when calling adminGetConceptMediaReviewStats().');
570
+ }
571
+ const queryParameters = {};
572
+ if (requestParameters['days'] != null) {
573
+ queryParameters['days'] = requestParameters['days'];
574
+ }
575
+ const headerParameters = {};
576
+ if (requestParameters['xUserId'] != null) {
577
+ headerParameters['X-User-Id'] = String(requestParameters['xUserId']);
578
+ }
579
+ if (this.configuration && this.configuration.apiKey) {
580
+ headerParameters["X-Auth-Token"] = yield this.configuration.apiKey("X-Auth-Token"); // AuthToken authentication
581
+ }
582
+ let urlPath = `/api/v1/admin/concept-media-reviews/stats`;
583
+ const response = yield this.request({
584
+ path: urlPath,
585
+ method: 'GET',
586
+ headers: headerParameters,
587
+ query: queryParameters,
588
+ }, initOverrides);
589
+ return new runtime.JSONApiResponse(response, (jsonValue) => AdminConceptMediaReviewStatsFromJSON(jsonValue));
590
+ });
591
+ }
592
+ /**
593
+ * Per media kind, over reviews created in the last `days` days: counts by status, flag rate, model-call duration (avg, p50, p95, max), the time from the media\'s creation to its review\'s completion, and total known cost.
594
+ * Concept media reviewer stats over a window
595
+ */
596
+ adminGetConceptMediaReviewStats(requestParameters, initOverrides) {
597
+ return __awaiter(this, void 0, void 0, function* () {
598
+ const response = yield this.adminGetConceptMediaReviewStatsRaw(requestParameters, initOverrides);
599
+ return yield response.value();
600
+ });
601
+ }
523
602
  /**
524
603
  * Returns the session summary (quiz details, questions, responses, score) for any quiz session belonging to a user within the caller\'s account. Intended for admin-style views in calling applications; authorization on whether the calling user is allowed to act as an admin is the calling application\'s responsibility - this endpoint only enforces account isolation. Unlike the per-user `getQuizSessionSummary` endpoint, this endpoint does not gate on the `enhanced-quizzing` feature flag; an admin can read any historical session in their account regardless of whether the chat owner currently has the feature.
525
604
  * Get quiz session summary for any session within the account
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Athena API
3
+ * REST API for the Athena system
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ *
14
+ * @export
15
+ * @interface AdminClaimConceptMediaReviewNotificationsRequest
16
+ */
17
+ export interface AdminClaimConceptMediaReviewNotificationsRequest {
18
+ /**
19
+ *
20
+ * @type {number}
21
+ * @memberof AdminClaimConceptMediaReviewNotificationsRequest
22
+ */
23
+ limit?: number;
24
+ }
25
+ /**
26
+ * Check if a given object implements the AdminClaimConceptMediaReviewNotificationsRequest interface.
27
+ */
28
+ export declare function instanceOfAdminClaimConceptMediaReviewNotificationsRequest(value: object): value is AdminClaimConceptMediaReviewNotificationsRequest;
29
+ export declare function AdminClaimConceptMediaReviewNotificationsRequestFromJSON(json: any): AdminClaimConceptMediaReviewNotificationsRequest;
30
+ export declare function AdminClaimConceptMediaReviewNotificationsRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdminClaimConceptMediaReviewNotificationsRequest;
31
+ export declare function AdminClaimConceptMediaReviewNotificationsRequestToJSON(json: any): AdminClaimConceptMediaReviewNotificationsRequest;
32
+ export declare function AdminClaimConceptMediaReviewNotificationsRequestToJSONTyped(value?: AdminClaimConceptMediaReviewNotificationsRequest | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,41 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Athena API
5
+ * REST API for the Athena system
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ /**
15
+ * Check if a given object implements the AdminClaimConceptMediaReviewNotificationsRequest interface.
16
+ */
17
+ export function instanceOfAdminClaimConceptMediaReviewNotificationsRequest(value) {
18
+ return true;
19
+ }
20
+ export function AdminClaimConceptMediaReviewNotificationsRequestFromJSON(json) {
21
+ return AdminClaimConceptMediaReviewNotificationsRequestFromJSONTyped(json, false);
22
+ }
23
+ export function AdminClaimConceptMediaReviewNotificationsRequestFromJSONTyped(json, ignoreDiscriminator) {
24
+ if (json == null) {
25
+ return json;
26
+ }
27
+ return {
28
+ 'limit': json['limit'] == null ? undefined : json['limit'],
29
+ };
30
+ }
31
+ export function AdminClaimConceptMediaReviewNotificationsRequestToJSON(json) {
32
+ return AdminClaimConceptMediaReviewNotificationsRequestToJSONTyped(json, false);
33
+ }
34
+ export function AdminClaimConceptMediaReviewNotificationsRequestToJSONTyped(value, ignoreDiscriminator = false) {
35
+ if (value == null) {
36
+ return value;
37
+ }
38
+ return {
39
+ 'limit': value['limit'],
40
+ };
41
+ }
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { AdminConceptMediaAgentReview } from './AdminConceptMediaAgentReview';
12
13
  import type { AdminConceptMediaConcept } from './AdminConceptMediaConcept';
13
14
  import type { AdminConceptMediaActor } from './AdminConceptMediaActor';
14
15
  /**
@@ -78,7 +79,7 @@ export interface AdminConceptDiagram {
78
79
  */
79
80
  hiddenBy: AdminConceptMediaActor | null;
80
81
  /**
81
- * True when the current hide came from a learner's thumbs-down flag rather than an admin. False when visible or hidden by an admin. List these with state=flagged.
82
+ * True when the current hide came from a flag (a learner's thumbs-down, or the reviewer agent's; see flaggedByAgent) rather than an admin. False when visible or hidden by an admin. List these with state=flagged.
82
83
  * @type {boolean}
83
84
  * @memberof AdminConceptDiagram
84
85
  */
@@ -96,7 +97,19 @@ export interface AdminConceptDiagram {
96
97
  */
97
98
  approvedBy: AdminConceptMediaActor | null;
98
99
  /**
99
- * When a learner first flagged it after an admin approved it. The flag leaves an approved row visible, so this is what puts it back in state=flagged for re-review. Null when no flag has come in since the last admin show or hide; cleared by show, hide, restore, and by showing another version with hideOtherVersions.
100
+ * True while a concept media reviewer agent flag awaits an admin's review: the flag hid the row (hiddenByFlag), queued an approved row for re-review (flaggedAfterApprovalAt), or found the row hidden and unapproved (e.g. an admin draft) and left it hidden. Such rows list under state=flagged; agentReview carries the reason. hiddenBy is null for an agent hide. Cleared by show, hide, and showing another version with hideOtherVersions; restore keeps it on a row that stays hidden. Never set on a row a learner's flag hid.
101
+ * @type {boolean}
102
+ * @memberof AdminConceptDiagram
103
+ */
104
+ flaggedByAgent: boolean;
105
+ /**
106
+ * The reviewer agent's latest review of this row; null when none has run (the review is off, or still pending).
107
+ * @type {AdminConceptMediaAgentReview}
108
+ * @memberof AdminConceptDiagram
109
+ */
110
+ agentReview: AdminConceptMediaAgentReview | null;
111
+ /**
112
+ * When a learner (or the reviewer agent, see flaggedByAgent) first flagged it after an admin approved it. The flag leaves an approved row visible, so this is what puts it back in state=flagged for re-review. Null when no flag has come in since the last admin show or hide; cleared by show, hide, restore, and by showing another version with hideOtherVersions.
100
113
  * @type {Date}
101
114
  * @memberof AdminConceptDiagram
102
115
  */
@@ -11,6 +11,7 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ import { AdminConceptMediaAgentReviewFromJSON, AdminConceptMediaAgentReviewToJSON, } from './AdminConceptMediaAgentReview';
14
15
  import { AdminConceptMediaConceptFromJSON, AdminConceptMediaConceptToJSON, } from './AdminConceptMediaConcept';
15
16
  import { AdminConceptMediaActorFromJSON, AdminConceptMediaActorToJSON, } from './AdminConceptMediaActor';
16
17
  /**
@@ -58,6 +59,10 @@ export function instanceOfAdminConceptDiagram(value) {
58
59
  return false;
59
60
  if (!('approvedBy' in value) || value['approvedBy'] === undefined)
60
61
  return false;
62
+ if (!('flaggedByAgent' in value) || value['flaggedByAgent'] === undefined)
63
+ return false;
64
+ if (!('agentReview' in value) || value['agentReview'] === undefined)
65
+ return false;
61
66
  if (!('flaggedAfterApprovalAt' in value) || value['flaggedAfterApprovalAt'] === undefined)
62
67
  return false;
63
68
  if (!('deletedAt' in value) || value['deletedAt'] === undefined)
@@ -105,6 +110,8 @@ export function AdminConceptDiagramFromJSONTyped(json, ignoreDiscriminator) {
105
110
  'hiddenByFlag': json['hiddenByFlag'],
106
111
  'approvedAt': (json['approvedAt'] == null ? null : new Date(json['approvedAt'])),
107
112
  'approvedBy': AdminConceptMediaActorFromJSON(json['approvedBy']),
113
+ 'flaggedByAgent': json['flaggedByAgent'],
114
+ 'agentReview': AdminConceptMediaAgentReviewFromJSON(json['agentReview']),
108
115
  'flaggedAfterApprovalAt': (json['flaggedAfterApprovalAt'] == null ? null : new Date(json['flaggedAfterApprovalAt'])),
109
116
  'deletedAt': (json['deletedAt'] == null ? null : new Date(json['deletedAt'])),
110
117
  'deletedBy': AdminConceptMediaActorFromJSON(json['deletedBy']),
@@ -140,6 +147,8 @@ export function AdminConceptDiagramToJSONTyped(value, ignoreDiscriminator = fals
140
147
  'hiddenByFlag': value['hiddenByFlag'],
141
148
  'approvedAt': value['approvedAt'] == null ? value['approvedAt'] : value['approvedAt'].toISOString(),
142
149
  'approvedBy': AdminConceptMediaActorToJSON(value['approvedBy']),
150
+ 'flaggedByAgent': value['flaggedByAgent'],
151
+ 'agentReview': AdminConceptMediaAgentReviewToJSON(value['agentReview']),
143
152
  'flaggedAfterApprovalAt': value['flaggedAfterApprovalAt'] == null ? value['flaggedAfterApprovalAt'] : value['flaggedAfterApprovalAt'].toISOString(),
144
153
  'deletedAt': value['deletedAt'] == null ? value['deletedAt'] : value['deletedAt'].toISOString(),
145
154
  'deletedBy': AdminConceptMediaActorToJSON(value['deletedBy']),
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { AdminConceptMediaAgentReview } from './AdminConceptMediaAgentReview';
12
13
  import type { AdminConceptMediaConcept } from './AdminConceptMediaConcept';
13
14
  import type { AdminConceptMediaHistoryEntry } from './AdminConceptMediaHistoryEntry';
14
15
  import type { AdminConceptMediaActor } from './AdminConceptMediaActor';
@@ -80,7 +81,7 @@ export interface AdminConceptDiagramDetail {
80
81
  */
81
82
  hiddenBy: AdminConceptMediaActor | null;
82
83
  /**
83
- * True when the current hide came from a learner's thumbs-down flag rather than an admin. False when visible or hidden by an admin. List these with state=flagged.
84
+ * True when the current hide came from a flag (a learner's thumbs-down, or the reviewer agent's; see flaggedByAgent) rather than an admin. False when visible or hidden by an admin. List these with state=flagged.
84
85
  * @type {boolean}
85
86
  * @memberof AdminConceptDiagramDetail
86
87
  */
@@ -98,7 +99,19 @@ export interface AdminConceptDiagramDetail {
98
99
  */
99
100
  approvedBy: AdminConceptMediaActor | null;
100
101
  /**
101
- * When a learner first flagged it after an admin approved it. The flag leaves an approved row visible, so this is what puts it back in state=flagged for re-review. Null when no flag has come in since the last admin show or hide; cleared by show, hide, restore, and by showing another version with hideOtherVersions.
102
+ * True while a concept media reviewer agent flag awaits an admin's review: the flag hid the row (hiddenByFlag), queued an approved row for re-review (flaggedAfterApprovalAt), or found the row hidden and unapproved (e.g. an admin draft) and left it hidden. Such rows list under state=flagged; agentReview carries the reason. hiddenBy is null for an agent hide. Cleared by show, hide, and showing another version with hideOtherVersions; restore keeps it on a row that stays hidden. Never set on a row a learner's flag hid.
103
+ * @type {boolean}
104
+ * @memberof AdminConceptDiagramDetail
105
+ */
106
+ flaggedByAgent: boolean;
107
+ /**
108
+ * The reviewer agent's latest review of this row; null when none has run (the review is off, or still pending).
109
+ * @type {AdminConceptMediaAgentReview}
110
+ * @memberof AdminConceptDiagramDetail
111
+ */
112
+ agentReview: AdminConceptMediaAgentReview | null;
113
+ /**
114
+ * When a learner (or the reviewer agent, see flaggedByAgent) first flagged it after an admin approved it. The flag leaves an approved row visible, so this is what puts it back in state=flagged for re-review. Null when no flag has come in since the last admin show or hide; cleared by show, hide, restore, and by showing another version with hideOtherVersions.
102
115
  * @type {Date}
103
116
  * @memberof AdminConceptDiagramDetail
104
117
  */
@@ -11,6 +11,7 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ import { AdminConceptMediaAgentReviewFromJSON, AdminConceptMediaAgentReviewToJSON, } from './AdminConceptMediaAgentReview';
14
15
  import { AdminConceptMediaConceptFromJSON, AdminConceptMediaConceptToJSON, } from './AdminConceptMediaConcept';
15
16
  import { AdminConceptMediaHistoryEntryFromJSON, AdminConceptMediaHistoryEntryToJSON, } from './AdminConceptMediaHistoryEntry';
16
17
  import { AdminConceptMediaActorFromJSON, AdminConceptMediaActorToJSON, } from './AdminConceptMediaActor';
@@ -60,6 +61,10 @@ export function instanceOfAdminConceptDiagramDetail(value) {
60
61
  return false;
61
62
  if (!('approvedBy' in value) || value['approvedBy'] === undefined)
62
63
  return false;
64
+ if (!('flaggedByAgent' in value) || value['flaggedByAgent'] === undefined)
65
+ return false;
66
+ if (!('agentReview' in value) || value['agentReview'] === undefined)
67
+ return false;
63
68
  if (!('flaggedAfterApprovalAt' in value) || value['flaggedAfterApprovalAt'] === undefined)
64
69
  return false;
65
70
  if (!('deletedAt' in value) || value['deletedAt'] === undefined)
@@ -119,6 +124,8 @@ export function AdminConceptDiagramDetailFromJSONTyped(json, ignoreDiscriminator
119
124
  'hiddenByFlag': json['hiddenByFlag'],
120
125
  'approvedAt': (json['approvedAt'] == null ? null : new Date(json['approvedAt'])),
121
126
  'approvedBy': AdminConceptMediaActorFromJSON(json['approvedBy']),
127
+ 'flaggedByAgent': json['flaggedByAgent'],
128
+ 'agentReview': AdminConceptMediaAgentReviewFromJSON(json['agentReview']),
122
129
  'flaggedAfterApprovalAt': (json['flaggedAfterApprovalAt'] == null ? null : new Date(json['flaggedAfterApprovalAt'])),
123
130
  'deletedAt': (json['deletedAt'] == null ? null : new Date(json['deletedAt'])),
124
131
  'deletedBy': AdminConceptMediaActorFromJSON(json['deletedBy']),
@@ -160,6 +167,8 @@ export function AdminConceptDiagramDetailToJSONTyped(value, ignoreDiscriminator
160
167
  'hiddenByFlag': value['hiddenByFlag'],
161
168
  'approvedAt': value['approvedAt'] == null ? value['approvedAt'] : value['approvedAt'].toISOString(),
162
169
  'approvedBy': AdminConceptMediaActorToJSON(value['approvedBy']),
170
+ 'flaggedByAgent': value['flaggedByAgent'],
171
+ 'agentReview': AdminConceptMediaAgentReviewToJSON(value['agentReview']),
163
172
  'flaggedAfterApprovalAt': value['flaggedAfterApprovalAt'] == null ? value['flaggedAfterApprovalAt'] : value['flaggedAfterApprovalAt'].toISOString(),
164
173
  'deletedAt': value['deletedAt'] == null ? value['deletedAt'] : value['deletedAt'].toISOString(),
165
174
  'deletedBy': AdminConceptMediaActorToJSON(value['deletedBy']),