twitter-openapi-python-generated 0.1.2__py3-none-any.whl → 0.1.4__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 (121) hide show
  1. twitter_openapi_python_generated/__init__.py +129 -1
  2. twitter_openapi_python_generated/api/default_api.py +1437 -199
  3. twitter_openapi_python_generated/api/user_api.py +310 -6
  4. twitter_openapi_python_generated/api/users_api.py +327 -6
  5. twitter_openapi_python_generated/api_client.py +1 -1
  6. twitter_openapi_python_generated/configuration.py +1 -1
  7. twitter_openapi_python_generated/models/__init__.py +64 -0
  8. twitter_openapi_python_generated/models/about_account_data.py +93 -0
  9. twitter_openapi_python_generated/models/about_account_response.py +102 -0
  10. twitter_openapi_python_generated/models/about_account_user.py +161 -0
  11. twitter_openapi_python_generated/models/about_account_user_result.py +95 -0
  12. twitter_openapi_python_generated/models/about_account_verification_info.py +95 -0
  13. twitter_openapi_python_generated/models/about_account_verification_info_reason.py +99 -0
  14. twitter_openapi_python_generated/models/about_profile.py +103 -0
  15. twitter_openapi_python_generated/models/about_profile_username_changes.py +109 -0
  16. twitter_openapi_python_generated/models/ad_metadata_container.py +3 -1
  17. twitter_openapi_python_generated/models/ai_trend.py +126 -0
  18. twitter_openapi_python_generated/models/ai_trend_core.py +95 -0
  19. twitter_openapi_python_generated/models/ai_trend_results.py +95 -0
  20. twitter_openapi_python_generated/models/ai_trend_social_proof.py +89 -0
  21. twitter_openapi_python_generated/models/article_content_block.py +117 -0
  22. twitter_openapi_python_generated/models/article_content_block_data.py +104 -0
  23. twitter_openapi_python_generated/models/article_content_entity.py +95 -0
  24. twitter_openapi_python_generated/models/article_content_entity_data.py +115 -0
  25. twitter_openapi_python_generated/models/article_content_entity_range.py +93 -0
  26. twitter_openapi_python_generated/models/article_content_entity_value.py +104 -0
  27. twitter_openapi_python_generated/models/article_content_inline_style_range.py +100 -0
  28. twitter_openapi_python_generated/models/article_content_media_item.py +101 -0
  29. twitter_openapi_python_generated/models/article_content_state.py +105 -0
  30. twitter_openapi_python_generated/models/article_content_text_range.py +93 -0
  31. twitter_openapi_python_generated/models/article_result.py +9 -3
  32. twitter_openapi_python_generated/models/audio_space.py +107 -0
  33. twitter_openapi_python_generated/models/audio_space_data.py +93 -0
  34. twitter_openapi_python_generated/models/audio_space_mentioned_user.py +97 -0
  35. twitter_openapi_python_generated/models/audio_space_metadata.py +165 -0
  36. twitter_openapi_python_generated/models/audio_space_participant.py +109 -0
  37. twitter_openapi_python_generated/models/audio_space_participant_user.py +104 -0
  38. twitter_openapi_python_generated/models/audio_space_participant_user_results.py +103 -0
  39. twitter_openapi_python_generated/models/audio_space_participant_verification.py +99 -0
  40. twitter_openapi_python_generated/models/audio_space_participants.py +114 -0
  41. twitter_openapi_python_generated/models/audio_space_response.py +102 -0
  42. twitter_openapi_python_generated/models/audio_space_sharings.py +91 -0
  43. twitter_openapi_python_generated/models/birdwatch_pivot.py +0 -17
  44. twitter_openapi_python_generated/models/broadcast.py +159 -0
  45. twitter_openapi_python_generated/models/broadcast_data.py +93 -0
  46. twitter_openapi_python_generated/models/broadcast_edited_replay.py +89 -0
  47. twitter_openapi_python_generated/models/broadcast_periscope_user.py +95 -0
  48. twitter_openapi_python_generated/models/broadcast_response.py +102 -0
  49. twitter_openapi_python_generated/models/cashtag_attachment.py +6 -4
  50. twitter_openapi_python_generated/models/community.py +2 -2
  51. twitter_openapi_python_generated/models/community_delete_action_result.py +1 -8
  52. twitter_openapi_python_generated/models/community_invites_result.py +1 -8
  53. twitter_openapi_python_generated/models/community_join_action_unavailable.py +1 -8
  54. twitter_openapi_python_generated/models/community_leave_action_result.py +1 -8
  55. twitter_openapi_python_generated/models/conversation_control.py +8 -1
  56. twitter_openapi_python_generated/models/conversation_details.py +1 -8
  57. twitter_openapi_python_generated/models/cover_cta.py +5 -15
  58. twitter_openapi_python_generated/models/cta_client_event_info.py +1 -8
  59. twitter_openapi_python_generated/models/cta_limited_action_prompt.py +1 -8
  60. twitter_openapi_python_generated/models/feedback_action.py +1 -21
  61. twitter_openapi_python_generated/models/feedback_client_event_info.py +2 -2
  62. twitter_openapi_python_generated/models/grok_account_jwt.py +89 -0
  63. twitter_openapi_python_generated/models/grok_account_jwt_data.py +93 -0
  64. twitter_openapi_python_generated/models/grok_account_jwt_response.py +102 -0
  65. twitter_openapi_python_generated/models/grok_entity_ref.py +19 -4
  66. twitter_openapi_python_generated/models/grok_image_annotation.py +2 -2
  67. twitter_openapi_python_generated/models/identity_profile_labels_highlighted_label.py +93 -0
  68. twitter_openapi_python_generated/models/limited_action.py +8 -1
  69. twitter_openapi_python_generated/models/limited_action_results_data.py +8 -1
  70. twitter_openapi_python_generated/models/media_result.py +1 -1
  71. twitter_openapi_python_generated/models/module_header.py +8 -9
  72. twitter_openapi_python_generated/models/note_tweet_result_data.py +2 -2
  73. twitter_openapi_python_generated/models/notification_additional_context.py +94 -0
  74. twitter_openapi_python_generated/models/notification_template.py +10 -2
  75. twitter_openapi_python_generated/models/notification_url.py +104 -0
  76. twitter_openapi_python_generated/models/notification_urt_endpoint_options.py +93 -0
  77. twitter_openapi_python_generated/models/preroll.py +97 -0
  78. twitter_openapi_python_generated/models/preroll_call_to_action.py +91 -0
  79. twitter_openapi_python_generated/models/preroll_media_info.py +118 -0
  80. twitter_openapi_python_generated/models/preroll_metadata.py +93 -0
  81. twitter_openapi_python_generated/models/preroll_video_variant.py +93 -0
  82. twitter_openapi_python_generated/models/rich_message_entity.py +6 -4
  83. twitter_openapi_python_generated/models/session.py +0 -7
  84. twitter_openapi_python_generated/models/sidebar_user_recommendation.py +95 -0
  85. twitter_openapi_python_generated/models/sidebar_user_recommendations_data.py +96 -0
  86. twitter_openapi_python_generated/models/sidebar_user_recommendations_response.py +102 -0
  87. twitter_openapi_python_generated/models/story_topic.py +95 -0
  88. twitter_openapi_python_generated/models/story_topic_data.py +93 -0
  89. twitter_openapi_python_generated/models/story_topic_item.py +93 -0
  90. twitter_openapi_python_generated/models/story_topic_response.py +102 -0
  91. twitter_openapi_python_generated/models/story_topic_stories.py +96 -0
  92. twitter_openapi_python_generated/models/timeline_general_context.py +2 -2
  93. twitter_openapi_python_generated/models/timeline_half_cover.py +0 -7
  94. twitter_openapi_python_generated/models/timeline_message_prompt_content.py +1 -8
  95. twitter_openapi_python_generated/models/timeline_notification.py +3 -3
  96. twitter_openapi_python_generated/models/timeline_prompt_content.py +1 -15
  97. twitter_openapi_python_generated/models/timeline_show_alert.py +1 -15
  98. twitter_openapi_python_generated/models/timeline_tombstone.py +1 -11
  99. twitter_openapi_python_generated/models/timeline_topic_context.py +1 -11
  100. twitter_openapi_python_generated/models/timeline_tweet.py +7 -1
  101. twitter_openapi_python_generated/models/tweet.py +10 -2
  102. twitter_openapi_python_generated/models/tweet_card_legacy_binding_value_data.py +8 -1
  103. twitter_openapi_python_generated/models/tweet_card_platform_audience.py +1 -8
  104. twitter_openapi_python_generated/models/tweet_legacy.py +18 -3
  105. twitter_openapi_python_generated/models/tweet_legacy_place.py +107 -0
  106. twitter_openapi_python_generated/models/tweet_legacy_place_bounding_box.py +98 -0
  107. twitter_openapi_python_generated/models/tweet_legacy_point.py +98 -0
  108. twitter_openapi_python_generated/models/tweet_post_cta.py +1 -9
  109. twitter_openapi_python_generated/models/tweet_sports_competitor.py +107 -0
  110. twitter_openapi_python_generated/models/tweet_sports_post_context.py +122 -0
  111. twitter_openapi_python_generated/models/tweet_sports_rest_id.py +97 -0
  112. twitter_openapi_python_generated/models/type_name.py +2 -0
  113. twitter_openapi_python_generated/models/unified_card.py +1 -8
  114. twitter_openapi_python_generated/models/user_highlights_tweets_result.py +2 -2
  115. twitter_openapi_python_generated/models/user_tweets_result_v1.py +2 -2
  116. {twitter_openapi_python_generated-0.1.2.dist-info → twitter_openapi_python_generated-0.1.4.dist-info}/METADATA +72 -2
  117. {twitter_openapi_python_generated-0.1.2.dist-info → twitter_openapi_python_generated-0.1.4.dist-info}/RECORD +121 -57
  118. {twitter_openapi_python_generated-0.1.2.dist-info → twitter_openapi_python_generated-0.1.4.dist-info}/WHEEL +1 -1
  119. {twitter_openapi_python_generated-0.1.2.dist-info → twitter_openapi_python_generated-0.1.4.dist-info}/licenses/LICENSE +0 -0
  120. {twitter_openapi_python_generated-0.1.2.dist-info → twitter_openapi_python_generated-0.1.4.dist-info}/licenses/LICENSE.AGPL +0 -0
  121. {twitter_openapi_python_generated-0.1.2.dist-info → twitter_openapi_python_generated-0.1.4.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
17
17
  from typing_extensions import Annotated
18
18
 
19
19
  from pydantic import StrictStr
20
+ from twitter_openapi_python_generated.models.sidebar_user_recommendations_response import SidebarUserRecommendationsResponse
20
21
  from twitter_openapi_python_generated.models.users_response import UsersResponse
21
22
  from twitter_openapi_python_generated.models.users_verified_avatars_response import UsersVerifiedAvatarsResponse
22
23
 
@@ -38,6 +39,323 @@ class UsersApi:
38
39
  self.api_client = api_client
39
40
 
40
41
 
42
+ @validate_call
43
+ def get_sidebar_user_recommendations(
44
+ self,
45
+ path_query_id: StrictStr,
46
+ variables: StrictStr,
47
+ features: StrictStr,
48
+ _request_timeout: Union[
49
+ None,
50
+ Annotated[StrictFloat, Field(gt=0)],
51
+ Tuple[
52
+ Annotated[StrictFloat, Field(gt=0)],
53
+ Annotated[StrictFloat, Field(gt=0)]
54
+ ]
55
+ ] = None,
56
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
57
+ _content_type: Optional[StrictStr] = None,
58
+ _headers: Optional[Dict[StrictStr, Any]] = None,
59
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
60
+ ) -> SidebarUserRecommendationsResponse:
61
+ """get_sidebar_user_recommendations
62
+
63
+ who to follow, shown in the sidebar of a profile
64
+
65
+ :param path_query_id: (required)
66
+ :type path_query_id: str
67
+ :param variables: (required)
68
+ :type variables: str
69
+ :param features: (required)
70
+ :type features: str
71
+ :param _request_timeout: timeout setting for this request. If one
72
+ number provided, it will be total request
73
+ timeout. It can also be a pair (tuple) of
74
+ (connection, read) timeouts.
75
+ :type _request_timeout: int, tuple(int, int), optional
76
+ :param _request_auth: set to override the auth_settings for an a single
77
+ request; this effectively ignores the
78
+ authentication in the spec for a single request.
79
+ :type _request_auth: dict, optional
80
+ :param _content_type: force content-type for the request.
81
+ :type _content_type: str, Optional
82
+ :param _headers: set to override the headers for a single
83
+ request; this effectively ignores the headers
84
+ in the spec for a single request.
85
+ :type _headers: dict, optional
86
+ :param _host_index: set to override the host_index for a single
87
+ request; this effectively ignores the host_index
88
+ in the spec for a single request.
89
+ :type _host_index: int, optional
90
+ :return: Returns the result object.
91
+ """ # noqa: E501
92
+
93
+ _param = self._get_sidebar_user_recommendations_serialize(
94
+ path_query_id=path_query_id,
95
+ variables=variables,
96
+ features=features,
97
+ _request_auth=_request_auth,
98
+ _content_type=_content_type,
99
+ _headers=_headers,
100
+ _host_index=_host_index
101
+ )
102
+
103
+ _response_types_map: Dict[str, Optional[str]] = {
104
+ '200': "SidebarUserRecommendationsResponse",
105
+ }
106
+ response_data = self.api_client.call_api(
107
+ *_param,
108
+ _request_timeout=_request_timeout
109
+ )
110
+ response_data.read()
111
+ return self.api_client.response_deserialize(
112
+ response_data=response_data,
113
+ response_types_map=_response_types_map,
114
+ ).data
115
+
116
+
117
+ @validate_call
118
+ def get_sidebar_user_recommendations_with_http_info(
119
+ self,
120
+ path_query_id: StrictStr,
121
+ variables: StrictStr,
122
+ features: StrictStr,
123
+ _request_timeout: Union[
124
+ None,
125
+ Annotated[StrictFloat, Field(gt=0)],
126
+ Tuple[
127
+ Annotated[StrictFloat, Field(gt=0)],
128
+ Annotated[StrictFloat, Field(gt=0)]
129
+ ]
130
+ ] = None,
131
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
132
+ _content_type: Optional[StrictStr] = None,
133
+ _headers: Optional[Dict[StrictStr, Any]] = None,
134
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
135
+ ) -> ApiResponse[SidebarUserRecommendationsResponse]:
136
+ """get_sidebar_user_recommendations
137
+
138
+ who to follow, shown in the sidebar of a profile
139
+
140
+ :param path_query_id: (required)
141
+ :type path_query_id: str
142
+ :param variables: (required)
143
+ :type variables: str
144
+ :param features: (required)
145
+ :type features: str
146
+ :param _request_timeout: timeout setting for this request. If one
147
+ number provided, it will be total request
148
+ timeout. It can also be a pair (tuple) of
149
+ (connection, read) timeouts.
150
+ :type _request_timeout: int, tuple(int, int), optional
151
+ :param _request_auth: set to override the auth_settings for an a single
152
+ request; this effectively ignores the
153
+ authentication in the spec for a single request.
154
+ :type _request_auth: dict, optional
155
+ :param _content_type: force content-type for the request.
156
+ :type _content_type: str, Optional
157
+ :param _headers: set to override the headers for a single
158
+ request; this effectively ignores the headers
159
+ in the spec for a single request.
160
+ :type _headers: dict, optional
161
+ :param _host_index: set to override the host_index for a single
162
+ request; this effectively ignores the host_index
163
+ in the spec for a single request.
164
+ :type _host_index: int, optional
165
+ :return: Returns the result object.
166
+ """ # noqa: E501
167
+
168
+ _param = self._get_sidebar_user_recommendations_serialize(
169
+ path_query_id=path_query_id,
170
+ variables=variables,
171
+ features=features,
172
+ _request_auth=_request_auth,
173
+ _content_type=_content_type,
174
+ _headers=_headers,
175
+ _host_index=_host_index
176
+ )
177
+
178
+ _response_types_map: Dict[str, Optional[str]] = {
179
+ '200': "SidebarUserRecommendationsResponse",
180
+ }
181
+ response_data = self.api_client.call_api(
182
+ *_param,
183
+ _request_timeout=_request_timeout
184
+ )
185
+ response_data.read()
186
+ return self.api_client.response_deserialize(
187
+ response_data=response_data,
188
+ response_types_map=_response_types_map,
189
+ )
190
+
191
+
192
+ @validate_call
193
+ def get_sidebar_user_recommendations_without_preload_content(
194
+ self,
195
+ path_query_id: StrictStr,
196
+ variables: StrictStr,
197
+ features: StrictStr,
198
+ _request_timeout: Union[
199
+ None,
200
+ Annotated[StrictFloat, Field(gt=0)],
201
+ Tuple[
202
+ Annotated[StrictFloat, Field(gt=0)],
203
+ Annotated[StrictFloat, Field(gt=0)]
204
+ ]
205
+ ] = None,
206
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
207
+ _content_type: Optional[StrictStr] = None,
208
+ _headers: Optional[Dict[StrictStr, Any]] = None,
209
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
210
+ ) -> RESTResponseType:
211
+ """get_sidebar_user_recommendations
212
+
213
+ who to follow, shown in the sidebar of a profile
214
+
215
+ :param path_query_id: (required)
216
+ :type path_query_id: str
217
+ :param variables: (required)
218
+ :type variables: str
219
+ :param features: (required)
220
+ :type features: str
221
+ :param _request_timeout: timeout setting for this request. If one
222
+ number provided, it will be total request
223
+ timeout. It can also be a pair (tuple) of
224
+ (connection, read) timeouts.
225
+ :type _request_timeout: int, tuple(int, int), optional
226
+ :param _request_auth: set to override the auth_settings for an a single
227
+ request; this effectively ignores the
228
+ authentication in the spec for a single request.
229
+ :type _request_auth: dict, optional
230
+ :param _content_type: force content-type for the request.
231
+ :type _content_type: str, Optional
232
+ :param _headers: set to override the headers for a single
233
+ request; this effectively ignores the headers
234
+ in the spec for a single request.
235
+ :type _headers: dict, optional
236
+ :param _host_index: set to override the host_index for a single
237
+ request; this effectively ignores the host_index
238
+ in the spec for a single request.
239
+ :type _host_index: int, optional
240
+ :return: Returns the result object.
241
+ """ # noqa: E501
242
+
243
+ _param = self._get_sidebar_user_recommendations_serialize(
244
+ path_query_id=path_query_id,
245
+ variables=variables,
246
+ features=features,
247
+ _request_auth=_request_auth,
248
+ _content_type=_content_type,
249
+ _headers=_headers,
250
+ _host_index=_host_index
251
+ )
252
+
253
+ _response_types_map: Dict[str, Optional[str]] = {
254
+ '200': "SidebarUserRecommendationsResponse",
255
+ }
256
+ response_data = self.api_client.call_api(
257
+ *_param,
258
+ _request_timeout=_request_timeout
259
+ )
260
+ return response_data.response
261
+
262
+
263
+ def _get_sidebar_user_recommendations_serialize(
264
+ self,
265
+ path_query_id,
266
+ variables,
267
+ features,
268
+ _request_auth,
269
+ _content_type,
270
+ _headers,
271
+ _host_index,
272
+ ) -> RequestSerialized:
273
+
274
+ _host = None
275
+
276
+ _collection_formats: Dict[str, str] = {
277
+ }
278
+
279
+ _path_params: Dict[str, str] = {}
280
+ _query_params: List[Tuple[str, str]] = []
281
+ _header_params: Dict[str, Optional[str]] = _headers or {}
282
+ _form_params: List[Tuple[str, str]] = []
283
+ _files: Dict[
284
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
285
+ ] = {}
286
+ _body_params: Optional[bytes] = None
287
+
288
+ # process the path parameters
289
+ if path_query_id is not None:
290
+ _path_params['pathQueryId'] = path_query_id
291
+ # process the query parameters
292
+ if variables is not None:
293
+
294
+ _query_params.append(('variables', variables))
295
+
296
+ if features is not None:
297
+
298
+ _query_params.append(('features', features))
299
+
300
+ # process the header parameters
301
+ # process the form parameters
302
+ # process the body parameter
303
+
304
+
305
+ # set the HTTP header `Accept`
306
+ if 'Accept' not in _header_params:
307
+ _header_params['Accept'] = self.api_client.select_header_accept(
308
+ [
309
+ 'application/json'
310
+ ]
311
+ )
312
+
313
+
314
+ # authentication setting
315
+ _auth_settings: List[str] = [
316
+ 'Accept',
317
+ 'ClientLanguage',
318
+ 'Priority',
319
+ 'Referer',
320
+ 'SecFetchDest',
321
+ 'SecChUaPlatform',
322
+ 'SecFetchMode',
323
+ 'CsrfToken',
324
+ 'ClientUuid',
325
+ 'BearerAuth',
326
+ 'GuestToken',
327
+ 'SecChUa',
328
+ 'CookieGt0',
329
+ 'ClientTransactionId',
330
+ 'ActiveUser',
331
+ 'CookieCt0',
332
+ 'UserAgent',
333
+ 'AcceptLanguage',
334
+ 'SecFetchSite',
335
+ 'AuthType',
336
+ 'CookieAuthToken',
337
+ 'SecChUaMobile',
338
+ 'AcceptEncoding'
339
+ ]
340
+
341
+ return self.api_client.param_serialize(
342
+ method='GET',
343
+ resource_path='/graphql/{pathQueryId}/SidebarUserRecommendations',
344
+ path_params=_path_params,
345
+ query_params=_query_params,
346
+ header_params=_header_params,
347
+ body=_body_params,
348
+ post_params=_form_params,
349
+ files=_files,
350
+ auth_settings=_auth_settings,
351
+ collection_formats=_collection_formats,
352
+ _host=_host,
353
+ _request_auth=_request_auth
354
+ )
355
+
356
+
357
+
358
+
41
359
  @validate_call
42
360
  def get_users_by_rest_ids(
43
361
  self,
@@ -57,9 +375,9 @@ class UsersApi:
57
375
  _headers: Optional[Dict[StrictStr, Any]] = None,
58
376
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
59
377
  ) -> UsersResponse:
60
- """get_users_by_rest_ids
378
+ """(Deprecated) get_users_by_rest_ids
61
379
 
62
- get users by rest ids
380
+ get users by rest ids. Deprecated: X answers 403 outside a browser since 2026-10
63
381
 
64
382
  :param path_query_id: (required)
65
383
  :type path_query_id: str
@@ -88,6 +406,7 @@ class UsersApi:
88
406
  :type _host_index: int, optional
89
407
  :return: Returns the result object.
90
408
  """ # noqa: E501
409
+ warnings.warn("GET /graphql/{pathQueryId}/UsersByRestIds is deprecated.", DeprecationWarning)
91
410
 
92
411
  _param = self._get_users_by_rest_ids_serialize(
93
412
  path_query_id=path_query_id,
@@ -132,9 +451,9 @@ class UsersApi:
132
451
  _headers: Optional[Dict[StrictStr, Any]] = None,
133
452
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
134
453
  ) -> ApiResponse[UsersResponse]:
135
- """get_users_by_rest_ids
454
+ """(Deprecated) get_users_by_rest_ids
136
455
 
137
- get users by rest ids
456
+ get users by rest ids. Deprecated: X answers 403 outside a browser since 2026-10
138
457
 
139
458
  :param path_query_id: (required)
140
459
  :type path_query_id: str
@@ -163,6 +482,7 @@ class UsersApi:
163
482
  :type _host_index: int, optional
164
483
  :return: Returns the result object.
165
484
  """ # noqa: E501
485
+ warnings.warn("GET /graphql/{pathQueryId}/UsersByRestIds is deprecated.", DeprecationWarning)
166
486
 
167
487
  _param = self._get_users_by_rest_ids_serialize(
168
488
  path_query_id=path_query_id,
@@ -207,9 +527,9 @@ class UsersApi:
207
527
  _headers: Optional[Dict[StrictStr, Any]] = None,
208
528
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
209
529
  ) -> RESTResponseType:
210
- """get_users_by_rest_ids
530
+ """(Deprecated) get_users_by_rest_ids
211
531
 
212
- get users by rest ids
532
+ get users by rest ids. Deprecated: X answers 403 outside a browser since 2026-10
213
533
 
214
534
  :param path_query_id: (required)
215
535
  :type path_query_id: str
@@ -238,6 +558,7 @@ class UsersApi:
238
558
  :type _host_index: int, optional
239
559
  :return: Returns the result object.
240
560
  """ # noqa: E501
561
+ warnings.warn("GET /graphql/{pathQueryId}/UsersByRestIds is deprecated.", DeprecationWarning)
241
562
 
242
563
  _param = self._get_users_by_rest_ids_serialize(
243
564
  path_query_id=path_query_id,
@@ -92,7 +92,7 @@ class ApiClient:
92
92
  self.default_headers[header_name] = header_value
93
93
  self.cookie = cookie
94
94
  # Set default User-Agent.
95
- self.user_agent = 'OpenAPI-Generator/0.1.2/python'
95
+ self.user_agent = 'OpenAPI-Generator/0.1.4/python'
96
96
  self.client_side_validation = configuration.client_side_validation
97
97
 
98
98
  def __enter__(self):
@@ -802,7 +802,7 @@ conf = twitter_openapi_python_generated.Configuration(
802
802
  "OS: {env}\n"\
803
803
  "Python Version: {pyversion}\n"\
804
804
  "Version of the API: 0.0.1\n"\
805
- "SDK Package Version: 0.1.2".\
805
+ "SDK Package Version: 0.1.4".\
806
806
  format(env=sys.platform, pyversion=sys.version)
807
807
 
808
808
  def get_host_settings(self) -> List[HostSetting]:
@@ -14,19 +14,41 @@
14
14
  """ # noqa: E501
15
15
 
16
16
  # import models into model package
17
+ from twitter_openapi_python_generated.models.about_account_data import AboutAccountData
18
+ from twitter_openapi_python_generated.models.about_account_response import AboutAccountResponse
19
+ from twitter_openapi_python_generated.models.about_account_user import AboutAccountUser
20
+ from twitter_openapi_python_generated.models.about_account_user_result import AboutAccountUserResult
21
+ from twitter_openapi_python_generated.models.about_account_verification_info import AboutAccountVerificationInfo
22
+ from twitter_openapi_python_generated.models.about_account_verification_info_reason import AboutAccountVerificationInfoReason
17
23
  from twitter_openapi_python_generated.models.about_community_result import AboutCommunityResult
18
24
  from twitter_openapi_python_generated.models.about_community_results import AboutCommunityResults
19
25
  from twitter_openapi_python_generated.models.about_community_tweet_data import AboutCommunityTweetData
26
+ from twitter_openapi_python_generated.models.about_profile import AboutProfile
27
+ from twitter_openapi_python_generated.models.about_profile_username_changes import AboutProfileUsernameChanges
20
28
  from twitter_openapi_python_generated.models.ad_metadata_container import AdMetadataContainer
21
29
  from twitter_openapi_python_generated.models.additional_media_info import AdditionalMediaInfo
22
30
  from twitter_openapi_python_generated.models.additional_media_info_call_to_actions import AdditionalMediaInfoCallToActions
23
31
  from twitter_openapi_python_generated.models.additional_media_info_call_to_actions_url import AdditionalMediaInfoCallToActionsUrl
24
32
  from twitter_openapi_python_generated.models.affiliates_highlighted_label import AffiliatesHighlightedLabel
33
+ from twitter_openapi_python_generated.models.ai_trend import AiTrend
34
+ from twitter_openapi_python_generated.models.ai_trend_core import AiTrendCore
35
+ from twitter_openapi_python_generated.models.ai_trend_results import AiTrendResults
36
+ from twitter_openapi_python_generated.models.ai_trend_social_proof import AiTrendSocialProof
25
37
  from twitter_openapi_python_generated.models.allow_download_status import AllowDownloadStatus
26
38
  from twitter_openapi_python_generated.models.analysis_results import AnalysisResults
27
39
  from twitter_openapi_python_generated.models.api_image import ApiImage
28
40
  from twitter_openapi_python_generated.models.api_media import ApiMedia
29
41
  from twitter_openapi_python_generated.models.article import Article
42
+ from twitter_openapi_python_generated.models.article_content_block import ArticleContentBlock
43
+ from twitter_openapi_python_generated.models.article_content_block_data import ArticleContentBlockData
44
+ from twitter_openapi_python_generated.models.article_content_entity import ArticleContentEntity
45
+ from twitter_openapi_python_generated.models.article_content_entity_data import ArticleContentEntityData
46
+ from twitter_openapi_python_generated.models.article_content_entity_range import ArticleContentEntityRange
47
+ from twitter_openapi_python_generated.models.article_content_entity_value import ArticleContentEntityValue
48
+ from twitter_openapi_python_generated.models.article_content_inline_style_range import ArticleContentInlineStyleRange
49
+ from twitter_openapi_python_generated.models.article_content_media_item import ArticleContentMediaItem
50
+ from twitter_openapi_python_generated.models.article_content_state import ArticleContentState
51
+ from twitter_openapi_python_generated.models.article_content_text_range import ArticleContentTextRange
30
52
  from twitter_openapi_python_generated.models.article_cover_media import ArticleCoverMedia
31
53
  from twitter_openapi_python_generated.models.article_cover_media_info import ArticleCoverMediaInfo
32
54
  from twitter_openapi_python_generated.models.article_lifecycle_state import ArticleLifecycleState
@@ -34,6 +56,17 @@ from twitter_openapi_python_generated.models.article_metadata import ArticleMeta
34
56
  from twitter_openapi_python_generated.models.article_preview import ArticlePreview
35
57
  from twitter_openapi_python_generated.models.article_result import ArticleResult
36
58
  from twitter_openapi_python_generated.models.article_results import ArticleResults
59
+ from twitter_openapi_python_generated.models.audio_space import AudioSpace
60
+ from twitter_openapi_python_generated.models.audio_space_data import AudioSpaceData
61
+ from twitter_openapi_python_generated.models.audio_space_mentioned_user import AudioSpaceMentionedUser
62
+ from twitter_openapi_python_generated.models.audio_space_metadata import AudioSpaceMetadata
63
+ from twitter_openapi_python_generated.models.audio_space_participant import AudioSpaceParticipant
64
+ from twitter_openapi_python_generated.models.audio_space_participant_user import AudioSpaceParticipantUser
65
+ from twitter_openapi_python_generated.models.audio_space_participant_user_results import AudioSpaceParticipantUserResults
66
+ from twitter_openapi_python_generated.models.audio_space_participant_verification import AudioSpaceParticipantVerification
67
+ from twitter_openapi_python_generated.models.audio_space_participants import AudioSpaceParticipants
68
+ from twitter_openapi_python_generated.models.audio_space_response import AudioSpaceResponse
69
+ from twitter_openapi_python_generated.models.audio_space_sharings import AudioSpaceSharings
37
70
  from twitter_openapi_python_generated.models.authenticate_periscope_response import AuthenticatePeriscopeResponse
38
71
  from twitter_openapi_python_generated.models.authenticate_periscope_response_data import AuthenticatePeriscopeResponseData
39
72
  from twitter_openapi_python_generated.models.author_community_relationship import AuthorCommunityRelationship
@@ -69,6 +102,11 @@ from twitter_openapi_python_generated.models.bookmark_search_timeline_response_d
69
102
  from twitter_openapi_python_generated.models.bookmarks_response import BookmarksResponse
70
103
  from twitter_openapi_python_generated.models.bookmarks_response_data import BookmarksResponseData
71
104
  from twitter_openapi_python_generated.models.bookmarks_timeline import BookmarksTimeline
105
+ from twitter_openapi_python_generated.models.broadcast import Broadcast
106
+ from twitter_openapi_python_generated.models.broadcast_data import BroadcastData
107
+ from twitter_openapi_python_generated.models.broadcast_edited_replay import BroadcastEditedReplay
108
+ from twitter_openapi_python_generated.models.broadcast_periscope_user import BroadcastPeriscopeUser
109
+ from twitter_openapi_python_generated.models.broadcast_response import BroadcastResponse
72
110
  from twitter_openapi_python_generated.models.callback import Callback
73
111
  from twitter_openapi_python_generated.models.cashtag_attachment import CashtagAttachment
74
112
  from twitter_openapi_python_generated.models.cashtag_info import CashtagInfo
@@ -243,6 +281,9 @@ from twitter_openapi_python_generated.models.global_communities_latest_post_sear
243
281
  from twitter_openapi_python_generated.models.global_communities_post_search import GlobalCommunitiesPostSearch
244
282
  from twitter_openapi_python_generated.models.global_communities_post_search_timeline_response import GlobalCommunitiesPostSearchTimelineResponse
245
283
  from twitter_openapi_python_generated.models.global_communities_post_search_timeline_response_data import GlobalCommunitiesPostSearchTimelineResponseData
284
+ from twitter_openapi_python_generated.models.grok_account_jwt import GrokAccountJwt
285
+ from twitter_openapi_python_generated.models.grok_account_jwt_data import GrokAccountJwtData
286
+ from twitter_openapi_python_generated.models.grok_account_jwt_response import GrokAccountJwtResponse
246
287
  from twitter_openapi_python_generated.models.grok_annotation import GrokAnnotation
247
288
  from twitter_openapi_python_generated.models.grok_entity import GrokEntity
248
289
  from twitter_openapi_python_generated.models.grok_entity_ref import GrokEntityRef
@@ -267,6 +308,7 @@ from twitter_openapi_python_generated.models.hashtag import Hashtag
267
308
  from twitter_openapi_python_generated.models.highlight import Highlight
268
309
  from twitter_openapi_python_generated.models.home_timeline_home import HomeTimelineHome
269
310
  from twitter_openapi_python_generated.models.home_timeline_response_data import HomeTimelineResponseData
311
+ from twitter_openapi_python_generated.models.identity_profile_labels_highlighted_label import IdentityProfileLabelsHighlightedLabel
270
312
  from twitter_openapi_python_generated.models.instruction_type import InstructionType
271
313
  from twitter_openapi_python_generated.models.instruction_union import InstructionUnion
272
314
  from twitter_openapi_python_generated.models.item_content_union import ItemContentUnion
@@ -333,8 +375,11 @@ from twitter_openapi_python_generated.models.note_tweet_result_media import Note
333
375
  from twitter_openapi_python_generated.models.note_tweet_result_media_inline_media import NoteTweetResultMediaInlineMedia
334
376
  from twitter_openapi_python_generated.models.note_tweet_result_rich_text import NoteTweetResultRichText
335
377
  from twitter_openapi_python_generated.models.note_tweet_result_rich_text_tag import NoteTweetResultRichTextTag
378
+ from twitter_openapi_python_generated.models.notification_additional_context import NotificationAdditionalContext
336
379
  from twitter_openapi_python_generated.models.notification_details import NotificationDetails
337
380
  from twitter_openapi_python_generated.models.notification_template import NotificationTemplate
381
+ from twitter_openapi_python_generated.models.notification_url import NotificationUrl
382
+ from twitter_openapi_python_generated.models.notification_urt_endpoint_options import NotificationUrtEndpointOptions
338
383
  from twitter_openapi_python_generated.models.notifications_result import NotificationsResult
339
384
  from twitter_openapi_python_generated.models.notifications_timeline_data import NotificationsTimelineData
340
385
  from twitter_openapi_python_generated.models.notifications_timeline_response import NotificationsTimelineResponse
@@ -382,6 +427,11 @@ from twitter_openapi_python_generated.models.post_list_add_member_request import
382
427
  from twitter_openapi_python_generated.models.post_list_add_member_request_variables import PostListAddMemberRequestVariables
383
428
  from twitter_openapi_python_generated.models.post_list_remove_member_request import PostListRemoveMemberRequest
384
429
  from twitter_openapi_python_generated.models.post_unfavorite_tweet_request import PostUnfavoriteTweetRequest
430
+ from twitter_openapi_python_generated.models.preroll import Preroll
431
+ from twitter_openapi_python_generated.models.preroll_call_to_action import PrerollCallToAction
432
+ from twitter_openapi_python_generated.models.preroll_media_info import PrerollMediaInfo
433
+ from twitter_openapi_python_generated.models.preroll_metadata import PrerollMetadata
434
+ from twitter_openapi_python_generated.models.preroll_video_variant import PrerollVideoVariant
385
435
  from twitter_openapi_python_generated.models.primary_community_topic import PrimaryCommunityTopic
386
436
  from twitter_openapi_python_generated.models.profile_bio import ProfileBio
387
437
  from twitter_openapi_python_generated.models.profile_bio_entities import ProfileBioEntities
@@ -410,6 +460,9 @@ from twitter_openapi_python_generated.models.search_timeline_response import Sea
410
460
  from twitter_openapi_python_generated.models.self_thread import SelfThread
411
461
  from twitter_openapi_python_generated.models.sensitive_media_warning import SensitiveMediaWarning
412
462
  from twitter_openapi_python_generated.models.session import Session
463
+ from twitter_openapi_python_generated.models.sidebar_user_recommendation import SidebarUserRecommendation
464
+ from twitter_openapi_python_generated.models.sidebar_user_recommendations_data import SidebarUserRecommendationsData
465
+ from twitter_openapi_python_generated.models.sidebar_user_recommendations_response import SidebarUserRecommendationsResponse
413
466
  from twitter_openapi_python_generated.models.slice_info import SliceInfo
414
467
  from twitter_openapi_python_generated.models.smarttag import Smarttag
415
468
  from twitter_openapi_python_generated.models.smarttag_tag import SmarttagTag
@@ -417,6 +470,11 @@ from twitter_openapi_python_generated.models.smarttag_tag_info import SmarttagTa
417
470
  from twitter_openapi_python_generated.models.social_context_landing_url import SocialContextLandingUrl
418
471
  from twitter_openapi_python_generated.models.social_context_union import SocialContextUnion
419
472
  from twitter_openapi_python_generated.models.social_context_union_type import SocialContextUnionType
473
+ from twitter_openapi_python_generated.models.story_topic import StoryTopic
474
+ from twitter_openapi_python_generated.models.story_topic_data import StoryTopicData
475
+ from twitter_openapi_python_generated.models.story_topic_item import StoryTopicItem
476
+ from twitter_openapi_python_generated.models.story_topic_response import StoryTopicResponse
477
+ from twitter_openapi_python_generated.models.story_topic_stories import StoryTopicStories
420
478
  from twitter_openapi_python_generated.models.super_follow_user_profile import SuperFollowUserProfile
421
479
  from twitter_openapi_python_generated.models.super_follows_reply_user_result import SuperFollowsReplyUserResult
422
480
  from twitter_openapi_python_generated.models.super_follows_reply_user_result_core import SuperFollowsReplyUserResultCore
@@ -512,6 +570,9 @@ from twitter_openapi_python_generated.models.tweet_interstitial_text import Twee
512
570
  from twitter_openapi_python_generated.models.tweet_interstitial_text_entity import TweetInterstitialTextEntity
513
571
  from twitter_openapi_python_generated.models.tweet_interstitial_text_entity_ref import TweetInterstitialTextEntityRef
514
572
  from twitter_openapi_python_generated.models.tweet_legacy import TweetLegacy
573
+ from twitter_openapi_python_generated.models.tweet_legacy_place import TweetLegacyPlace
574
+ from twitter_openapi_python_generated.models.tweet_legacy_place_bounding_box import TweetLegacyPlaceBoundingBox
575
+ from twitter_openapi_python_generated.models.tweet_legacy_point import TweetLegacyPoint
515
576
  from twitter_openapi_python_generated.models.tweet_legacy_scopes import TweetLegacyScopes
516
577
  from twitter_openapi_python_generated.models.tweet_limited_action_results import TweetLimitedActionResults
517
578
  from twitter_openapi_python_generated.models.tweet_post_cta import TweetPostCta
@@ -525,6 +586,9 @@ from twitter_openapi_python_generated.models.tweet_result_by_rest_id_data import
525
586
  from twitter_openapi_python_generated.models.tweet_result_by_rest_id_response import TweetResultByRestIdResponse
526
587
  from twitter_openapi_python_generated.models.tweet_retweeters_response import TweetRetweetersResponse
527
588
  from twitter_openapi_python_generated.models.tweet_retweeters_response_data import TweetRetweetersResponseData
589
+ from twitter_openapi_python_generated.models.tweet_sports_competitor import TweetSportsCompetitor
590
+ from twitter_openapi_python_generated.models.tweet_sports_post_context import TweetSportsPostContext
591
+ from twitter_openapi_python_generated.models.tweet_sports_rest_id import TweetSportsRestId
528
592
  from twitter_openapi_python_generated.models.tweet_tombstone import TweetTombstone
529
593
  from twitter_openapi_python_generated.models.tweet_unavailable import TweetUnavailable
530
594
  from twitter_openapi_python_generated.models.tweet_union import TweetUnion
@@ -0,0 +1,93 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Twitter OpenAPI
5
+
6
+ Twitter OpenAPI(Swagger) specification
7
+
8
+ The version of the OpenAPI document: 0.0.1
9
+ Contact: yuki@yuki0311.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict
22
+ from typing import Any, ClassVar, Dict, List
23
+ from twitter_openapi_python_generated.models.about_account_user_result import AboutAccountUserResult
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+ from pydantic_core import to_jsonable_python
27
+
28
+ class AboutAccountData(BaseModel):
29
+ """
30
+ AboutAccountData
31
+ """ # noqa: E501
32
+ user_result_by_screen_name: AboutAccountUserResult
33
+ __properties: ClassVar[List[str]] = ["user_result_by_screen_name"]
34
+
35
+ model_config = ConfigDict(
36
+ validate_by_name=True,
37
+ validate_by_alias=True,
38
+ validate_assignment=True,
39
+ protected_namespaces=(),
40
+ )
41
+
42
+
43
+ def to_str(self) -> str:
44
+ """Returns the string representation of the model using alias"""
45
+ return pprint.pformat(self.model_dump(by_alias=True))
46
+
47
+ def to_json(self) -> str:
48
+ """Returns the JSON representation of the model using alias"""
49
+ return json.dumps(to_jsonable_python(self.to_dict()))
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of AboutAccountData from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ # override the default output from pydantic by calling `to_dict()` of user_result_by_screen_name
75
+ if self.user_result_by_screen_name:
76
+ _dict['user_result_by_screen_name'] = self.user_result_by_screen_name.to_dict()
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of AboutAccountData from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "user_result_by_screen_name": AboutAccountUserResult.from_dict(obj["user_result_by_screen_name"]) if obj.get("user_result_by_screen_name") is not None else None
90
+ })
91
+ return _obj
92
+
93
+