orq-ai-sdk 4.2.0rc28__py3-none-any.whl → 4.2.6__py3-none-any.whl

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 (167) hide show
  1. orq_ai_sdk/_hooks/globalhook.py +0 -1
  2. orq_ai_sdk/_version.py +3 -3
  3. orq_ai_sdk/audio.py +30 -0
  4. orq_ai_sdk/basesdk.py +20 -6
  5. orq_ai_sdk/chat.py +22 -0
  6. orq_ai_sdk/completions.py +332 -0
  7. orq_ai_sdk/contacts.py +43 -855
  8. orq_ai_sdk/deployments.py +61 -0
  9. orq_ai_sdk/edits.py +258 -0
  10. orq_ai_sdk/embeddings.py +238 -0
  11. orq_ai_sdk/generations.py +272 -0
  12. orq_ai_sdk/identities.py +1037 -0
  13. orq_ai_sdk/images.py +28 -0
  14. orq_ai_sdk/models/__init__.py +5341 -737
  15. orq_ai_sdk/models/actionreviewedstreamingevent.py +18 -1
  16. orq_ai_sdk/models/actionreviewrequestedstreamingevent.py +44 -1
  17. orq_ai_sdk/models/agenterroredstreamingevent.py +18 -1
  18. orq_ai_sdk/models/agentinactivestreamingevent.py +168 -70
  19. orq_ai_sdk/models/agentmessagecreatedstreamingevent.py +18 -2
  20. orq_ai_sdk/models/agentresponsemessage.py +18 -2
  21. orq_ai_sdk/models/agentstartedstreamingevent.py +127 -2
  22. orq_ai_sdk/models/agentthoughtstreamingevent.py +178 -211
  23. orq_ai_sdk/models/conversationresponse.py +31 -20
  24. orq_ai_sdk/models/conversationwithmessagesresponse.py +31 -20
  25. orq_ai_sdk/models/createagentrequestop.py +1922 -384
  26. orq_ai_sdk/models/createagentresponse.py +147 -91
  27. orq_ai_sdk/models/createagentresponserequestop.py +111 -2
  28. orq_ai_sdk/models/createchatcompletionop.py +1375 -861
  29. orq_ai_sdk/models/createchunkop.py +46 -19
  30. orq_ai_sdk/models/createcompletionop.py +1890 -0
  31. orq_ai_sdk/models/createcontactop.py +45 -56
  32. orq_ai_sdk/models/createconversationop.py +61 -39
  33. orq_ai_sdk/models/createconversationresponseop.py +68 -4
  34. orq_ai_sdk/models/createdatasetitemop.py +424 -80
  35. orq_ai_sdk/models/createdatasetop.py +19 -2
  36. orq_ai_sdk/models/createdatasourceop.py +92 -26
  37. orq_ai_sdk/models/createembeddingop.py +384 -0
  38. orq_ai_sdk/models/createevalop.py +552 -24
  39. orq_ai_sdk/models/createidentityop.py +176 -0
  40. orq_ai_sdk/models/createimageeditop.py +504 -0
  41. orq_ai_sdk/models/createimageop.py +208 -117
  42. orq_ai_sdk/models/createimagevariationop.py +486 -0
  43. orq_ai_sdk/models/createknowledgeop.py +186 -121
  44. orq_ai_sdk/models/creatememorydocumentop.py +50 -1
  45. orq_ai_sdk/models/creatememoryop.py +34 -21
  46. orq_ai_sdk/models/creatememorystoreop.py +34 -1
  47. orq_ai_sdk/models/createmoderationop.py +521 -0
  48. orq_ai_sdk/models/createpromptop.py +2748 -1252
  49. orq_ai_sdk/models/creatererankop.py +416 -0
  50. orq_ai_sdk/models/createresponseop.py +2567 -0
  51. orq_ai_sdk/models/createspeechop.py +316 -0
  52. orq_ai_sdk/models/createtoolop.py +537 -12
  53. orq_ai_sdk/models/createtranscriptionop.py +562 -0
  54. orq_ai_sdk/models/createtranslationop.py +540 -0
  55. orq_ai_sdk/models/datapart.py +18 -1
  56. orq_ai_sdk/models/deletechunksop.py +34 -1
  57. orq_ai_sdk/models/{deletecontactop.py → deleteidentityop.py} +9 -9
  58. orq_ai_sdk/models/deletepromptop.py +26 -0
  59. orq_ai_sdk/models/deploymentcreatemetricop.py +362 -76
  60. orq_ai_sdk/models/deploymentgetconfigop.py +635 -194
  61. orq_ai_sdk/models/deploymentinvokeop.py +168 -173
  62. orq_ai_sdk/models/deploymentsop.py +195 -58
  63. orq_ai_sdk/models/deploymentstreamop.py +652 -304
  64. orq_ai_sdk/models/errorpart.py +18 -1
  65. orq_ai_sdk/models/filecontentpartschema.py +18 -1
  66. orq_ai_sdk/models/filegetop.py +19 -2
  67. orq_ai_sdk/models/filelistop.py +35 -2
  68. orq_ai_sdk/models/filepart.py +50 -1
  69. orq_ai_sdk/models/fileuploadop.py +51 -2
  70. orq_ai_sdk/models/generateconversationnameop.py +31 -20
  71. orq_ai_sdk/models/get_v2_evaluators_id_versionsop.py +34 -1
  72. orq_ai_sdk/models/get_v2_tools_tool_id_versions_version_id_op.py +18 -1
  73. orq_ai_sdk/models/get_v2_tools_tool_id_versionsop.py +34 -1
  74. orq_ai_sdk/models/getallmemoriesop.py +34 -21
  75. orq_ai_sdk/models/getallmemorydocumentsop.py +42 -1
  76. orq_ai_sdk/models/getallmemorystoresop.py +34 -1
  77. orq_ai_sdk/models/getallpromptsop.py +1690 -230
  78. orq_ai_sdk/models/getalltoolsop.py +325 -8
  79. orq_ai_sdk/models/getchunkscountop.py +34 -1
  80. orq_ai_sdk/models/getevalsop.py +395 -43
  81. orq_ai_sdk/models/getonechunkop.py +14 -19
  82. orq_ai_sdk/models/getoneknowledgeop.py +116 -96
  83. orq_ai_sdk/models/getonepromptop.py +1673 -230
  84. orq_ai_sdk/models/getpromptversionop.py +1670 -216
  85. orq_ai_sdk/models/imagecontentpartschema.py +50 -1
  86. orq_ai_sdk/models/internal/globals.py +18 -1
  87. orq_ai_sdk/models/invokeagentop.py +140 -2
  88. orq_ai_sdk/models/invokedeploymentrequest.py +418 -80
  89. orq_ai_sdk/models/invokeevalop.py +160 -131
  90. orq_ai_sdk/models/listagentsop.py +793 -166
  91. orq_ai_sdk/models/listchunksop.py +32 -19
  92. orq_ai_sdk/models/listchunkspaginatedop.py +46 -19
  93. orq_ai_sdk/models/listconversationsop.py +18 -1
  94. orq_ai_sdk/models/listdatasetdatapointsop.py +252 -42
  95. orq_ai_sdk/models/listdatasetsop.py +35 -2
  96. orq_ai_sdk/models/listdatasourcesop.py +35 -26
  97. orq_ai_sdk/models/{listcontactsop.py → listidentitiesop.py} +89 -79
  98. orq_ai_sdk/models/listknowledgebasesop.py +132 -96
  99. orq_ai_sdk/models/listmodelsop.py +1 -0
  100. orq_ai_sdk/models/listpromptversionsop.py +1684 -216
  101. orq_ai_sdk/models/parseop.py +161 -17
  102. orq_ai_sdk/models/partdoneevent.py +19 -2
  103. orq_ai_sdk/models/post_v2_router_ocrop.py +408 -0
  104. orq_ai_sdk/models/publiccontact.py +27 -4
  105. orq_ai_sdk/models/publicidentity.py +62 -0
  106. orq_ai_sdk/models/reasoningpart.py +19 -2
  107. orq_ai_sdk/models/refusalpartschema.py +18 -1
  108. orq_ai_sdk/models/remoteconfigsgetconfigop.py +34 -1
  109. orq_ai_sdk/models/responsedoneevent.py +114 -84
  110. orq_ai_sdk/models/responsestartedevent.py +18 -1
  111. orq_ai_sdk/models/retrieveagentrequestop.py +787 -166
  112. orq_ai_sdk/models/retrievedatapointop.py +236 -42
  113. orq_ai_sdk/models/retrievedatasetop.py +19 -2
  114. orq_ai_sdk/models/retrievedatasourceop.py +17 -26
  115. orq_ai_sdk/models/{retrievecontactop.py → retrieveidentityop.py} +38 -41
  116. orq_ai_sdk/models/retrievememorydocumentop.py +18 -1
  117. orq_ai_sdk/models/retrievememoryop.py +18 -21
  118. orq_ai_sdk/models/retrievememorystoreop.py +18 -1
  119. orq_ai_sdk/models/retrievetoolop.py +309 -8
  120. orq_ai_sdk/models/runagentop.py +1451 -197
  121. orq_ai_sdk/models/searchknowledgeop.py +108 -1
  122. orq_ai_sdk/models/security.py +18 -1
  123. orq_ai_sdk/models/streamagentop.py +93 -2
  124. orq_ai_sdk/models/streamrunagentop.py +1428 -195
  125. orq_ai_sdk/models/textcontentpartschema.py +34 -1
  126. orq_ai_sdk/models/thinkingconfigenabledschema.py +18 -1
  127. orq_ai_sdk/models/toolcallpart.py +18 -1
  128. orq_ai_sdk/models/tooldoneevent.py +18 -1
  129. orq_ai_sdk/models/toolexecutionfailedstreamingevent.py +50 -1
  130. orq_ai_sdk/models/toolexecutionfinishedstreamingevent.py +34 -1
  131. orq_ai_sdk/models/toolexecutionstartedstreamingevent.py +34 -1
  132. orq_ai_sdk/models/toolresultpart.py +18 -1
  133. orq_ai_sdk/models/toolreviewrequestedevent.py +18 -1
  134. orq_ai_sdk/models/toolstartedevent.py +18 -1
  135. orq_ai_sdk/models/updateagentop.py +1951 -404
  136. orq_ai_sdk/models/updatechunkop.py +46 -19
  137. orq_ai_sdk/models/updateconversationop.py +61 -39
  138. orq_ai_sdk/models/updatedatapointop.py +424 -80
  139. orq_ai_sdk/models/updatedatasetop.py +51 -2
  140. orq_ai_sdk/models/updatedatasourceop.py +17 -26
  141. orq_ai_sdk/models/updateevalop.py +577 -16
  142. orq_ai_sdk/models/{updatecontactop.py → updateidentityop.py} +78 -68
  143. orq_ai_sdk/models/updateknowledgeop.py +234 -190
  144. orq_ai_sdk/models/updatememorydocumentop.py +50 -1
  145. orq_ai_sdk/models/updatememoryop.py +50 -21
  146. orq_ai_sdk/models/updatememorystoreop.py +66 -1
  147. orq_ai_sdk/models/updatepromptop.py +2844 -1450
  148. orq_ai_sdk/models/updatetoolop.py +592 -9
  149. orq_ai_sdk/models/usermessagerequest.py +18 -2
  150. orq_ai_sdk/moderations.py +218 -0
  151. orq_ai_sdk/orq_completions.py +660 -0
  152. orq_ai_sdk/orq_responses.py +398 -0
  153. orq_ai_sdk/prompts.py +28 -36
  154. orq_ai_sdk/rerank.py +232 -0
  155. orq_ai_sdk/router.py +89 -641
  156. orq_ai_sdk/sdk.py +3 -0
  157. orq_ai_sdk/speech.py +251 -0
  158. orq_ai_sdk/transcriptions.py +326 -0
  159. orq_ai_sdk/translations.py +298 -0
  160. orq_ai_sdk/utils/__init__.py +13 -1
  161. orq_ai_sdk/variations.py +254 -0
  162. orq_ai_sdk-4.2.6.dist-info/METADATA +888 -0
  163. orq_ai_sdk-4.2.6.dist-info/RECORD +263 -0
  164. {orq_ai_sdk-4.2.0rc28.dist-info → orq_ai_sdk-4.2.6.dist-info}/WHEEL +2 -1
  165. orq_ai_sdk-4.2.6.dist-info/top_level.txt +1 -0
  166. orq_ai_sdk-4.2.0rc28.dist-info/METADATA +0 -867
  167. orq_ai_sdk-4.2.0rc28.dist-info/RECORD +0 -233
@@ -105,6 +105,22 @@ class UpdateDatapointMessagesCacheControl(BaseModel):
105
105
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
106
106
  """
107
107
 
108
+ @model_serializer(mode="wrap")
109
+ def serialize_model(self, handler):
110
+ optional_fields = set(["ttl"])
111
+ serialized = handler(self)
112
+ m = {}
113
+
114
+ for n, f in type(self).model_fields.items():
115
+ k = f.alias or n
116
+ val = serialized.get(k)
117
+
118
+ if val != UNSET_SENTINEL:
119
+ if val is not None or k not in optional_fields:
120
+ m[k] = val
121
+
122
+ return m
123
+
108
124
 
109
125
  class UpdateDatapointMessagesToolMessageTypedDict(TypedDict):
110
126
  role: UpdateDatapointMessagesDatasetsRequestRequestBody5Role
@@ -130,31 +146,26 @@ class UpdateDatapointMessagesToolMessage(BaseModel):
130
146
 
131
147
  @model_serializer(mode="wrap")
132
148
  def serialize_model(self, handler):
133
- optional_fields = ["cache_control"]
134
- nullable_fields = ["tool_call_id"]
135
- null_default_fields = []
136
-
149
+ optional_fields = set(["cache_control"])
150
+ nullable_fields = set(["tool_call_id"])
137
151
  serialized = handler(self)
138
-
139
152
  m = {}
140
153
 
141
154
  for n, f in type(self).model_fields.items():
142
155
  k = f.alias or n
143
156
  val = serialized.get(k)
144
- serialized.pop(k, None)
145
-
146
- optional_nullable = k in optional_fields and k in nullable_fields
147
- is_set = (
148
- self.__pydantic_fields_set__.intersection({n})
149
- or k in null_default_fields
150
- ) # pylint: disable=no-member
151
-
152
- if val is not None and val != UNSET_SENTINEL:
153
- m[k] = val
154
- elif val != UNSET_SENTINEL and (
155
- not k in optional_fields or (optional_nullable and is_set)
156
- ):
157
- m[k] = val
157
+ is_nullable_and_explicitly_set = (
158
+ k in nullable_fields
159
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
160
+ )
161
+
162
+ if val != UNSET_SENTINEL:
163
+ if (
164
+ val is not None
165
+ or k not in optional_fields
166
+ or is_nullable_and_explicitly_set
167
+ ):
168
+ m[k] = val
158
169
 
159
170
  return m
160
171
 
@@ -231,6 +242,22 @@ class UpdateDatapointMessagesFunction(BaseModel):
231
242
  arguments: Optional[str] = None
232
243
  r"""The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function."""
233
244
 
245
+ @model_serializer(mode="wrap")
246
+ def serialize_model(self, handler):
247
+ optional_fields = set(["name", "arguments"])
248
+ serialized = handler(self)
249
+ m = {}
250
+
251
+ for n, f in type(self).model_fields.items():
252
+ k = f.alias or n
253
+ val = serialized.get(k)
254
+
255
+ if val != UNSET_SENTINEL:
256
+ if val is not None or k not in optional_fields:
257
+ m[k] = val
258
+
259
+ return m
260
+
234
261
 
235
262
  class UpdateDatapointMessagesToolCallsTypedDict(TypedDict):
236
263
  id: str
@@ -254,6 +281,22 @@ class UpdateDatapointMessagesToolCalls(BaseModel):
254
281
  thought_signature: Optional[str] = None
255
282
  r"""Encrypted representation of the model internal reasoning state during function calling. Required by Gemini 3 models when continuing a conversation after a tool call."""
256
283
 
284
+ @model_serializer(mode="wrap")
285
+ def serialize_model(self, handler):
286
+ optional_fields = set(["thought_signature"])
287
+ serialized = handler(self)
288
+ m = {}
289
+
290
+ for n, f in type(self).model_fields.items():
291
+ k = f.alias or n
292
+ val = serialized.get(k)
293
+
294
+ if val != UNSET_SENTINEL:
295
+ if val is not None or k not in optional_fields:
296
+ m[k] = val
297
+
298
+ return m
299
+
257
300
 
258
301
  class UpdateDatapointMessagesAssistantMessageTypedDict(TypedDict):
259
302
  role: UpdateDatapointMessagesDatasetsRequestRequestBodyRole
@@ -295,31 +338,26 @@ class UpdateDatapointMessagesAssistantMessage(BaseModel):
295
338
 
296
339
  @model_serializer(mode="wrap")
297
340
  def serialize_model(self, handler):
298
- optional_fields = ["content", "refusal", "name", "audio", "tool_calls"]
299
- nullable_fields = ["content", "refusal", "audio"]
300
- null_default_fields = []
301
-
341
+ optional_fields = set(["content", "refusal", "name", "audio", "tool_calls"])
342
+ nullable_fields = set(["content", "refusal", "audio"])
302
343
  serialized = handler(self)
303
-
304
344
  m = {}
305
345
 
306
346
  for n, f in type(self).model_fields.items():
307
347
  k = f.alias or n
308
348
  val = serialized.get(k)
309
- serialized.pop(k, None)
310
-
311
- optional_nullable = k in optional_fields and k in nullable_fields
312
- is_set = (
313
- self.__pydantic_fields_set__.intersection({n})
314
- or k in null_default_fields
315
- ) # pylint: disable=no-member
316
-
317
- if val is not None and val != UNSET_SENTINEL:
318
- m[k] = val
319
- elif val != UNSET_SENTINEL and (
320
- not k in optional_fields or (optional_nullable and is_set)
321
- ):
322
- m[k] = val
349
+ is_nullable_and_explicitly_set = (
350
+ k in nullable_fields
351
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
352
+ )
353
+
354
+ if val != UNSET_SENTINEL:
355
+ if (
356
+ val is not None
357
+ or k not in optional_fields
358
+ or is_nullable_and_explicitly_set
359
+ ):
360
+ m[k] = val
323
361
 
324
362
  return m
325
363
 
@@ -375,6 +413,22 @@ class UpdateDatapoint2CacheControl(BaseModel):
375
413
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
376
414
  """
377
415
 
416
+ @model_serializer(mode="wrap")
417
+ def serialize_model(self, handler):
418
+ optional_fields = set(["ttl"])
419
+ serialized = handler(self)
420
+ m = {}
421
+
422
+ for n, f in type(self).model_fields.items():
423
+ k = f.alias or n
424
+ val = serialized.get(k)
425
+
426
+ if val != UNSET_SENTINEL:
427
+ if val is not None or k not in optional_fields:
428
+ m[k] = val
429
+
430
+ return m
431
+
378
432
 
379
433
  class UpdateDatapoint24TypedDict(TypedDict):
380
434
  type: UpdateDatapoint2Type
@@ -393,6 +447,22 @@ class UpdateDatapoint24(BaseModel):
393
447
 
394
448
  cache_control: Optional[UpdateDatapoint2CacheControl] = None
395
449
 
450
+ @model_serializer(mode="wrap")
451
+ def serialize_model(self, handler):
452
+ optional_fields = set(["cache_control"])
453
+ serialized = handler(self)
454
+ m = {}
455
+
456
+ for n, f in type(self).model_fields.items():
457
+ k = f.alias or n
458
+ val = serialized.get(k)
459
+
460
+ if val != UNSET_SENTINEL:
461
+ if val is not None or k not in optional_fields:
462
+ m[k] = val
463
+
464
+ return m
465
+
396
466
 
397
467
  UpdateDatapointContent2TypedDict = TypeAliasType(
398
468
  "UpdateDatapointContent2TypedDict",
@@ -449,6 +519,22 @@ class UpdateDatapointMessagesUserMessage(BaseModel):
449
519
  name: Optional[str] = None
450
520
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
451
521
 
522
+ @model_serializer(mode="wrap")
523
+ def serialize_model(self, handler):
524
+ optional_fields = set(["name"])
525
+ serialized = handler(self)
526
+ m = {}
527
+
528
+ for n, f in type(self).model_fields.items():
529
+ k = f.alias or n
530
+ val = serialized.get(k)
531
+
532
+ if val != UNSET_SENTINEL:
533
+ if val is not None or k not in optional_fields:
534
+ m[k] = val
535
+
536
+ return m
537
+
452
538
 
453
539
  UpdateDatapointMessagesDatasetsRole = Literal["developer",]
454
540
  r"""The role of the messages author, in this case `developer`."""
@@ -486,6 +572,22 @@ class UpdateDatapointMessagesDeveloperMessage(BaseModel):
486
572
  name: Optional[str] = None
487
573
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
488
574
 
575
+ @model_serializer(mode="wrap")
576
+ def serialize_model(self, handler):
577
+ optional_fields = set(["name"])
578
+ serialized = handler(self)
579
+ m = {}
580
+
581
+ for n, f in type(self).model_fields.items():
582
+ k = f.alias or n
583
+ val = serialized.get(k)
584
+
585
+ if val != UNSET_SENTINEL:
586
+ if val is not None or k not in optional_fields:
587
+ m[k] = val
588
+
589
+ return m
590
+
489
591
 
490
592
  UpdateDatapointMessagesRole = Literal["system",]
491
593
  r"""The role of the messages author, in this case `system`."""
@@ -527,6 +629,22 @@ class UpdateDatapointMessagesSystemMessage(BaseModel):
527
629
  name: Optional[str] = None
528
630
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
529
631
 
632
+ @model_serializer(mode="wrap")
633
+ def serialize_model(self, handler):
634
+ optional_fields = set(["name"])
635
+ serialized = handler(self)
636
+ m = {}
637
+
638
+ for n, f in type(self).model_fields.items():
639
+ k = f.alias or n
640
+ val = serialized.get(k)
641
+
642
+ if val != UNSET_SENTINEL:
643
+ if val is not None or k not in optional_fields:
644
+ m[k] = val
645
+
646
+ return m
647
+
530
648
 
531
649
  UpdateDatapointMessagesTypedDict = TypeAliasType(
532
650
  "UpdateDatapointMessagesTypedDict",
@@ -569,6 +687,22 @@ class UpdateDatapointRequestBody(BaseModel):
569
687
 
570
688
  expected_output: Optional[str] = None
571
689
 
690
+ @model_serializer(mode="wrap")
691
+ def serialize_model(self, handler):
692
+ optional_fields = set(["inputs", "messages", "expected_output"])
693
+ serialized = handler(self)
694
+ m = {}
695
+
696
+ for n, f in type(self).model_fields.items():
697
+ k = f.alias or n
698
+ val = serialized.get(k)
699
+
700
+ if val != UNSET_SENTINEL:
701
+ if val is not None or k not in optional_fields:
702
+ m[k] = val
703
+
704
+ return m
705
+
572
706
 
573
707
  class UpdateDatapointRequestTypedDict(TypedDict):
574
708
  dataset_id: str
@@ -594,6 +728,22 @@ class UpdateDatapointRequest(BaseModel):
594
728
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
595
729
  ] = None
596
730
 
731
+ @model_serializer(mode="wrap")
732
+ def serialize_model(self, handler):
733
+ optional_fields = set(["RequestBody"])
734
+ serialized = handler(self)
735
+ m = {}
736
+
737
+ for n, f in type(self).model_fields.items():
738
+ k = f.alias or n
739
+ val = serialized.get(k)
740
+
741
+ if val != UNSET_SENTINEL:
742
+ if val is not None or k not in optional_fields:
743
+ m[k] = val
744
+
745
+ return m
746
+
597
747
 
598
748
  UpdateDatapointMessagesDatasetsResponse200ApplicationJSONResponseBody5Role = Literal[
599
749
  "tool",
@@ -670,6 +820,22 @@ class UpdateDatapointMessagesDatasetsCacheControl(BaseModel):
670
820
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
671
821
  """
672
822
 
823
+ @model_serializer(mode="wrap")
824
+ def serialize_model(self, handler):
825
+ optional_fields = set(["ttl"])
826
+ serialized = handler(self)
827
+ m = {}
828
+
829
+ for n, f in type(self).model_fields.items():
830
+ k = f.alias or n
831
+ val = serialized.get(k)
832
+
833
+ if val != UNSET_SENTINEL:
834
+ if val is not None or k not in optional_fields:
835
+ m[k] = val
836
+
837
+ return m
838
+
673
839
 
674
840
  class UpdateDatapointMessagesDatasetsToolMessageTypedDict(TypedDict):
675
841
  role: UpdateDatapointMessagesDatasetsResponse200ApplicationJSONResponseBody5Role
@@ -697,31 +863,26 @@ class UpdateDatapointMessagesDatasetsToolMessage(BaseModel):
697
863
 
698
864
  @model_serializer(mode="wrap")
699
865
  def serialize_model(self, handler):
700
- optional_fields = ["cache_control"]
701
- nullable_fields = ["tool_call_id"]
702
- null_default_fields = []
703
-
866
+ optional_fields = set(["cache_control"])
867
+ nullable_fields = set(["tool_call_id"])
704
868
  serialized = handler(self)
705
-
706
869
  m = {}
707
870
 
708
871
  for n, f in type(self).model_fields.items():
709
872
  k = f.alias or n
710
873
  val = serialized.get(k)
711
- serialized.pop(k, None)
712
-
713
- optional_nullable = k in optional_fields and k in nullable_fields
714
- is_set = (
715
- self.__pydantic_fields_set__.intersection({n})
716
- or k in null_default_fields
717
- ) # pylint: disable=no-member
718
-
719
- if val is not None and val != UNSET_SENTINEL:
720
- m[k] = val
721
- elif val != UNSET_SENTINEL and (
722
- not k in optional_fields or (optional_nullable and is_set)
723
- ):
724
- m[k] = val
874
+ is_nullable_and_explicitly_set = (
875
+ k in nullable_fields
876
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
877
+ )
878
+
879
+ if val != UNSET_SENTINEL:
880
+ if (
881
+ val is not None
882
+ or k not in optional_fields
883
+ or is_nullable_and_explicitly_set
884
+ ):
885
+ m[k] = val
725
886
 
726
887
  return m
727
888
 
@@ -802,6 +963,22 @@ class UpdateDatapointMessagesDatasetsFunction(BaseModel):
802
963
  arguments: Optional[str] = None
803
964
  r"""The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function."""
804
965
 
966
+ @model_serializer(mode="wrap")
967
+ def serialize_model(self, handler):
968
+ optional_fields = set(["name", "arguments"])
969
+ serialized = handler(self)
970
+ m = {}
971
+
972
+ for n, f in type(self).model_fields.items():
973
+ k = f.alias or n
974
+ val = serialized.get(k)
975
+
976
+ if val != UNSET_SENTINEL:
977
+ if val is not None or k not in optional_fields:
978
+ m[k] = val
979
+
980
+ return m
981
+
805
982
 
806
983
  class UpdateDatapointMessagesDatasetsToolCallsTypedDict(TypedDict):
807
984
  id: str
@@ -825,6 +1002,22 @@ class UpdateDatapointMessagesDatasetsToolCalls(BaseModel):
825
1002
  thought_signature: Optional[str] = None
826
1003
  r"""Encrypted representation of the model internal reasoning state during function calling. Required by Gemini 3 models when continuing a conversation after a tool call."""
827
1004
 
1005
+ @model_serializer(mode="wrap")
1006
+ def serialize_model(self, handler):
1007
+ optional_fields = set(["thought_signature"])
1008
+ serialized = handler(self)
1009
+ m = {}
1010
+
1011
+ for n, f in type(self).model_fields.items():
1012
+ k = f.alias or n
1013
+ val = serialized.get(k)
1014
+
1015
+ if val != UNSET_SENTINEL:
1016
+ if val is not None or k not in optional_fields:
1017
+ m[k] = val
1018
+
1019
+ return m
1020
+
828
1021
 
829
1022
  class UpdateDatapointMessagesDatasetsAssistantMessageTypedDict(TypedDict):
830
1023
  role: UpdateDatapointMessagesDatasetsResponse200ApplicationJSONResponseBodyRole
@@ -868,31 +1061,26 @@ class UpdateDatapointMessagesDatasetsAssistantMessage(BaseModel):
868
1061
 
869
1062
  @model_serializer(mode="wrap")
870
1063
  def serialize_model(self, handler):
871
- optional_fields = ["content", "refusal", "name", "audio", "tool_calls"]
872
- nullable_fields = ["content", "refusal", "audio"]
873
- null_default_fields = []
874
-
1064
+ optional_fields = set(["content", "refusal", "name", "audio", "tool_calls"])
1065
+ nullable_fields = set(["content", "refusal", "audio"])
875
1066
  serialized = handler(self)
876
-
877
1067
  m = {}
878
1068
 
879
1069
  for n, f in type(self).model_fields.items():
880
1070
  k = f.alias or n
881
1071
  val = serialized.get(k)
882
- serialized.pop(k, None)
883
-
884
- optional_nullable = k in optional_fields and k in nullable_fields
885
- is_set = (
886
- self.__pydantic_fields_set__.intersection({n})
887
- or k in null_default_fields
888
- ) # pylint: disable=no-member
889
-
890
- if val is not None and val != UNSET_SENTINEL:
891
- m[k] = val
892
- elif val != UNSET_SENTINEL and (
893
- not k in optional_fields or (optional_nullable and is_set)
894
- ):
895
- m[k] = val
1072
+ is_nullable_and_explicitly_set = (
1073
+ k in nullable_fields
1074
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
1075
+ )
1076
+
1077
+ if val != UNSET_SENTINEL:
1078
+ if (
1079
+ val is not None
1080
+ or k not in optional_fields
1081
+ or is_nullable_and_explicitly_set
1082
+ ):
1083
+ m[k] = val
896
1084
 
897
1085
  return m
898
1086
 
@@ -948,6 +1136,22 @@ class UpdateDatapoint2DatasetsCacheControl(BaseModel):
948
1136
  Defaults to `5m`. Only supported by `Anthropic` Claude models.
949
1137
  """
950
1138
 
1139
+ @model_serializer(mode="wrap")
1140
+ def serialize_model(self, handler):
1141
+ optional_fields = set(["ttl"])
1142
+ serialized = handler(self)
1143
+ m = {}
1144
+
1145
+ for n, f in type(self).model_fields.items():
1146
+ k = f.alias or n
1147
+ val = serialized.get(k)
1148
+
1149
+ if val != UNSET_SENTINEL:
1150
+ if val is not None or k not in optional_fields:
1151
+ m[k] = val
1152
+
1153
+ return m
1154
+
951
1155
 
952
1156
  class UpdateDatapoint2Datasets4TypedDict(TypedDict):
953
1157
  type: UpdateDatapoint2DatasetsResponseType
@@ -966,6 +1170,22 @@ class UpdateDatapoint2Datasets4(BaseModel):
966
1170
 
967
1171
  cache_control: Optional[UpdateDatapoint2DatasetsCacheControl] = None
968
1172
 
1173
+ @model_serializer(mode="wrap")
1174
+ def serialize_model(self, handler):
1175
+ optional_fields = set(["cache_control"])
1176
+ serialized = handler(self)
1177
+ m = {}
1178
+
1179
+ for n, f in type(self).model_fields.items():
1180
+ k = f.alias or n
1181
+ val = serialized.get(k)
1182
+
1183
+ if val != UNSET_SENTINEL:
1184
+ if val is not None or k not in optional_fields:
1185
+ m[k] = val
1186
+
1187
+ return m
1188
+
969
1189
 
970
1190
  UpdateDatapointContentDatasetsResponse2TypedDict = TypeAliasType(
971
1191
  "UpdateDatapointContentDatasetsResponse2TypedDict",
@@ -1024,6 +1244,22 @@ class UpdateDatapointMessagesDatasetsUserMessage(BaseModel):
1024
1244
  name: Optional[str] = None
1025
1245
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
1026
1246
 
1247
+ @model_serializer(mode="wrap")
1248
+ def serialize_model(self, handler):
1249
+ optional_fields = set(["name"])
1250
+ serialized = handler(self)
1251
+ m = {}
1252
+
1253
+ for n, f in type(self).model_fields.items():
1254
+ k = f.alias or n
1255
+ val = serialized.get(k)
1256
+
1257
+ if val != UNSET_SENTINEL:
1258
+ if val is not None or k not in optional_fields:
1259
+ m[k] = val
1260
+
1261
+ return m
1262
+
1027
1263
 
1028
1264
  UpdateDatapointMessagesDatasetsResponse200Role = Literal["developer",]
1029
1265
  r"""The role of the messages author, in this case `developer`."""
@@ -1062,6 +1298,22 @@ class UpdateDatapointMessagesDatasetsDeveloperMessage(BaseModel):
1062
1298
  name: Optional[str] = None
1063
1299
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
1064
1300
 
1301
+ @model_serializer(mode="wrap")
1302
+ def serialize_model(self, handler):
1303
+ optional_fields = set(["name"])
1304
+ serialized = handler(self)
1305
+ m = {}
1306
+
1307
+ for n, f in type(self).model_fields.items():
1308
+ k = f.alias or n
1309
+ val = serialized.get(k)
1310
+
1311
+ if val != UNSET_SENTINEL:
1312
+ if val is not None or k not in optional_fields:
1313
+ m[k] = val
1314
+
1315
+ return m
1316
+
1065
1317
 
1066
1318
  UpdateDatapointMessagesDatasetsResponseRole = Literal["system",]
1067
1319
  r"""The role of the messages author, in this case `system`."""
@@ -1104,6 +1356,22 @@ class UpdateDatapointMessagesDatasetsSystemMessage(BaseModel):
1104
1356
  name: Optional[str] = None
1105
1357
  r"""An optional name for the participant. Provides the model information to differentiate between participants of the same role."""
1106
1358
 
1359
+ @model_serializer(mode="wrap")
1360
+ def serialize_model(self, handler):
1361
+ optional_fields = set(["name"])
1362
+ serialized = handler(self)
1363
+ m = {}
1364
+
1365
+ for n, f in type(self).model_fields.items():
1366
+ k = f.alias or n
1367
+ val = serialized.get(k)
1368
+
1369
+ if val != UNSET_SENTINEL:
1370
+ if val is not None or k not in optional_fields:
1371
+ m[k] = val
1372
+
1373
+ return m
1374
+
1107
1375
 
1108
1376
  UpdateDatapointDatasetsMessagesTypedDict = TypeAliasType(
1109
1377
  "UpdateDatapointDatasetsMessagesTypedDict",
@@ -1177,9 +1445,25 @@ class UpdateDatapointEvaluations3(BaseModel):
1177
1445
 
1178
1446
  source: Optional[UpdateDatapointEvaluationsDatasetsResponseSource] = "orq"
1179
1447
 
1180
- reviewed_at: Optional[datetime] = parse_datetime("2026-01-14T08:04:45.149Z")
1448
+ reviewed_at: Optional[datetime] = parse_datetime("2026-01-25T15:02:19.591Z")
1181
1449
  r"""The date and time the item was reviewed"""
1182
1450
 
1451
+ @model_serializer(mode="wrap")
1452
+ def serialize_model(self, handler):
1453
+ optional_fields = set(["source", "reviewed_at"])
1454
+ serialized = handler(self)
1455
+ m = {}
1456
+
1457
+ for n, f in type(self).model_fields.items():
1458
+ k = f.alias or n
1459
+ val = serialized.get(k)
1460
+
1461
+ if val != UNSET_SENTINEL:
1462
+ if val is not None or k not in optional_fields:
1463
+ m[k] = val
1464
+
1465
+ return m
1466
+
1183
1467
 
1184
1468
  UpdateDatapointEvaluationsDatasetsEvaluationType = Literal["human_review",]
1185
1469
  r"""The type of evaluation"""
@@ -1229,9 +1513,25 @@ class UpdateDatapointEvaluations2(BaseModel):
1229
1513
 
1230
1514
  source: Optional[UpdateDatapointEvaluationsDatasetsSource] = "orq"
1231
1515
 
1232
- reviewed_at: Optional[datetime] = parse_datetime("2026-01-14T08:04:45.148Z")
1516
+ reviewed_at: Optional[datetime] = parse_datetime("2026-01-25T15:02:19.591Z")
1233
1517
  r"""The date and time the item was reviewed"""
1234
1518
 
1519
+ @model_serializer(mode="wrap")
1520
+ def serialize_model(self, handler):
1521
+ optional_fields = set(["source", "reviewed_at"])
1522
+ serialized = handler(self)
1523
+ m = {}
1524
+
1525
+ for n, f in type(self).model_fields.items():
1526
+ k = f.alias or n
1527
+ val = serialized.get(k)
1528
+
1529
+ if val != UNSET_SENTINEL:
1530
+ if val is not None or k not in optional_fields:
1531
+ m[k] = val
1532
+
1533
+ return m
1534
+
1235
1535
 
1236
1536
  UpdateDatapointEvaluationsEvaluationType = Literal["human_review",]
1237
1537
  r"""The type of evaluation"""
@@ -1281,9 +1581,25 @@ class UpdateDatapointEvaluations1(BaseModel):
1281
1581
 
1282
1582
  source: Optional[UpdateDatapointEvaluationsSource] = "orq"
1283
1583
 
1284
- reviewed_at: Optional[datetime] = parse_datetime("2026-01-14T08:04:45.147Z")
1584
+ reviewed_at: Optional[datetime] = parse_datetime("2026-01-25T15:02:19.590Z")
1285
1585
  r"""The date and time the item was reviewed"""
1286
1586
 
1587
+ @model_serializer(mode="wrap")
1588
+ def serialize_model(self, handler):
1589
+ optional_fields = set(["source", "reviewed_at"])
1590
+ serialized = handler(self)
1591
+ m = {}
1592
+
1593
+ for n, f in type(self).model_fields.items():
1594
+ k = f.alias or n
1595
+ val = serialized.get(k)
1596
+
1597
+ if val != UNSET_SENTINEL:
1598
+ if val is not None or k not in optional_fields:
1599
+ m[k] = val
1600
+
1601
+ return m
1602
+
1287
1603
 
1288
1604
  UpdateDatapointEvaluationsTypedDict = TypeAliasType(
1289
1605
  "UpdateDatapointEvaluationsTypedDict",
@@ -1368,5 +1684,33 @@ class UpdateDatapointResponseBody(BaseModel):
1368
1684
  created: Optional[datetime] = None
1369
1685
  r"""The date and time the resource was created"""
1370
1686
 
1371
- updated: Optional[datetime] = parse_datetime("2026-01-14T08:04:31.906Z")
1687
+ updated: Optional[datetime] = parse_datetime("2026-01-25T15:02:07.185Z")
1372
1688
  r"""The date and time the resource was last updated"""
1689
+
1690
+ @model_serializer(mode="wrap")
1691
+ def serialize_model(self, handler):
1692
+ optional_fields = set(
1693
+ [
1694
+ "inputs",
1695
+ "messages",
1696
+ "expected_output",
1697
+ "evaluations",
1698
+ "snapshot_version",
1699
+ "created_by_id",
1700
+ "updated_by_id",
1701
+ "created",
1702
+ "updated",
1703
+ ]
1704
+ )
1705
+ serialized = handler(self)
1706
+ m = {}
1707
+
1708
+ for n, f in type(self).model_fields.items():
1709
+ k = f.alias or n
1710
+ val = serialized.get(k)
1711
+
1712
+ if val != UNSET_SENTINEL:
1713
+ if val is not None or k not in optional_fields:
1714
+ m[k] = val
1715
+
1716
+ return m