airbyte-agent-jira 0.1.22__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 (56) hide show
  1. airbyte_agent_jira/__init__.py +91 -0
  2. airbyte_agent_jira/_vendored/__init__.py +1 -0
  3. airbyte_agent_jira/_vendored/connector_sdk/__init__.py +82 -0
  4. airbyte_agent_jira/_vendored/connector_sdk/auth_strategies.py +1123 -0
  5. airbyte_agent_jira/_vendored/connector_sdk/auth_template.py +135 -0
  6. airbyte_agent_jira/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
  7. airbyte_agent_jira/_vendored/connector_sdk/cloud_utils/client.py +213 -0
  8. airbyte_agent_jira/_vendored/connector_sdk/connector_model_loader.py +965 -0
  9. airbyte_agent_jira/_vendored/connector_sdk/constants.py +78 -0
  10. airbyte_agent_jira/_vendored/connector_sdk/exceptions.py +23 -0
  11. airbyte_agent_jira/_vendored/connector_sdk/executor/__init__.py +31 -0
  12. airbyte_agent_jira/_vendored/connector_sdk/executor/hosted_executor.py +197 -0
  13. airbyte_agent_jira/_vendored/connector_sdk/executor/local_executor.py +1574 -0
  14. airbyte_agent_jira/_vendored/connector_sdk/executor/models.py +190 -0
  15. airbyte_agent_jira/_vendored/connector_sdk/extensions.py +694 -0
  16. airbyte_agent_jira/_vendored/connector_sdk/http/__init__.py +37 -0
  17. airbyte_agent_jira/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
  18. airbyte_agent_jira/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
  19. airbyte_agent_jira/_vendored/connector_sdk/http/config.py +98 -0
  20. airbyte_agent_jira/_vendored/connector_sdk/http/exceptions.py +119 -0
  21. airbyte_agent_jira/_vendored/connector_sdk/http/protocols.py +114 -0
  22. airbyte_agent_jira/_vendored/connector_sdk/http/response.py +102 -0
  23. airbyte_agent_jira/_vendored/connector_sdk/http_client.py +686 -0
  24. airbyte_agent_jira/_vendored/connector_sdk/introspection.py +262 -0
  25. airbyte_agent_jira/_vendored/connector_sdk/logging/__init__.py +11 -0
  26. airbyte_agent_jira/_vendored/connector_sdk/logging/logger.py +264 -0
  27. airbyte_agent_jira/_vendored/connector_sdk/logging/types.py +92 -0
  28. airbyte_agent_jira/_vendored/connector_sdk/observability/__init__.py +11 -0
  29. airbyte_agent_jira/_vendored/connector_sdk/observability/models.py +19 -0
  30. airbyte_agent_jira/_vendored/connector_sdk/observability/redactor.py +81 -0
  31. airbyte_agent_jira/_vendored/connector_sdk/observability/session.py +94 -0
  32. airbyte_agent_jira/_vendored/connector_sdk/performance/__init__.py +6 -0
  33. airbyte_agent_jira/_vendored/connector_sdk/performance/instrumentation.py +57 -0
  34. airbyte_agent_jira/_vendored/connector_sdk/performance/metrics.py +93 -0
  35. airbyte_agent_jira/_vendored/connector_sdk/schema/__init__.py +75 -0
  36. airbyte_agent_jira/_vendored/connector_sdk/schema/base.py +161 -0
  37. airbyte_agent_jira/_vendored/connector_sdk/schema/components.py +239 -0
  38. airbyte_agent_jira/_vendored/connector_sdk/schema/connector.py +131 -0
  39. airbyte_agent_jira/_vendored/connector_sdk/schema/extensions.py +109 -0
  40. airbyte_agent_jira/_vendored/connector_sdk/schema/operations.py +146 -0
  41. airbyte_agent_jira/_vendored/connector_sdk/schema/security.py +223 -0
  42. airbyte_agent_jira/_vendored/connector_sdk/secrets.py +182 -0
  43. airbyte_agent_jira/_vendored/connector_sdk/telemetry/__init__.py +10 -0
  44. airbyte_agent_jira/_vendored/connector_sdk/telemetry/config.py +32 -0
  45. airbyte_agent_jira/_vendored/connector_sdk/telemetry/events.py +58 -0
  46. airbyte_agent_jira/_vendored/connector_sdk/telemetry/tracker.py +151 -0
  47. airbyte_agent_jira/_vendored/connector_sdk/types.py +245 -0
  48. airbyte_agent_jira/_vendored/connector_sdk/utils.py +60 -0
  49. airbyte_agent_jira/_vendored/connector_sdk/validation.py +822 -0
  50. airbyte_agent_jira/connector.py +978 -0
  51. airbyte_agent_jira/connector_model.py +2827 -0
  52. airbyte_agent_jira/models.py +741 -0
  53. airbyte_agent_jira/types.py +117 -0
  54. airbyte_agent_jira-0.1.22.dist-info/METADATA +113 -0
  55. airbyte_agent_jira-0.1.22.dist-info/RECORD +56 -0
  56. airbyte_agent_jira-0.1.22.dist-info/WHEEL +4 -0
@@ -0,0 +1,741 @@
1
+ """
2
+ Pydantic models for jira connector.
3
+
4
+ This module contains Pydantic models used for authentication configuration
5
+ and response envelope types.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field
11
+ from typing import TypeVar, Generic, Union, Any
12
+
13
+ # Authentication configuration
14
+
15
+ class JiraAuthConfig(BaseModel):
16
+ """Authentication"""
17
+
18
+ model_config = ConfigDict(extra="forbid")
19
+
20
+ username: str
21
+ """Authentication username"""
22
+ password: str
23
+ """Authentication password"""
24
+
25
+ # ===== RESPONSE TYPE DEFINITIONS (PYDANTIC) =====
26
+
27
+ class ProjectVersionsItem(BaseModel):
28
+ """Nested schema for Project.versions_item"""
29
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
30
+
31
+ self: Union[str, Any] = Field(default=None)
32
+ id: Union[str, Any] = Field(default=None)
33
+ name: Union[str, Any] = Field(default=None)
34
+ description: Union[str, Any] = Field(default=None)
35
+ archived: Union[bool, Any] = Field(default=None)
36
+ released: Union[bool, Any] = Field(default=None)
37
+ start_date: Union[str | None, Any] = Field(default=None, alias="startDate")
38
+ release_date: Union[str | None, Any] = Field(default=None, alias="releaseDate")
39
+ overdue: Union[bool | None, Any] = Field(default=None)
40
+ user_start_date: Union[str | None, Any] = Field(default=None, alias="userStartDate")
41
+ user_release_date: Union[str | None, Any] = Field(default=None, alias="userReleaseDate")
42
+ project_id: Union[int, Any] = Field(default=None, alias="projectId")
43
+
44
+ class ProjectProjectcategory(BaseModel):
45
+ """Project category information"""
46
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
47
+
48
+ self: Union[str, Any] = Field(default=None)
49
+ id: Union[str, Any] = Field(default=None)
50
+ name: Union[str, Any] = Field(default=None)
51
+ description: Union[str, Any] = Field(default=None)
52
+
53
+ class ProjectComponentsItem(BaseModel):
54
+ """Nested schema for Project.components_item"""
55
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
56
+
57
+ self: Union[str, Any] = Field(default=None)
58
+ id: Union[str, Any] = Field(default=None)
59
+ name: Union[str, Any] = Field(default=None)
60
+ description: Union[str, Any] = Field(default=None)
61
+ is_assignee_type_valid: Union[bool, Any] = Field(default=None, alias="isAssigneeTypeValid")
62
+
63
+ class ProjectIssuetypesItem(BaseModel):
64
+ """Nested schema for Project.issueTypes_item"""
65
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
66
+
67
+ self: Union[str, Any] = Field(default=None)
68
+ id: Union[str, Any] = Field(default=None)
69
+ description: Union[str, Any] = Field(default=None)
70
+ icon_url: Union[str, Any] = Field(default=None, alias="iconUrl")
71
+ name: Union[str, Any] = Field(default=None)
72
+ subtask: Union[bool, Any] = Field(default=None)
73
+ avatar_id: Union[int | None, Any] = Field(default=None, alias="avatarId")
74
+ hierarchy_level: Union[int | None, Any] = Field(default=None, alias="hierarchyLevel")
75
+
76
+ class ProjectAvatarurls(BaseModel):
77
+ """URLs for project avatars in different sizes"""
78
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
79
+
80
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
81
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
82
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
83
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
84
+
85
+ class ProjectLeadAvatarurls(BaseModel):
86
+ """URLs for user avatars in different sizes"""
87
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
88
+
89
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
90
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
91
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
92
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
93
+
94
+ class ProjectLead(BaseModel):
95
+ """Project lead user (available with expand=lead)"""
96
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
97
+
98
+ self: Union[str, Any] = Field(default=None)
99
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
100
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
101
+ avatar_urls: Union[ProjectLeadAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
102
+ """URLs for user avatars in different sizes"""
103
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
104
+ active: Union[bool, Any] = Field(default=None)
105
+
106
+ class Project(BaseModel):
107
+ """Jira project object"""
108
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
109
+
110
+ id: Union[str, Any] = Field(default=None)
111
+ key: Union[str, Any] = Field(default=None)
112
+ name: Union[str, Any] = Field(default=None)
113
+ self: Union[str, Any] = Field(default=None)
114
+ expand: Union[str | None, Any] = Field(default=None)
115
+ description: Union[str | None, Any] = Field(default=None)
116
+ lead: Union[ProjectLead | None, Any] = Field(default=None)
117
+ avatar_urls: Union[ProjectAvatarurls, Any] = Field(default=None, alias="avatarUrls")
118
+ project_type_key: Union[str, Any] = Field(default=None, alias="projectTypeKey")
119
+ simplified: Union[bool, Any] = Field(default=None)
120
+ style: Union[str, Any] = Field(default=None)
121
+ is_private: Union[bool, Any] = Field(default=None, alias="isPrivate")
122
+ properties: Union[dict[str, Any], Any] = Field(default=None)
123
+ project_category: Union[ProjectProjectcategory | None, Any] = Field(default=None, alias="projectCategory")
124
+ entity_id: Union[str | None, Any] = Field(default=None, alias="entityId")
125
+ uuid: Union[str | None, Any] = Field(default=None)
126
+ url: Union[str | None, Any] = Field(default=None)
127
+ assignee_type: Union[str | None, Any] = Field(default=None, alias="assigneeType")
128
+ components: Union[list[ProjectComponentsItem] | None, Any] = Field(default=None)
129
+ issue_types: Union[list[ProjectIssuetypesItem] | None, Any] = Field(default=None, alias="issueTypes")
130
+ versions: Union[list[ProjectVersionsItem] | None, Any] = Field(default=None)
131
+ roles: Union[dict[str, str] | None, Any] = Field(default=None)
132
+
133
+ class ProjectsList(BaseModel):
134
+ """Paginated list of projects from search results"""
135
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
136
+
137
+ self: Union[str, Any] = Field(default=None)
138
+ next_page: Union[str | None, Any] = Field(default=None, alias="nextPage")
139
+ max_results: Union[int, Any] = Field(default=None, alias="maxResults")
140
+ start_at: Union[int, Any] = Field(default=None, alias="startAt")
141
+ total: Union[int, Any] = Field(default=None)
142
+ is_last: Union[bool, Any] = Field(default=None, alias="isLast")
143
+ values: Union[list[Project], Any] = Field(default=None)
144
+
145
+ class IssueFieldsProjectAvatarurls(BaseModel):
146
+ """URLs for user avatars in different sizes"""
147
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
148
+
149
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
150
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
151
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
152
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
153
+
154
+ class IssueFieldsProjectProjectcategory(BaseModel):
155
+ """Nested schema for IssueFieldsProject.projectCategory"""
156
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
157
+
158
+ self: Union[str, Any] = Field(default=None)
159
+ id: Union[str, Any] = Field(default=None)
160
+ name: Union[str, Any] = Field(default=None)
161
+ description: Union[str, Any] = Field(default=None)
162
+
163
+ class IssueFieldsProject(BaseModel):
164
+ """Project information"""
165
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
166
+
167
+ self: Union[str, Any] = Field(default=None)
168
+ id: Union[str, Any] = Field(default=None)
169
+ key: Union[str, Any] = Field(default=None)
170
+ name: Union[str, Any] = Field(default=None)
171
+ project_type_key: Union[str, Any] = Field(default=None, alias="projectTypeKey")
172
+ simplified: Union[bool, Any] = Field(default=None)
173
+ avatar_urls: Union[IssueFieldsProjectAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
174
+ """URLs for user avatars in different sizes"""
175
+ project_category: Union[IssueFieldsProjectProjectcategory | None, Any] = Field(default=None, alias="projectCategory")
176
+
177
+ class IssueFieldsIssuetype(BaseModel):
178
+ """Issue type information"""
179
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
180
+
181
+ self: Union[str, Any] = Field(default=None)
182
+ id: Union[str, Any] = Field(default=None)
183
+ description: Union[str, Any] = Field(default=None)
184
+ icon_url: Union[str, Any] = Field(default=None, alias="iconUrl")
185
+ name: Union[str, Any] = Field(default=None)
186
+ subtask: Union[bool, Any] = Field(default=None)
187
+ avatar_id: Union[int | None, Any] = Field(default=None, alias="avatarId")
188
+ hierarchy_level: Union[int | None, Any] = Field(default=None, alias="hierarchyLevel")
189
+
190
+ class IssueFieldsReporterAvatarurls(BaseModel):
191
+ """URLs for user avatars in different sizes"""
192
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
193
+
194
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
195
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
196
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
197
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
198
+
199
+ class IssueFieldsReporter(BaseModel):
200
+ """Issue reporter user information"""
201
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
202
+
203
+ self: Union[str, Any] = Field(default=None)
204
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
205
+ email_address: Union[str, Any] = Field(default=None, alias="emailAddress")
206
+ avatar_urls: Union[IssueFieldsReporterAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
207
+ """URLs for user avatars in different sizes"""
208
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
209
+ active: Union[bool, Any] = Field(default=None)
210
+ time_zone: Union[str, Any] = Field(default=None, alias="timeZone")
211
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
212
+
213
+ class IssueFieldsAssigneeAvatarurls(BaseModel):
214
+ """URLs for user avatars in different sizes"""
215
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
216
+
217
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
218
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
219
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
220
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
221
+
222
+ class IssueFieldsAssignee(BaseModel):
223
+ """Issue assignee user information (null if unassigned)"""
224
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
225
+
226
+ self: Union[str, Any] = Field(default=None)
227
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
228
+ email_address: Union[str, Any] = Field(default=None, alias="emailAddress")
229
+ avatar_urls: Union[IssueFieldsAssigneeAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
230
+ """URLs for user avatars in different sizes"""
231
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
232
+ active: Union[bool, Any] = Field(default=None)
233
+ time_zone: Union[str, Any] = Field(default=None, alias="timeZone")
234
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
235
+
236
+ class IssueFieldsStatusStatuscategory(BaseModel):
237
+ """Nested schema for IssueFieldsStatus.statusCategory"""
238
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
239
+
240
+ self: Union[str, Any] = Field(default=None)
241
+ id: Union[int, Any] = Field(default=None)
242
+ key: Union[str, Any] = Field(default=None)
243
+ color_name: Union[str, Any] = Field(default=None, alias="colorName")
244
+ name: Union[str, Any] = Field(default=None)
245
+
246
+ class IssueFieldsStatus(BaseModel):
247
+ """Issue status information"""
248
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
249
+
250
+ self: Union[str, Any] = Field(default=None)
251
+ description: Union[str, Any] = Field(default=None)
252
+ icon_url: Union[str, Any] = Field(default=None, alias="iconUrl")
253
+ name: Union[str, Any] = Field(default=None)
254
+ id: Union[str, Any] = Field(default=None)
255
+ status_category: Union[IssueFieldsStatusStatuscategory, Any] = Field(default=None, alias="statusCategory")
256
+
257
+ class IssueFieldsPriority(BaseModel):
258
+ """Issue priority information"""
259
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
260
+
261
+ self: Union[str, Any] = Field(default=None)
262
+ icon_url: Union[str, Any] = Field(default=None, alias="iconUrl")
263
+ name: Union[str, Any] = Field(default=None)
264
+ id: Union[str, Any] = Field(default=None)
265
+
266
+ class IssueFields(BaseModel):
267
+ """Issue fields (actual fields depend on 'fields' parameter in request)"""
268
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
269
+
270
+ summary: Union[str, Any] = Field(default=None, description="Issue summary/title")
271
+ """Issue summary/title"""
272
+ issuetype: Union[IssueFieldsIssuetype, Any] = Field(default=None, description="Issue type information")
273
+ """Issue type information"""
274
+ created: Union[str, Any] = Field(default=None, description="Issue creation timestamp")
275
+ """Issue creation timestamp"""
276
+ updated: Union[str, Any] = Field(default=None, description="Issue last update timestamp")
277
+ """Issue last update timestamp"""
278
+ project: Union[IssueFieldsProject, Any] = Field(default=None, description="Project information")
279
+ """Project information"""
280
+ reporter: Union[IssueFieldsReporter | None, Any] = Field(default=None, description="Issue reporter user information")
281
+ """Issue reporter user information"""
282
+ assignee: Union[IssueFieldsAssignee | None, Any] = Field(default=None, description="Issue assignee user information (null if unassigned)")
283
+ """Issue assignee user information (null if unassigned)"""
284
+ priority: Union[IssueFieldsPriority | None, Any] = Field(default=None, description="Issue priority information")
285
+ """Issue priority information"""
286
+ status: Union[IssueFieldsStatus, Any] = Field(default=None, description="Issue status information")
287
+ """Issue status information"""
288
+
289
+ class Issue(BaseModel):
290
+ """Jira issue object"""
291
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
292
+
293
+ id: Union[str, Any] = Field(default=None)
294
+ key: Union[str, Any] = Field(default=None)
295
+ self: Union[str, Any] = Field(default=None)
296
+ expand: Union[str | None, Any] = Field(default=None)
297
+ fields: Union[IssueFields, Any] = Field(default=None)
298
+
299
+ class IssuesList(BaseModel):
300
+ """Paginated list of issues from JQL search"""
301
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
302
+
303
+ issues: Union[list[Issue], Any] = Field(default=None)
304
+ total: Union[int, Any] = Field(default=None)
305
+ max_results: Union[int | None, Any] = Field(default=None, alias="maxResults")
306
+ start_at: Union[int | None, Any] = Field(default=None, alias="startAt")
307
+ next_page_token: Union[str | None, Any] = Field(default=None, alias="nextPageToken")
308
+ is_last: Union[bool | None, Any] = Field(default=None, alias="isLast")
309
+
310
+ class UserGroupsItemsItem(BaseModel):
311
+ """Nested schema for UserGroups.items_item"""
312
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
313
+
314
+ name: Union[str, Any] = Field(default=None)
315
+ group_id: Union[str, Any] = Field(default=None, alias="groupId")
316
+ self: Union[str, Any] = Field(default=None)
317
+
318
+ class UserGroups(BaseModel):
319
+ """User groups (available with expand=groups)"""
320
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
321
+
322
+ size: Union[int, Any] = Field(default=None, description="Number of groups")
323
+ """Number of groups"""
324
+ items: Union[list[UserGroupsItemsItem], Any] = Field(default=None, description="Array of group objects")
325
+ """Array of group objects"""
326
+
327
+ class UserAvatarurls(BaseModel):
328
+ """URLs for user avatars in different sizes"""
329
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
330
+
331
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
332
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
333
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
334
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
335
+
336
+ class UserApplicationrolesItemsItemGroupdetailsItem(BaseModel):
337
+ """Nested schema for UserApplicationrolesItemsItem.groupDetails_item"""
338
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
339
+
340
+ name: Union[str, Any] = Field(default=None)
341
+ group_id: Union[str, Any] = Field(default=None, alias="groupId")
342
+ self: Union[str, Any] = Field(default=None)
343
+
344
+ class UserApplicationrolesItemsItemDefaultgroupsdetailsItem(BaseModel):
345
+ """Nested schema for UserApplicationrolesItemsItem.defaultGroupsDetails_item"""
346
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
347
+
348
+ name: Union[str, Any] = Field(default=None)
349
+ group_id: Union[str, Any] = Field(default=None, alias="groupId")
350
+ self: Union[str, Any] = Field(default=None)
351
+
352
+ class UserApplicationrolesItemsItem(BaseModel):
353
+ """Nested schema for UserApplicationroles.items_item"""
354
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
355
+
356
+ key: Union[str, Any] = Field(default=None)
357
+ name: Union[str, Any] = Field(default=None)
358
+ groups: Union[list[str], Any] = Field(default=None)
359
+ group_details: Union[list[UserApplicationrolesItemsItemGroupdetailsItem], Any] = Field(default=None, alias="groupDetails")
360
+ default_groups: Union[list[str], Any] = Field(default=None, alias="defaultGroups")
361
+ default_groups_details: Union[list[UserApplicationrolesItemsItemDefaultgroupsdetailsItem], Any] = Field(default=None, alias="defaultGroupsDetails")
362
+ selected_by_default: Union[bool, Any] = Field(default=None, alias="selectedByDefault")
363
+ defined: Union[bool, Any] = Field(default=None)
364
+ number_of_seats: Union[int, Any] = Field(default=None, alias="numberOfSeats")
365
+ remaining_seats: Union[int, Any] = Field(default=None, alias="remainingSeats")
366
+ user_count: Union[int, Any] = Field(default=None, alias="userCount")
367
+ user_count_description: Union[str, Any] = Field(default=None, alias="userCountDescription")
368
+ has_unlimited_seats: Union[bool, Any] = Field(default=None, alias="hasUnlimitedSeats")
369
+ platform: Union[bool, Any] = Field(default=None)
370
+
371
+ class UserApplicationroles(BaseModel):
372
+ """User application roles (available with expand=applicationRoles)"""
373
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
374
+
375
+ size: Union[int, Any] = Field(default=None, description="Number of application roles")
376
+ """Number of application roles"""
377
+ items: Union[list[UserApplicationrolesItemsItem], Any] = Field(default=None, description="Array of application role objects")
378
+ """Array of application role objects"""
379
+
380
+ class User(BaseModel):
381
+ """Jira user object"""
382
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
383
+
384
+ self: Union[str, Any] = Field(default=None)
385
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
386
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
387
+ email_address: Union[str | None, Any] = Field(default=None, alias="emailAddress")
388
+ avatar_urls: Union[UserAvatarurls, Any] = Field(default=None, alias="avatarUrls")
389
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
390
+ active: Union[bool, Any] = Field(default=None)
391
+ time_zone: Union[str | None, Any] = Field(default=None, alias="timeZone")
392
+ locale: Union[str | None, Any] = Field(default=None)
393
+ expand: Union[str | None, Any] = Field(default=None)
394
+ groups: Union[UserGroups | None, Any] = Field(default=None)
395
+ application_roles: Union[UserApplicationroles | None, Any] = Field(default=None, alias="applicationRoles")
396
+
397
+ class IssueFieldSchema(BaseModel):
398
+ """Schema information for the field"""
399
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
400
+
401
+ type: Union[str, Any] = Field(default=None, description="Field type (e.g., string, number, array)")
402
+ """Field type (e.g., string, number, array)"""
403
+ system: Union[str | None, Any] = Field(default=None, description="System field identifier")
404
+ """System field identifier"""
405
+ items: Union[str | None, Any] = Field(default=None, description="Type of items in array fields")
406
+ """Type of items in array fields"""
407
+ custom: Union[str | None, Any] = Field(default=None, description="Custom field type identifier")
408
+ """Custom field type identifier"""
409
+ custom_id: Union[int | None, Any] = Field(default=None, alias="customId", description="Custom field ID")
410
+ """Custom field ID"""
411
+ configuration: Union[dict[str, Any] | None, Any] = Field(default=None, description="Field configuration")
412
+ """Field configuration"""
413
+
414
+ class IssueField(BaseModel):
415
+ """Jira issue field object (custom or system field)"""
416
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
417
+
418
+ id: Union[str, Any] = Field(default=None)
419
+ key: Union[str | None, Any] = Field(default=None)
420
+ name: Union[str, Any] = Field(default=None)
421
+ custom: Union[bool | None, Any] = Field(default=None)
422
+ orderable: Union[bool | None, Any] = Field(default=None)
423
+ navigable: Union[bool | None, Any] = Field(default=None)
424
+ searchable: Union[bool | None, Any] = Field(default=None)
425
+ clause_names: Union[list[str] | None, Any] = Field(default=None, alias="clauseNames")
426
+ schema_: Union[IssueFieldSchema | None, Any] = Field(default=None, alias="schema")
427
+ untranslated_name: Union[str | None, Any] = Field(default=None, alias="untranslatedName")
428
+ type_display_name: Union[str | None, Any] = Field(default=None, alias="typeDisplayName")
429
+ description: Union[str | None, Any] = Field(default=None)
430
+ searcher_key: Union[str | None, Any] = Field(default=None, alias="searcherKey")
431
+ screens_count: Union[int | None, Any] = Field(default=None, alias="screensCount")
432
+ contexts_count: Union[int | None, Any] = Field(default=None, alias="contextsCount")
433
+ is_locked: Union[bool | None, Any] = Field(default=None, alias="isLocked")
434
+ last_used: Union[str | None, Any] = Field(default=None, alias="lastUsed")
435
+
436
+ class IssueFieldSearchResults(BaseModel):
437
+ """Paginated search results for issue fields"""
438
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
439
+
440
+ max_results: Union[int, Any] = Field(default=None, alias="maxResults")
441
+ start_at: Union[int, Any] = Field(default=None, alias="startAt")
442
+ total: Union[int, Any] = Field(default=None)
443
+ is_last: Union[bool, Any] = Field(default=None, alias="isLast")
444
+ values: Union[list[IssueField], Any] = Field(default=None)
445
+
446
+ class IssueCommentVisibility(BaseModel):
447
+ """Visibility restrictions for the comment"""
448
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
449
+
450
+ type: Union[str, Any] = Field(default=None)
451
+ value: Union[str, Any] = Field(default=None)
452
+ identifier: Union[str | None, Any] = Field(default=None)
453
+
454
+ class IssueCommentAuthorAvatarurls(BaseModel):
455
+ """URLs for user avatars in different sizes"""
456
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
457
+
458
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
459
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
460
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
461
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
462
+
463
+ class IssueCommentAuthor(BaseModel):
464
+ """Comment author user information"""
465
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
466
+
467
+ self: Union[str, Any] = Field(default=None)
468
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
469
+ email_address: Union[str, Any] = Field(default=None, alias="emailAddress")
470
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
471
+ active: Union[bool, Any] = Field(default=None)
472
+ time_zone: Union[str, Any] = Field(default=None, alias="timeZone")
473
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
474
+ avatar_urls: Union[IssueCommentAuthorAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
475
+ """URLs for user avatars in different sizes"""
476
+
477
+ class IssueCommentBodyContentItemContentItem(BaseModel):
478
+ """Nested schema for IssueCommentBodyContentItem.content_item"""
479
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
480
+
481
+ type: Union[str, Any] = Field(default=None, description="Content type (e.g., 'text')")
482
+ """Content type (e.g., 'text')"""
483
+ text: Union[str, Any] = Field(default=None, description="Text content")
484
+ """Text content"""
485
+
486
+ class IssueCommentBodyContentItem(BaseModel):
487
+ """Nested schema for IssueCommentBody.content_item"""
488
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
489
+
490
+ type: Union[str, Any] = Field(default=None, description="Block type (e.g., 'paragraph')")
491
+ """Block type (e.g., 'paragraph')"""
492
+ content: Union[list[IssueCommentBodyContentItemContentItem], Any] = Field(default=None, description="Nested content items")
493
+ """Nested content items"""
494
+
495
+ class IssueCommentBody(BaseModel):
496
+ """Comment content in ADF (Atlassian Document Format)"""
497
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
498
+
499
+ type: Union[str, Any] = Field(default=None, description="Document type (always 'doc')")
500
+ """Document type (always 'doc')"""
501
+ version: Union[int, Any] = Field(default=None, description="ADF version")
502
+ """ADF version"""
503
+ content: Union[list[IssueCommentBodyContentItem], Any] = Field(default=None, description="Array of content blocks")
504
+ """Array of content blocks"""
505
+
506
+ class IssueCommentUpdateauthorAvatarurls(BaseModel):
507
+ """URLs for user avatars in different sizes"""
508
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
509
+
510
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
511
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
512
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
513
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
514
+
515
+ class IssueCommentUpdateauthor(BaseModel):
516
+ """User who last updated the comment"""
517
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
518
+
519
+ self: Union[str, Any] = Field(default=None)
520
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
521
+ email_address: Union[str, Any] = Field(default=None, alias="emailAddress")
522
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
523
+ active: Union[bool, Any] = Field(default=None)
524
+ time_zone: Union[str, Any] = Field(default=None, alias="timeZone")
525
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
526
+ avatar_urls: Union[IssueCommentUpdateauthorAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
527
+ """URLs for user avatars in different sizes"""
528
+
529
+ class IssueComment(BaseModel):
530
+ """Jira issue comment object"""
531
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
532
+
533
+ id: Union[str, Any] = Field(default=None)
534
+ self: Union[str, Any] = Field(default=None)
535
+ body: Union[IssueCommentBody, Any] = Field(default=None)
536
+ author: Union[IssueCommentAuthor, Any] = Field(default=None)
537
+ update_author: Union[IssueCommentUpdateauthor, Any] = Field(default=None, alias="updateAuthor")
538
+ created: Union[str, Any] = Field(default=None)
539
+ updated: Union[str, Any] = Field(default=None)
540
+ jsd_public: Union[bool, Any] = Field(default=None, alias="jsdPublic")
541
+ visibility: Union[IssueCommentVisibility | None, Any] = Field(default=None)
542
+ rendered_body: Union[str | None, Any] = Field(default=None, alias="renderedBody")
543
+ properties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
544
+
545
+ class IssueCommentsList(BaseModel):
546
+ """Paginated list of issue comments"""
547
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
548
+
549
+ start_at: Union[int, Any] = Field(default=None, alias="startAt")
550
+ max_results: Union[int, Any] = Field(default=None, alias="maxResults")
551
+ total: Union[int, Any] = Field(default=None)
552
+ comments: Union[list[IssueComment], Any] = Field(default=None)
553
+
554
+ class WorklogUpdateauthorAvatarurls(BaseModel):
555
+ """URLs for user avatars in different sizes"""
556
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
557
+
558
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
559
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
560
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
561
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
562
+
563
+ class WorklogUpdateauthor(BaseModel):
564
+ """User who last updated the worklog"""
565
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
566
+
567
+ self: Union[str, Any] = Field(default=None)
568
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
569
+ email_address: Union[str, Any] = Field(default=None, alias="emailAddress")
570
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
571
+ active: Union[bool, Any] = Field(default=None)
572
+ time_zone: Union[str, Any] = Field(default=None, alias="timeZone")
573
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
574
+ avatar_urls: Union[WorklogUpdateauthorAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
575
+ """URLs for user avatars in different sizes"""
576
+
577
+ class WorklogVisibility(BaseModel):
578
+ """Visibility restrictions for the worklog"""
579
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
580
+
581
+ type: Union[str, Any] = Field(default=None)
582
+ value: Union[str, Any] = Field(default=None)
583
+ identifier: Union[str | None, Any] = Field(default=None)
584
+
585
+ class WorklogCommentContentItemContentItem(BaseModel):
586
+ """Nested schema for WorklogCommentContentItem.content_item"""
587
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
588
+
589
+ type: Union[str, Any] = Field(default=None, description="Content type (e.g., 'text')")
590
+ """Content type (e.g., 'text')"""
591
+ text: Union[str, Any] = Field(default=None, description="Text content")
592
+ """Text content"""
593
+
594
+ class WorklogCommentContentItem(BaseModel):
595
+ """Nested schema for WorklogComment.content_item"""
596
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
597
+
598
+ type: Union[str, Any] = Field(default=None, description="Block type (e.g., 'paragraph')")
599
+ """Block type (e.g., 'paragraph')"""
600
+ content: Union[list[WorklogCommentContentItemContentItem], Any] = Field(default=None, description="Nested content items")
601
+ """Nested content items"""
602
+
603
+ class WorklogComment(BaseModel):
604
+ """Comment associated with the worklog (ADF format)"""
605
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
606
+
607
+ type: Union[str, Any] = Field(default=None, description="Document type (always 'doc')")
608
+ """Document type (always 'doc')"""
609
+ version: Union[int, Any] = Field(default=None, description="ADF version")
610
+ """ADF version"""
611
+ content: Union[list[WorklogCommentContentItem], Any] = Field(default=None, description="Array of content blocks")
612
+ """Array of content blocks"""
613
+
614
+ class WorklogAuthorAvatarurls(BaseModel):
615
+ """URLs for user avatars in different sizes"""
616
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
617
+
618
+ field_16x16: Union[str, Any] = Field(default=None, alias="16x16")
619
+ field_24x24: Union[str, Any] = Field(default=None, alias="24x24")
620
+ field_32x32: Union[str, Any] = Field(default=None, alias="32x32")
621
+ field_48x48: Union[str, Any] = Field(default=None, alias="48x48")
622
+
623
+ class WorklogAuthor(BaseModel):
624
+ """Worklog author user information"""
625
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
626
+
627
+ self: Union[str, Any] = Field(default=None)
628
+ account_id: Union[str, Any] = Field(default=None, alias="accountId")
629
+ email_address: Union[str, Any] = Field(default=None, alias="emailAddress")
630
+ display_name: Union[str, Any] = Field(default=None, alias="displayName")
631
+ active: Union[bool, Any] = Field(default=None)
632
+ time_zone: Union[str, Any] = Field(default=None, alias="timeZone")
633
+ account_type: Union[str, Any] = Field(default=None, alias="accountType")
634
+ avatar_urls: Union[WorklogAuthorAvatarurls, Any] = Field(default=None, alias="avatarUrls", description="URLs for user avatars in different sizes")
635
+ """URLs for user avatars in different sizes"""
636
+
637
+ class Worklog(BaseModel):
638
+ """Jira worklog object"""
639
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
640
+
641
+ id: Union[str, Any] = Field(default=None)
642
+ self: Union[str, Any] = Field(default=None)
643
+ author: Union[WorklogAuthor, Any] = Field(default=None)
644
+ update_author: Union[WorklogUpdateauthor, Any] = Field(default=None, alias="updateAuthor")
645
+ comment: Union[WorklogComment, Any] = Field(default=None)
646
+ created: Union[str, Any] = Field(default=None)
647
+ updated: Union[str, Any] = Field(default=None)
648
+ started: Union[str, Any] = Field(default=None)
649
+ time_spent: Union[str, Any] = Field(default=None, alias="timeSpent")
650
+ time_spent_seconds: Union[int, Any] = Field(default=None, alias="timeSpentSeconds")
651
+ issue_id: Union[str, Any] = Field(default=None, alias="issueId")
652
+ visibility: Union[WorklogVisibility | None, Any] = Field(default=None)
653
+ properties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
654
+
655
+ class WorklogsList(BaseModel):
656
+ """Paginated list of issue worklogs"""
657
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
658
+
659
+ start_at: Union[int, Any] = Field(default=None, alias="startAt")
660
+ max_results: Union[int, Any] = Field(default=None, alias="maxResults")
661
+ total: Union[int, Any] = Field(default=None)
662
+ worklogs: Union[list[Worklog], Any] = Field(default=None)
663
+
664
+ # ===== METADATA TYPE DEFINITIONS (PYDANTIC) =====
665
+ # Meta types for operations that extract metadata (e.g., pagination info)
666
+
667
+ class IssuesSearchResultMeta(BaseModel):
668
+ """Metadata for issues.search operation"""
669
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
670
+
671
+ next_page_token: Union[str | None, Any] = Field(default=None, alias="nextPageToken")
672
+ is_last: Union[bool | None, Any] = Field(default=None, alias="isLast")
673
+ total: Union[int, Any] = Field(default=None)
674
+
675
+ class ProjectsSearchResultMeta(BaseModel):
676
+ """Metadata for projects.search operation"""
677
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
678
+
679
+ next_page: Union[str | None, Any] = Field(default=None, alias="nextPage")
680
+ total: Union[int, Any] = Field(default=None)
681
+
682
+ class IssueCommentsListResultMeta(BaseModel):
683
+ """Metadata for issue_comments.list operation"""
684
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
685
+
686
+ start_at: Union[int, Any] = Field(default=None, alias="startAt")
687
+ max_results: Union[int, Any] = Field(default=None, alias="maxResults")
688
+ total: Union[int, Any] = Field(default=None)
689
+
690
+ class IssueWorklogsListResultMeta(BaseModel):
691
+ """Metadata for issue_worklogs.list operation"""
692
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
693
+
694
+ start_at: Union[int, Any] = Field(default=None, alias="startAt")
695
+ max_results: Union[int, Any] = Field(default=None, alias="maxResults")
696
+ total: Union[int, Any] = Field(default=None)
697
+
698
+ # ===== RESPONSE ENVELOPE MODELS =====
699
+
700
+ # Type variables for generic envelope models
701
+ T = TypeVar('T')
702
+ S = TypeVar('S')
703
+
704
+
705
+ class JiraExecuteResult(BaseModel, Generic[T]):
706
+ """Response envelope with data only.
707
+
708
+ Used for actions that return data without metadata.
709
+ """
710
+ model_config = ConfigDict(extra="forbid")
711
+
712
+ data: T
713
+ """Response data containing the result of the action."""
714
+
715
+
716
+ class JiraExecuteResultWithMeta(JiraExecuteResult[T], Generic[T, S]):
717
+ """Response envelope with data and metadata.
718
+
719
+ Used for actions that return both data and metadata (e.g., pagination info).
720
+ """
721
+ meta: S
722
+ """Metadata about the response (e.g., pagination cursors, record counts)."""
723
+
724
+
725
+ # ===== OPERATION RESULT TYPE ALIASES =====
726
+
727
+ # Concrete type aliases for each operation result.
728
+ # These provide simpler, more readable type annotations than using the generic forms.
729
+
730
+ IssuesSearchResult = JiraExecuteResultWithMeta[list[Issue], IssuesSearchResultMeta]
731
+ """Result type for issues.search operation with data and metadata."""
732
+
733
+ ProjectsSearchResult = JiraExecuteResultWithMeta[list[Project], ProjectsSearchResultMeta]
734
+ """Result type for projects.search operation with data and metadata."""
735
+
736
+ IssueCommentsListResult = JiraExecuteResultWithMeta[list[IssueComment], IssueCommentsListResultMeta]
737
+ """Result type for issue_comments.list operation with data and metadata."""
738
+
739
+ IssueWorklogsListResult = JiraExecuteResultWithMeta[list[Worklog], IssueWorklogsListResultMeta]
740
+ """Result type for issue_worklogs.list operation with data and metadata."""
741
+