@iblai/iblai-api 4.316.1-core → 4.317.1-core

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/sdk_schema.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ibl-data-manager
4
- version: 4.316.1-core
4
+ version: 4.317.1-core
5
5
  description: API for iblai
6
6
  paths:
7
7
  /api/analytics/content/:
@@ -307,19 +307,27 @@ paths:
307
307
  /api/analytics/learner/details:
308
308
  get:
309
309
  operationId: analytics_learner_details_retrieve
310
- description: "\n Retrieve a holistic snapshot of a learner across catalog\
311
- \ enrollments, mentor\n engagement, skills, credentials, and time spent\
310
+ description: "\n Retrieve a holistic snapshot of a user across catalog\
311
+ \ enrollments, agent\n engagement, skills, credentials, and time spent\
312
312
  \ data. The `metrics` query parameter controls\n which sections are\
313
- \ returned and defaults to `courses` when omitted.\n\n Optional `course_id`\
314
- \ / `program_id` / `pathway_id` scope the matching section to a\n single\
315
- \ item (empty list if the learner is not enrolled — never a 404); omitting\
316
- \ them\n returns the full list unchanged. When `course_id` is set,\
317
- \ the course block is also\n enriched with the learner's live edX Progress\
318
- \ data under `edx_progress` (completion\n summary, grade, grade summary)\
319
- \ unless `include_edx_progress=false`. The edX call is\n best-effort:\
320
- \ on failure `edx_progress` is null and the DM data is still returned.\n \
321
- \ `program_id` / `pathway_id` get scoping only — no edX enrichment.\n\
322
- \ "
313
+ \ returned and defaults to `courses` when omitted. A user can call this\n\
314
+ \ endpoint for themselves without passing `username`; admins pass `username`\
315
+ \ to target a\n user in their scope.\n\n The `mentors` section\
316
+ \ lists every agent the user has engaged, sourced from both their\n \
317
+ \ sessions and saved agents. Each agent's `interactions` block reports engagement\
318
+ \ depth\n (`session_count`, `conversation_count`, human/AI message\
319
+ \ counts, `avg_messages_per_session`),\n recency and stickiness (`first_interaction`,\
320
+ \ `latest_interaction`, `active_days`),\n affinity (`rating`, `is_starred`),\
321
+ \ and spend (`cost_usd`, in USD). The user's total\n agent spend is\
322
+ \ `user.total_agent_cost_usd`.\n\n Optional `course_id` / `program_id`\
323
+ \ / `pathway_id` scope the matching section to a\n single item (empty\
324
+ \ list if the user is not enrolled — never a 404); omitting them\n \
325
+ \ returns the full list unchanged. When `course_id` is set, the course block\
326
+ \ is also\n enriched with the user's live edX Progress data under `edx_progress`\
327
+ \ (completion\n summary, grade, grade summary) unless `include_edx_progress=false`.\
328
+ \ The edX call is\n best-effort: on failure `edx_progress` is null\
329
+ \ and the DM data is still returned.\n `program_id` / `pathway_id`\
330
+ \ get scoping only — no edX enrichment.\n "
323
331
  parameters:
324
332
  - in: query
325
333
  name: course_id
@@ -380,6 +388,9 @@ paths:
380
388
  name: metrics
381
389
  schema:
382
390
  type: string
391
+ description: 'Comma-separated sections to return: courses, programs, pathways,
392
+ agents, skills, credentials, time_spent. `agents` is an alias for the agent
393
+ (mentor) section. Defaults to courses when omitted.'
383
394
  - in: query
384
395
  name: overtime
385
396
  schema:
@@ -417,8 +428,6 @@ paths:
417
428
  name: username
418
429
  schema:
419
430
  type: string
420
- minLength: 1
421
- required: true
422
431
  tags:
423
432
  - ai-analytics
424
433
  security:
@@ -430,15 +439,16 @@ paths:
430
439
  schema:
431
440
  $ref: '#/components/schemas/LearnerDetailsResponse'
432
441
  examples:
433
- LearnerDetails:
442
+ UserDetails:
434
443
  value:
435
444
  user:
436
445
  user_id: 42
437
- username: learner123
438
- email: learner@example.com
439
- name: Learner Example
446
+ username: user123
447
+ email: user@example.com
448
+ name: Example User
440
449
  date_joined: '2024-01-01T00:00:00Z'
441
450
  last_active: '2024-02-01T12:30:00Z'
451
+ total_agent_cost_usd: '14.2000'
442
452
  data:
443
453
  courses:
444
454
  - course_id: course-v1:edX+Demo+2024
@@ -464,9 +474,18 @@ paths:
464
474
  subjects:
465
475
  - Algebra
466
476
  interactions:
467
- total_messages: 12
477
+ session_count: 8
478
+ conversation_count: 6
479
+ message_count_human: 41
480
+ message_count_ai: 47
481
+ total_messages: 88
482
+ avg_messages_per_session: 11.0
483
+ first_interaction: '2024-01-05T00:00:00Z'
468
484
  latest_interaction: '2024-02-01T12:30:00Z'
485
+ active_days: 5
486
+ cost_usd: '1.8300'
469
487
  rating: 4.5
488
+ is_starred: true
470
489
  time_spent:
471
490
  courses:
472
491
  - course_id: course-v1:edX+Demo+2024
@@ -476,7 +495,7 @@ paths:
476
495
  time_spent_secs: 9000
477
496
  total_time_spent: 2h 30m
478
497
  total_time_spent_secs: 9000
479
- summary: Learner details
498
+ summary: User details
480
499
  description: Example learner detail payload
481
500
  description: Learner profile with requested analytics data
482
501
  '400':
@@ -942,6 +961,206 @@ paths:
942
961
  description: Bad request
943
962
  '401':
944
963
  description: Unauthorized
964
+ /api/analytics/user:
965
+ get:
966
+ operationId: analytics_user_retrieve
967
+ description: "\n Retrieve a holistic snapshot of a user across catalog\
968
+ \ enrollments, agent\n engagement, skills, credentials, and time spent\
969
+ \ data. The `metrics` query parameter controls\n which sections are\
970
+ \ returned and defaults to `courses` when omitted. A user can call this\n\
971
+ \ endpoint for themselves without passing `username`; admins pass `username`\
972
+ \ to target a\n user in their scope.\n\n The `mentors` section\
973
+ \ lists every agent the user has engaged, sourced from both their\n \
974
+ \ sessions and saved agents. Each agent's `interactions` block reports engagement\
975
+ \ depth\n (`session_count`, `conversation_count`, human/AI message\
976
+ \ counts, `avg_messages_per_session`),\n recency and stickiness (`first_interaction`,\
977
+ \ `latest_interaction`, `active_days`),\n affinity (`rating`, `is_starred`),\
978
+ \ and spend (`cost_usd`, in USD). The user's total\n agent spend is\
979
+ \ `user.total_agent_cost_usd`.\n\n Optional `course_id` / `program_id`\
980
+ \ / `pathway_id` scope the matching section to a\n single item (empty\
981
+ \ list if the user is not enrolled — never a 404); omitting them\n \
982
+ \ returns the full list unchanged. When `course_id` is set, the course block\
983
+ \ is also\n enriched with the user's live edX Progress data under `edx_progress`\
984
+ \ (completion\n summary, grade, grade summary) unless `include_edx_progress=false`.\
985
+ \ The edX call is\n best-effort: on failure `edx_progress` is null\
986
+ \ and the DM data is still returned.\n `program_id` / `pathway_id`\
987
+ \ get scoping only — no edX enrichment.\n "
988
+ parameters:
989
+ - in: query
990
+ name: course_id
991
+ schema:
992
+ type: string
993
+ description: Scope the `courses` and `time_spent` sections to a single course.
994
+ When set, also enriches the course with live edX progress (see `include_edx_progress`).
995
+ - in: query
996
+ name: date_filter
997
+ schema:
998
+ enum:
999
+ - today
1000
+ - 7d
1001
+ - 30d
1002
+ - 90d
1003
+ - all_time
1004
+ - custom
1005
+ type: string
1006
+ default: today
1007
+ minLength: 1
1008
+ description: |-
1009
+ * `today` - Today only
1010
+ * `7d` - Last 7 days
1011
+ * `30d` - Last 30 days
1012
+ * `90d` - Last 90 days
1013
+ * `all_time` - All time
1014
+ * `custom` - Custom date range
1015
+ - in: query
1016
+ name: end_date
1017
+ schema:
1018
+ type: string
1019
+ format: date
1020
+ - in: query
1021
+ name: granularity
1022
+ schema:
1023
+ enum:
1024
+ - day
1025
+ - hour
1026
+ - week
1027
+ - month
1028
+ type: string
1029
+ default: hour
1030
+ minLength: 1
1031
+ description: |-
1032
+ * `day` - day
1033
+ * `hour` - hour
1034
+ * `week` - week
1035
+ * `month` - month
1036
+ - in: query
1037
+ name: include_edx_progress
1038
+ schema:
1039
+ type: boolean
1040
+ default: true
1041
+ description: When `course_id` is set, fold the learner's live edX Progress-page
1042
+ data (completion summary, grade, grade summary) into the course block. Defaults
1043
+ to true; set false to skip the edX round-trip.
1044
+ - in: query
1045
+ name: metrics
1046
+ schema:
1047
+ type: string
1048
+ description: 'Comma-separated sections to return: courses, programs, pathways,
1049
+ agents, skills, credentials, time_spent. `agents` is an alias for the agent
1050
+ (mentor) section. Defaults to courses when omitted.'
1051
+ - in: query
1052
+ name: overtime
1053
+ schema:
1054
+ type: boolean
1055
+ default: false
1056
+ description: 'Include overtime metrics for time_spent data (default: false)'
1057
+ - in: query
1058
+ name: pathway_id
1059
+ schema:
1060
+ type: string
1061
+ description: Scope the `pathways` section to a single pathway.
1062
+ - in: query
1063
+ name: platform_key
1064
+ schema:
1065
+ type: string
1066
+ - in: query
1067
+ name: program_id
1068
+ schema:
1069
+ type: string
1070
+ description: Scope the `programs` section to a single program.
1071
+ - in: query
1072
+ name: start_date
1073
+ schema:
1074
+ type: string
1075
+ format: date
1076
+ - in: query
1077
+ name: usergroup_ids
1078
+ schema:
1079
+ type: array
1080
+ items:
1081
+ type: integer
1082
+ nullable: true
1083
+ description: Optional list of usergroup IDs to filter results
1084
+ - in: query
1085
+ name: username
1086
+ schema:
1087
+ type: string
1088
+ tags:
1089
+ - ai-analytics
1090
+ security:
1091
+ - PlatformApiKeyAuthentication: []
1092
+ responses:
1093
+ '200':
1094
+ content:
1095
+ application/json:
1096
+ schema:
1097
+ $ref: '#/components/schemas/LearnerDetailsResponse'
1098
+ examples:
1099
+ UserDetails:
1100
+ value:
1101
+ user:
1102
+ user_id: 42
1103
+ username: user123
1104
+ email: user@example.com
1105
+ name: Example User
1106
+ date_joined: '2024-01-01T00:00:00Z'
1107
+ last_active: '2024-02-01T12:30:00Z'
1108
+ total_agent_cost_usd: '14.2000'
1109
+ data:
1110
+ courses:
1111
+ - course_id: course-v1:edX+Demo+2024
1112
+ name: Demo Course
1113
+ platform: key_org1
1114
+ enrollment:
1115
+ created: '2024-01-05T00:00:00Z'
1116
+ started: '2024-01-06T00:00:00Z'
1117
+ ended: null
1118
+ active: true
1119
+ completion:
1120
+ completed: true
1121
+ completion_percentage: 92.5
1122
+ passed: true
1123
+ passed_date: '2024-01-18T00:00:00Z'
1124
+ mentors:
1125
+ - mentor_id: b451624c-ef13-4f9f-8cc6-2a0e8c781f12
1126
+ name: AI Math Tutor
1127
+ slug: ai-math-tutor
1128
+ platform_key: key_org1
1129
+ categories:
1130
+ - Mathematics
1131
+ subjects:
1132
+ - Algebra
1133
+ interactions:
1134
+ session_count: 8
1135
+ conversation_count: 6
1136
+ message_count_human: 41
1137
+ message_count_ai: 47
1138
+ total_messages: 88
1139
+ avg_messages_per_session: 11.0
1140
+ first_interaction: '2024-01-05T00:00:00Z'
1141
+ latest_interaction: '2024-02-01T12:30:00Z'
1142
+ active_days: 5
1143
+ cost_usd: '1.8300'
1144
+ rating: 4.5
1145
+ is_starred: true
1146
+ time_spent:
1147
+ courses:
1148
+ - course_id: course-v1:edX+Demo+2024
1149
+ course_name: Demo Course
1150
+ platform: key_org1
1151
+ time_spent: 2h 30m
1152
+ time_spent_secs: 9000
1153
+ total_time_spent: 2h 30m
1154
+ total_time_spent_secs: 9000
1155
+ summary: User details
1156
+ description: Example learner detail payload
1157
+ description: Learner profile with requested analytics data
1158
+ '400':
1159
+ description: Bad Request - Invalid parameters supplied
1160
+ '404':
1161
+ description: Learner not found
1162
+ '500':
1163
+ description: Unexpected error
945
1164
  /api/audience/orgs/{org}/active-users/over-time:
946
1165
  get:
947
1166
  operationId: audience_orgs_active_users_over_time_retrieve
@@ -48155,12 +48374,30 @@ components:
48155
48374
  type: string
48156
48375
  readOnly: true
48157
48376
  description: The course key
48377
+ status:
48378
+ type: string
48379
+ readOnly: true
48380
+ description: 'Creation status: pending, building, ready, or failed'
48381
+ status_updated_at:
48382
+ type: string
48383
+ format: date-time
48384
+ readOnly: true
48385
+ description: When the status last changed
48386
+ stalled:
48387
+ type: boolean
48388
+ readOnly: true
48389
+ description: True when an in-flight build exceeded the stall timeout
48158
48390
  mentor_config:
48159
48391
  $ref: '#/components/schemas/LtiMentorCourseXBlock'
48160
48392
  platform_key:
48161
48393
  type: string
48162
48394
  writeOnly: true
48163
48395
  description: Platform key the requesting user belongs to
48396
+ async_create:
48397
+ type: boolean
48398
+ default: false
48399
+ description: When True, triggers an async create and reponds with a 202
48400
+ instead of 201
48164
48401
  required:
48165
48402
  - course_key
48166
48403
  - id
@@ -48168,6 +48405,9 @@ components:
48168
48405
  - name
48169
48406
  - org
48170
48407
  - platform_key
48408
+ - stalled
48409
+ - status
48410
+ - status_updated_at
48171
48411
  LtiMentorCourseXBlock:
48172
48412
  type: object
48173
48413
  properties:
@@ -48429,17 +48669,64 @@ components:
48429
48669
  MentorInteractions:
48430
48670
  type: object
48431
48671
  properties:
48672
+ session_count:
48673
+ type: integer
48674
+ description: Total conversations the user has started with this agent, including
48675
+ empty ones.
48676
+ conversation_count:
48677
+ type: integer
48678
+ description: Conversations that had real back-and-forth (at least one user
48679
+ message and one agent reply). Always less than or equal to session_count.
48680
+ message_count_human:
48681
+ type: integer
48682
+ description: Total messages the user sent to this agent across all conversations.
48683
+ message_count_ai:
48684
+ type: integer
48685
+ description: Total replies this agent sent to the user across all conversations.
48432
48686
  total_messages:
48433
48687
  type: integer
48688
+ description: Sum of user and agent messages exchanged with this agent.
48689
+ avg_messages_per_session:
48690
+ type: number
48691
+ format: double
48692
+ description: Average messages per conversation (total_messages / session_count);
48693
+ 0 with no conversations.
48694
+ first_interaction:
48695
+ type: string
48696
+ format: date-time
48697
+ nullable: true
48698
+ description: When the user first messaged this agent.
48434
48699
  latest_interaction:
48435
48700
  type: string
48436
48701
  format: date-time
48437
48702
  nullable: true
48703
+ description: When the user most recently interacted with this agent.
48704
+ active_days:
48705
+ type: integer
48706
+ description: Number of distinct calendar days the user exchanged messages
48707
+ with this agent.
48708
+ cost_usd:
48709
+ type: string
48710
+ format: decimal
48711
+ pattern: ^-?\d{0,10}(?:\.\d{0,4})?$
48712
+ nullable: true
48713
+ description: Total amount the user has spent on this agent, in USD.
48438
48714
  rating:
48439
48715
  type: number
48440
48716
  format: double
48441
48717
  nullable: true
48442
- required:
48718
+ description: Rating the user gave this agent.
48719
+ is_starred:
48720
+ type: boolean
48721
+ default: false
48722
+ description: Whether the user has favorited (starred) this agent.
48723
+ required:
48724
+ - active_days
48725
+ - avg_messages_per_session
48726
+ - conversation_count
48727
+ - message_count_ai
48728
+ - message_count_human
48729
+ - session_count
48443
48730
  - total_messages
48444
48731
  MentorPolicy:
48445
48732
  type: object
@@ -61300,6 +61587,13 @@ components:
61300
61587
  date_joined:
61301
61588
  type: string
61302
61589
  format: date-time
61590
+ total_agent_cost_usd:
61591
+ type: string
61592
+ format: decimal
61593
+ pattern: ^-?\d{0,10}(?:\.\d{0,4})?$
61594
+ nullable: true
61595
+ description: Total amount the user has spent across all agents, in USD.
61596
+ May be slightly higher than the sum of the per-agent cost_usd values.
61303
61597
  required:
61304
61598
  - email
61305
61599
  - name
@@ -21,7 +21,7 @@ export type OpenAPIConfig = {
21
21
 
22
22
  export const OpenAPI: OpenAPIConfig = {
23
23
  BASE: 'https://base.manager.iblai.app',
24
- VERSION: '4.316.1-core',
24
+ VERSION: '4.317.1-core',
25
25
  WITH_CREDENTIALS: false,
26
26
  CREDENTIALS: 'include',
27
27
  TOKEN: undefined,
@@ -17,10 +17,26 @@ export type LtiMentor = {
17
17
  * The course key
18
18
  */
19
19
  readonly course_key: string;
20
+ /**
21
+ * Creation status: pending, building, ready, or failed
22
+ */
23
+ readonly status: string;
24
+ /**
25
+ * When the status last changed
26
+ */
27
+ readonly status_updated_at: string;
28
+ /**
29
+ * True when an in-flight build exceeded the stall timeout
30
+ */
31
+ readonly stalled: boolean;
20
32
  mentor_config: LtiMentorCourseXBlock;
21
33
  /**
22
34
  * Platform key the requesting user belongs to
23
35
  */
24
36
  platform_key: string;
37
+ /**
38
+ * When True, triggers an async create and reponds with a 202 instead of 201
39
+ */
40
+ async_create?: boolean;
25
41
  };
26
42
 
@@ -3,8 +3,53 @@
3
3
  /* tslint:disable */
4
4
  /* eslint-disable */
5
5
  export type MentorInteractions = {
6
+ /**
7
+ * Total conversations the user has started with this agent, including empty ones.
8
+ */
9
+ session_count: number;
10
+ /**
11
+ * Conversations that had real back-and-forth (at least one user message and one agent reply). Always less than or equal to session_count.
12
+ */
13
+ conversation_count: number;
14
+ /**
15
+ * Total messages the user sent to this agent across all conversations.
16
+ */
17
+ message_count_human: number;
18
+ /**
19
+ * Total replies this agent sent to the user across all conversations.
20
+ */
21
+ message_count_ai: number;
22
+ /**
23
+ * Sum of user and agent messages exchanged with this agent.
24
+ */
6
25
  total_messages: number;
26
+ /**
27
+ * Average messages per conversation (total_messages / session_count); 0 with no conversations.
28
+ */
29
+ avg_messages_per_session: number;
30
+ /**
31
+ * When the user first messaged this agent.
32
+ */
33
+ first_interaction?: string | null;
34
+ /**
35
+ * When the user most recently interacted with this agent.
36
+ */
7
37
  latest_interaction?: string | null;
38
+ /**
39
+ * Number of distinct calendar days the user exchanged messages with this agent.
40
+ */
41
+ active_days: number;
42
+ /**
43
+ * Total amount the user has spent on this agent, in USD.
44
+ */
45
+ cost_usd?: string | null;
46
+ /**
47
+ * Rating the user gave this agent.
48
+ */
8
49
  rating?: number | null;
50
+ /**
51
+ * Whether the user has favorited (starred) this agent.
52
+ */
53
+ is_starred?: boolean;
9
54
  };
10
55
 
@@ -13,5 +13,9 @@ export type UserInfo = {
13
13
  is_active?: boolean;
14
14
  last_active?: string;
15
15
  date_joined?: string;
16
+ /**
17
+ * Total amount the user has spent across all agents, in USD. May be slightly higher than the sum of the per-agent cost_usd values.
18
+ */
19
+ total_agent_cost_usd?: string | null;
16
20
  };
17
21