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.
- orq_ai_sdk/_hooks/globalhook.py +0 -1
- orq_ai_sdk/_version.py +3 -3
- orq_ai_sdk/audio.py +30 -0
- orq_ai_sdk/basesdk.py +20 -6
- orq_ai_sdk/chat.py +22 -0
- orq_ai_sdk/completions.py +332 -0
- orq_ai_sdk/contacts.py +43 -855
- orq_ai_sdk/deployments.py +61 -0
- orq_ai_sdk/edits.py +258 -0
- orq_ai_sdk/embeddings.py +238 -0
- orq_ai_sdk/generations.py +272 -0
- orq_ai_sdk/identities.py +1037 -0
- orq_ai_sdk/images.py +28 -0
- orq_ai_sdk/models/__init__.py +5341 -737
- orq_ai_sdk/models/actionreviewedstreamingevent.py +18 -1
- orq_ai_sdk/models/actionreviewrequestedstreamingevent.py +44 -1
- orq_ai_sdk/models/agenterroredstreamingevent.py +18 -1
- orq_ai_sdk/models/agentinactivestreamingevent.py +168 -70
- orq_ai_sdk/models/agentmessagecreatedstreamingevent.py +18 -2
- orq_ai_sdk/models/agentresponsemessage.py +18 -2
- orq_ai_sdk/models/agentstartedstreamingevent.py +127 -2
- orq_ai_sdk/models/agentthoughtstreamingevent.py +178 -211
- orq_ai_sdk/models/conversationresponse.py +31 -20
- orq_ai_sdk/models/conversationwithmessagesresponse.py +31 -20
- orq_ai_sdk/models/createagentrequestop.py +1922 -384
- orq_ai_sdk/models/createagentresponse.py +147 -91
- orq_ai_sdk/models/createagentresponserequestop.py +111 -2
- orq_ai_sdk/models/createchatcompletionop.py +1375 -861
- orq_ai_sdk/models/createchunkop.py +46 -19
- orq_ai_sdk/models/createcompletionop.py +1890 -0
- orq_ai_sdk/models/createcontactop.py +45 -56
- orq_ai_sdk/models/createconversationop.py +61 -39
- orq_ai_sdk/models/createconversationresponseop.py +68 -4
- orq_ai_sdk/models/createdatasetitemop.py +424 -80
- orq_ai_sdk/models/createdatasetop.py +19 -2
- orq_ai_sdk/models/createdatasourceop.py +92 -26
- orq_ai_sdk/models/createembeddingop.py +384 -0
- orq_ai_sdk/models/createevalop.py +552 -24
- orq_ai_sdk/models/createidentityop.py +176 -0
- orq_ai_sdk/models/createimageeditop.py +504 -0
- orq_ai_sdk/models/createimageop.py +208 -117
- orq_ai_sdk/models/createimagevariationop.py +486 -0
- orq_ai_sdk/models/createknowledgeop.py +186 -121
- orq_ai_sdk/models/creatememorydocumentop.py +50 -1
- orq_ai_sdk/models/creatememoryop.py +34 -21
- orq_ai_sdk/models/creatememorystoreop.py +34 -1
- orq_ai_sdk/models/createmoderationop.py +521 -0
- orq_ai_sdk/models/createpromptop.py +2748 -1252
- orq_ai_sdk/models/creatererankop.py +416 -0
- orq_ai_sdk/models/createresponseop.py +2567 -0
- orq_ai_sdk/models/createspeechop.py +316 -0
- orq_ai_sdk/models/createtoolop.py +537 -12
- orq_ai_sdk/models/createtranscriptionop.py +562 -0
- orq_ai_sdk/models/createtranslationop.py +540 -0
- orq_ai_sdk/models/datapart.py +18 -1
- orq_ai_sdk/models/deletechunksop.py +34 -1
- orq_ai_sdk/models/{deletecontactop.py → deleteidentityop.py} +9 -9
- orq_ai_sdk/models/deletepromptop.py +26 -0
- orq_ai_sdk/models/deploymentcreatemetricop.py +362 -76
- orq_ai_sdk/models/deploymentgetconfigop.py +635 -194
- orq_ai_sdk/models/deploymentinvokeop.py +168 -173
- orq_ai_sdk/models/deploymentsop.py +195 -58
- orq_ai_sdk/models/deploymentstreamop.py +652 -304
- orq_ai_sdk/models/errorpart.py +18 -1
- orq_ai_sdk/models/filecontentpartschema.py +18 -1
- orq_ai_sdk/models/filegetop.py +19 -2
- orq_ai_sdk/models/filelistop.py +35 -2
- orq_ai_sdk/models/filepart.py +50 -1
- orq_ai_sdk/models/fileuploadop.py +51 -2
- orq_ai_sdk/models/generateconversationnameop.py +31 -20
- orq_ai_sdk/models/get_v2_evaluators_id_versionsop.py +34 -1
- orq_ai_sdk/models/get_v2_tools_tool_id_versions_version_id_op.py +18 -1
- orq_ai_sdk/models/get_v2_tools_tool_id_versionsop.py +34 -1
- orq_ai_sdk/models/getallmemoriesop.py +34 -21
- orq_ai_sdk/models/getallmemorydocumentsop.py +42 -1
- orq_ai_sdk/models/getallmemorystoresop.py +34 -1
- orq_ai_sdk/models/getallpromptsop.py +1690 -230
- orq_ai_sdk/models/getalltoolsop.py +325 -8
- orq_ai_sdk/models/getchunkscountop.py +34 -1
- orq_ai_sdk/models/getevalsop.py +395 -43
- orq_ai_sdk/models/getonechunkop.py +14 -19
- orq_ai_sdk/models/getoneknowledgeop.py +116 -96
- orq_ai_sdk/models/getonepromptop.py +1673 -230
- orq_ai_sdk/models/getpromptversionop.py +1670 -216
- orq_ai_sdk/models/imagecontentpartschema.py +50 -1
- orq_ai_sdk/models/internal/globals.py +18 -1
- orq_ai_sdk/models/invokeagentop.py +140 -2
- orq_ai_sdk/models/invokedeploymentrequest.py +418 -80
- orq_ai_sdk/models/invokeevalop.py +160 -131
- orq_ai_sdk/models/listagentsop.py +793 -166
- orq_ai_sdk/models/listchunksop.py +32 -19
- orq_ai_sdk/models/listchunkspaginatedop.py +46 -19
- orq_ai_sdk/models/listconversationsop.py +18 -1
- orq_ai_sdk/models/listdatasetdatapointsop.py +252 -42
- orq_ai_sdk/models/listdatasetsop.py +35 -2
- orq_ai_sdk/models/listdatasourcesop.py +35 -26
- orq_ai_sdk/models/{listcontactsop.py → listidentitiesop.py} +89 -79
- orq_ai_sdk/models/listknowledgebasesop.py +132 -96
- orq_ai_sdk/models/listmodelsop.py +1 -0
- orq_ai_sdk/models/listpromptversionsop.py +1684 -216
- orq_ai_sdk/models/parseop.py +161 -17
- orq_ai_sdk/models/partdoneevent.py +19 -2
- orq_ai_sdk/models/post_v2_router_ocrop.py +408 -0
- orq_ai_sdk/models/publiccontact.py +27 -4
- orq_ai_sdk/models/publicidentity.py +62 -0
- orq_ai_sdk/models/reasoningpart.py +19 -2
- orq_ai_sdk/models/refusalpartschema.py +18 -1
- orq_ai_sdk/models/remoteconfigsgetconfigop.py +34 -1
- orq_ai_sdk/models/responsedoneevent.py +114 -84
- orq_ai_sdk/models/responsestartedevent.py +18 -1
- orq_ai_sdk/models/retrieveagentrequestop.py +787 -166
- orq_ai_sdk/models/retrievedatapointop.py +236 -42
- orq_ai_sdk/models/retrievedatasetop.py +19 -2
- orq_ai_sdk/models/retrievedatasourceop.py +17 -26
- orq_ai_sdk/models/{retrievecontactop.py → retrieveidentityop.py} +38 -41
- orq_ai_sdk/models/retrievememorydocumentop.py +18 -1
- orq_ai_sdk/models/retrievememoryop.py +18 -21
- orq_ai_sdk/models/retrievememorystoreop.py +18 -1
- orq_ai_sdk/models/retrievetoolop.py +309 -8
- orq_ai_sdk/models/runagentop.py +1451 -197
- orq_ai_sdk/models/searchknowledgeop.py +108 -1
- orq_ai_sdk/models/security.py +18 -1
- orq_ai_sdk/models/streamagentop.py +93 -2
- orq_ai_sdk/models/streamrunagentop.py +1428 -195
- orq_ai_sdk/models/textcontentpartschema.py +34 -1
- orq_ai_sdk/models/thinkingconfigenabledschema.py +18 -1
- orq_ai_sdk/models/toolcallpart.py +18 -1
- orq_ai_sdk/models/tooldoneevent.py +18 -1
- orq_ai_sdk/models/toolexecutionfailedstreamingevent.py +50 -1
- orq_ai_sdk/models/toolexecutionfinishedstreamingevent.py +34 -1
- orq_ai_sdk/models/toolexecutionstartedstreamingevent.py +34 -1
- orq_ai_sdk/models/toolresultpart.py +18 -1
- orq_ai_sdk/models/toolreviewrequestedevent.py +18 -1
- orq_ai_sdk/models/toolstartedevent.py +18 -1
- orq_ai_sdk/models/updateagentop.py +1951 -404
- orq_ai_sdk/models/updatechunkop.py +46 -19
- orq_ai_sdk/models/updateconversationop.py +61 -39
- orq_ai_sdk/models/updatedatapointop.py +424 -80
- orq_ai_sdk/models/updatedatasetop.py +51 -2
- orq_ai_sdk/models/updatedatasourceop.py +17 -26
- orq_ai_sdk/models/updateevalop.py +577 -16
- orq_ai_sdk/models/{updatecontactop.py → updateidentityop.py} +78 -68
- orq_ai_sdk/models/updateknowledgeop.py +234 -190
- orq_ai_sdk/models/updatememorydocumentop.py +50 -1
- orq_ai_sdk/models/updatememoryop.py +50 -21
- orq_ai_sdk/models/updatememorystoreop.py +66 -1
- orq_ai_sdk/models/updatepromptop.py +2844 -1450
- orq_ai_sdk/models/updatetoolop.py +592 -9
- orq_ai_sdk/models/usermessagerequest.py +18 -2
- orq_ai_sdk/moderations.py +218 -0
- orq_ai_sdk/orq_completions.py +660 -0
- orq_ai_sdk/orq_responses.py +398 -0
- orq_ai_sdk/prompts.py +28 -36
- orq_ai_sdk/rerank.py +232 -0
- orq_ai_sdk/router.py +89 -641
- orq_ai_sdk/sdk.py +3 -0
- orq_ai_sdk/speech.py +251 -0
- orq_ai_sdk/transcriptions.py +326 -0
- orq_ai_sdk/translations.py +298 -0
- orq_ai_sdk/utils/__init__.py +13 -1
- orq_ai_sdk/variations.py +254 -0
- orq_ai_sdk-4.2.6.dist-info/METADATA +888 -0
- orq_ai_sdk-4.2.6.dist-info/RECORD +263 -0
- {orq_ai_sdk-4.2.0rc28.dist-info → orq_ai_sdk-4.2.6.dist-info}/WHEEL +2 -1
- orq_ai_sdk-4.2.6.dist-info/top_level.txt +1 -0
- orq_ai_sdk-4.2.0rc28.dist-info/METADATA +0 -867
- orq_ai_sdk-4.2.0rc28.dist-info/RECORD +0 -233
|
@@ -74,6 +74,24 @@ class ListDatasourcesRequest(BaseModel):
|
|
|
74
74
|
] = None
|
|
75
75
|
r"""Filter datasources by status."""
|
|
76
76
|
|
|
77
|
+
@model_serializer(mode="wrap")
|
|
78
|
+
def serialize_model(self, handler):
|
|
79
|
+
optional_fields = set(
|
|
80
|
+
["starting_after", "ending_before", "q", "limit", "status"]
|
|
81
|
+
)
|
|
82
|
+
serialized = handler(self)
|
|
83
|
+
m = {}
|
|
84
|
+
|
|
85
|
+
for n, f in type(self).model_fields.items():
|
|
86
|
+
k = f.alias or n
|
|
87
|
+
val = serialized.get(k)
|
|
88
|
+
|
|
89
|
+
if val != UNSET_SENTINEL:
|
|
90
|
+
if val is not None or k not in optional_fields:
|
|
91
|
+
m[k] = val
|
|
92
|
+
|
|
93
|
+
return m
|
|
94
|
+
|
|
77
95
|
|
|
78
96
|
ListDatasourcesObject = Literal["list",]
|
|
79
97
|
|
|
@@ -130,7 +148,7 @@ class ListDatasourcesData(BaseModel):
|
|
|
130
148
|
r"""The number of chunks in the datasource"""
|
|
131
149
|
|
|
132
150
|
id: Annotated[Optional[str], pydantic.Field(alias="_id")] = (
|
|
133
|
-
"
|
|
151
|
+
"01KFTTTRHV09HZE38ZPZK87MQG"
|
|
134
152
|
)
|
|
135
153
|
r"""The unique identifier of the data source"""
|
|
136
154
|
|
|
@@ -148,37 +166,28 @@ class ListDatasourcesData(BaseModel):
|
|
|
148
166
|
|
|
149
167
|
@model_serializer(mode="wrap")
|
|
150
168
|
def serialize_model(self, handler):
|
|
151
|
-
optional_fields =
|
|
152
|
-
"_id",
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
"created_by_id",
|
|
156
|
-
"update_by_id",
|
|
157
|
-
]
|
|
158
|
-
nullable_fields = ["file_id", "created_by_id", "update_by_id"]
|
|
159
|
-
null_default_fields = []
|
|
160
|
-
|
|
169
|
+
optional_fields = set(
|
|
170
|
+
["_id", "description", "file_id", "created_by_id", "update_by_id"]
|
|
171
|
+
)
|
|
172
|
+
nullable_fields = set(["file_id", "created_by_id", "update_by_id"])
|
|
161
173
|
serialized = handler(self)
|
|
162
|
-
|
|
163
174
|
m = {}
|
|
164
175
|
|
|
165
176
|
for n, f in type(self).model_fields.items():
|
|
166
177
|
k = f.alias or n
|
|
167
178
|
val = serialized.get(k)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
):
|
|
181
|
-
m[k] = val
|
|
179
|
+
is_nullable_and_explicitly_set = (
|
|
180
|
+
k in nullable_fields
|
|
181
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
if val != UNSET_SENTINEL:
|
|
185
|
+
if (
|
|
186
|
+
val is not None
|
|
187
|
+
or k not in optional_fields
|
|
188
|
+
or is_nullable_and_explicitly_set
|
|
189
|
+
):
|
|
190
|
+
m[k] = val
|
|
182
191
|
|
|
183
192
|
return m
|
|
184
193
|
|
|
@@ -17,18 +17,34 @@ from typing_extensions import Annotated, NotRequired, TypedDict
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class QueryParamFilterByTypedDict(TypedDict):
|
|
20
|
-
r"""Filter
|
|
20
|
+
r"""Filter identities by tags. Can be provided as JSON object {\"tags\": [\"premium\", \"beta-user\"]} or as query format \"tags=premium,beta-user\" """
|
|
21
21
|
|
|
22
22
|
tags: NotRequired[List[str]]
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class QueryParamFilterBy(BaseModel):
|
|
26
|
-
r"""Filter
|
|
26
|
+
r"""Filter identities by tags. Can be provided as JSON object {\"tags\": [\"premium\", \"beta-user\"]} or as query format \"tags=premium,beta-user\" """
|
|
27
27
|
|
|
28
28
|
tags: Annotated[Optional[List[str]], FieldMetadata(query=True)] = None
|
|
29
29
|
|
|
30
|
+
@model_serializer(mode="wrap")
|
|
31
|
+
def serialize_model(self, handler):
|
|
32
|
+
optional_fields = set(["tags"])
|
|
33
|
+
serialized = handler(self)
|
|
34
|
+
m = {}
|
|
35
|
+
|
|
36
|
+
for n, f in type(self).model_fields.items():
|
|
37
|
+
k = f.alias or n
|
|
38
|
+
val = serialized.get(k)
|
|
39
|
+
|
|
40
|
+
if val != UNSET_SENTINEL:
|
|
41
|
+
if val is not None or k not in optional_fields:
|
|
42
|
+
m[k] = val
|
|
43
|
+
|
|
44
|
+
return m
|
|
45
|
+
|
|
30
46
|
|
|
31
|
-
class
|
|
47
|
+
class ListIdentitiesRequestTypedDict(TypedDict):
|
|
32
48
|
limit: NotRequired[float]
|
|
33
49
|
r"""A limit on the number of objects to be returned. Limit can range between 1 and 50, and the default is 10"""
|
|
34
50
|
starting_after: NotRequired[str]
|
|
@@ -36,14 +52,14 @@ class ListContactsRequestTypedDict(TypedDict):
|
|
|
36
52
|
ending_before: NotRequired[str]
|
|
37
53
|
r"""A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with `01JJ1HDHN79XAS7A01WB3HYSDB`, your subsequent call can include `before=01JJ1HDHN79XAS7A01WB3HYSDB` in order to fetch the previous page of the list."""
|
|
38
54
|
search: NotRequired[str]
|
|
39
|
-
r"""Search
|
|
55
|
+
r"""Search identities by display name or email address. Minimum 2 characters required."""
|
|
40
56
|
filter_by: NotRequired[QueryParamFilterByTypedDict]
|
|
41
|
-
r"""Filter
|
|
57
|
+
r"""Filter identities by tags. Can be provided as JSON object {\"tags\": [\"premium\", \"beta-user\"]} or as query format \"tags=premium,beta-user\" """
|
|
42
58
|
include_metrics: NotRequired[Nullable[bool]]
|
|
43
|
-
r"""Include usage metrics of the last 30 days for each
|
|
59
|
+
r"""Include usage metrics of the last 30 days for each identity."""
|
|
44
60
|
|
|
45
61
|
|
|
46
|
-
class
|
|
62
|
+
class ListIdentitiesRequest(BaseModel):
|
|
47
63
|
limit: Annotated[
|
|
48
64
|
Optional[float],
|
|
49
65
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
@@ -66,62 +82,59 @@ class ListContactsRequest(BaseModel):
|
|
|
66
82
|
Optional[str],
|
|
67
83
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
68
84
|
] = None
|
|
69
|
-
r"""Search
|
|
85
|
+
r"""Search identities by display name or email address. Minimum 2 characters required."""
|
|
70
86
|
|
|
71
87
|
filter_by: Annotated[
|
|
72
88
|
Optional[QueryParamFilterBy],
|
|
73
89
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
74
90
|
] = None
|
|
75
|
-
r"""Filter
|
|
91
|
+
r"""Filter identities by tags. Can be provided as JSON object {\"tags\": [\"premium\", \"beta-user\"]} or as query format \"tags=premium,beta-user\" """
|
|
76
92
|
|
|
77
93
|
include_metrics: Annotated[
|
|
78
94
|
OptionalNullable[bool],
|
|
79
95
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
80
96
|
] = False
|
|
81
|
-
r"""Include usage metrics of the last 30 days for each
|
|
97
|
+
r"""Include usage metrics of the last 30 days for each identity."""
|
|
82
98
|
|
|
83
99
|
@model_serializer(mode="wrap")
|
|
84
100
|
def serialize_model(self, handler):
|
|
85
|
-
optional_fields =
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
101
|
+
optional_fields = set(
|
|
102
|
+
[
|
|
103
|
+
"limit",
|
|
104
|
+
"starting_after",
|
|
105
|
+
"ending_before",
|
|
106
|
+
"search",
|
|
107
|
+
"filter_by",
|
|
108
|
+
"include_metrics",
|
|
109
|
+
]
|
|
110
|
+
)
|
|
111
|
+
nullable_fields = set(["include_metrics"])
|
|
96
112
|
serialized = handler(self)
|
|
97
|
-
|
|
98
113
|
m = {}
|
|
99
114
|
|
|
100
115
|
for n, f in type(self).model_fields.items():
|
|
101
116
|
k = f.alias or n
|
|
102
117
|
val = serialized.get(k)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
):
|
|
116
|
-
m[k] = val
|
|
118
|
+
is_nullable_and_explicitly_set = (
|
|
119
|
+
k in nullable_fields
|
|
120
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
if val != UNSET_SENTINEL:
|
|
124
|
+
if (
|
|
125
|
+
val is not None
|
|
126
|
+
or k not in optional_fields
|
|
127
|
+
or is_nullable_and_explicitly_set
|
|
128
|
+
):
|
|
129
|
+
m[k] = val
|
|
117
130
|
|
|
118
131
|
return m
|
|
119
132
|
|
|
120
133
|
|
|
121
|
-
|
|
134
|
+
ListIdentitiesObject = Literal["list",]
|
|
122
135
|
|
|
123
136
|
|
|
124
|
-
class
|
|
137
|
+
class ListIdentitiesMetricsTypedDict(TypedDict):
|
|
125
138
|
total_cost: float
|
|
126
139
|
r"""Total cost in dollars of the last 30 days"""
|
|
127
140
|
total_tokens: float
|
|
@@ -132,7 +145,7 @@ class ListContactsMetricsTypedDict(TypedDict):
|
|
|
132
145
|
r"""P50 error rate of the last 30 days"""
|
|
133
146
|
|
|
134
147
|
|
|
135
|
-
class
|
|
148
|
+
class ListIdentitiesMetrics(BaseModel):
|
|
136
149
|
total_cost: float
|
|
137
150
|
r"""Total cost in dollars of the last 30 days"""
|
|
138
151
|
|
|
@@ -146,12 +159,12 @@ class ListContactsMetrics(BaseModel):
|
|
|
146
159
|
r"""P50 error rate of the last 30 days"""
|
|
147
160
|
|
|
148
161
|
|
|
149
|
-
class
|
|
162
|
+
class ListIdentitiesDataTypedDict(TypedDict):
|
|
150
163
|
id: str
|
|
151
164
|
r"""Unique ULID (Universally Unique Lexicographically Sortable Identifier) for the contact"""
|
|
152
165
|
external_id: str
|
|
153
166
|
r"""Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user."""
|
|
154
|
-
metrics:
|
|
167
|
+
metrics: ListIdentitiesMetricsTypedDict
|
|
155
168
|
display_name: NotRequired[Nullable[str]]
|
|
156
169
|
r"""Display name or nickname of the contact user. This is typically shown in user interfaces."""
|
|
157
170
|
email: NotRequired[Nullable[str]]
|
|
@@ -168,14 +181,14 @@ class ListContactsDataTypedDict(TypedDict):
|
|
|
168
181
|
r"""The date and time the resource was last updated"""
|
|
169
182
|
|
|
170
183
|
|
|
171
|
-
class
|
|
184
|
+
class ListIdentitiesData(BaseModel):
|
|
172
185
|
id: Annotated[str, pydantic.Field(alias="_id")]
|
|
173
186
|
r"""Unique ULID (Universally Unique Lexicographically Sortable Identifier) for the contact"""
|
|
174
187
|
|
|
175
188
|
external_id: str
|
|
176
189
|
r"""Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user."""
|
|
177
190
|
|
|
178
|
-
metrics:
|
|
191
|
+
metrics: ListIdentitiesMetrics
|
|
179
192
|
|
|
180
193
|
display_name: OptionalNullable[str] = UNSET
|
|
181
194
|
r"""Display name or nickname of the contact user. This is typically shown in user interfaces."""
|
|
@@ -195,61 +208,58 @@ class ListContactsData(BaseModel):
|
|
|
195
208
|
created: Optional[datetime] = None
|
|
196
209
|
r"""The date and time the resource was created"""
|
|
197
210
|
|
|
198
|
-
updated: Optional[datetime] = parse_datetime("2026-01-
|
|
211
|
+
updated: Optional[datetime] = parse_datetime("2026-01-25T15:02:07.185Z")
|
|
199
212
|
r"""The date and time the resource was last updated"""
|
|
200
213
|
|
|
201
214
|
@model_serializer(mode="wrap")
|
|
202
215
|
def serialize_model(self, handler):
|
|
203
|
-
optional_fields =
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
216
|
+
optional_fields = set(
|
|
217
|
+
[
|
|
218
|
+
"display_name",
|
|
219
|
+
"email",
|
|
220
|
+
"avatar_url",
|
|
221
|
+
"tags",
|
|
222
|
+
"metadata",
|
|
223
|
+
"created",
|
|
224
|
+
"updated",
|
|
225
|
+
]
|
|
226
|
+
)
|
|
227
|
+
nullable_fields = set(["display_name", "email", "avatar_url"])
|
|
215
228
|
serialized = handler(self)
|
|
216
|
-
|
|
217
229
|
m = {}
|
|
218
230
|
|
|
219
231
|
for n, f in type(self).model_fields.items():
|
|
220
232
|
k = f.alias or n
|
|
221
233
|
val = serialized.get(k)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
):
|
|
235
|
-
m[k] = val
|
|
234
|
+
is_nullable_and_explicitly_set = (
|
|
235
|
+
k in nullable_fields
|
|
236
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
if val != UNSET_SENTINEL:
|
|
240
|
+
if (
|
|
241
|
+
val is not None
|
|
242
|
+
or k not in optional_fields
|
|
243
|
+
or is_nullable_and_explicitly_set
|
|
244
|
+
):
|
|
245
|
+
m[k] = val
|
|
236
246
|
|
|
237
247
|
return m
|
|
238
248
|
|
|
239
249
|
|
|
240
|
-
class
|
|
241
|
-
r"""List of
|
|
250
|
+
class ListIdentitiesResponseBodyTypedDict(TypedDict):
|
|
251
|
+
r"""List of identities"""
|
|
242
252
|
|
|
243
|
-
object:
|
|
244
|
-
data: List[
|
|
253
|
+
object: ListIdentitiesObject
|
|
254
|
+
data: List[ListIdentitiesDataTypedDict]
|
|
245
255
|
has_more: bool
|
|
246
256
|
|
|
247
257
|
|
|
248
|
-
class
|
|
249
|
-
r"""List of
|
|
258
|
+
class ListIdentitiesResponseBody(BaseModel):
|
|
259
|
+
r"""List of identities"""
|
|
250
260
|
|
|
251
|
-
object:
|
|
261
|
+
object: ListIdentitiesObject
|
|
252
262
|
|
|
253
|
-
data: List[
|
|
263
|
+
data: List[ListIdentitiesData]
|
|
254
264
|
|
|
255
265
|
has_more: bool
|