docket-client 0.3.2__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 (188) hide show
  1. docket/__init__.py +8 -0
  2. docket/api/__init__.py +1 -0
  3. docket/api/access/__init__.py +1 -0
  4. docket/api/access/add_principal.py +193 -0
  5. docket/api/access/archive_role_assignment.py +182 -0
  6. docket/api/access/create_api_token.py +198 -0
  7. docket/api/access/create_application_principal.py +188 -0
  8. docket/api/access/create_role_assignment.py +194 -0
  9. docket/api/access/list_api_tokens.py +184 -0
  10. docket/api/access/list_principals.py +184 -0
  11. docket/api/access/list_role_assignments.py +200 -0
  12. docket/api/access/revoke_api_token.py +173 -0
  13. docket/api/identity/__init__.py +1 -0
  14. docket/api/identity/create_my_api_token.py +206 -0
  15. docket/api/identity/get_me.py +127 -0
  16. docket/api/identity/list_my_api_tokens.py +151 -0
  17. docket/api/identity/revoke_my_api_token.py +178 -0
  18. docket/api/recurring_acquisitions/__init__.py +1 -0
  19. docket/api/recurring_acquisitions/archive_recurring_acquisition.py +207 -0
  20. docket/api/recurring_acquisitions/create_recurring_acquisition.py +218 -0
  21. docket/api/recurring_acquisitions/get_recurring_acquisition.py +163 -0
  22. docket/api/recurring_acquisitions/list_recurring_acquisitions.py +248 -0
  23. docket/api/recurring_acquisitions/preview_recurring_acquisition.py +187 -0
  24. docket/api/recurring_acquisitions/preview_split_recurring_acquisition.py +232 -0
  25. docket/api/recurring_acquisitions/split_recurring_acquisition.py +258 -0
  26. docket/api/runs/__init__.py +1 -0
  27. docket/api/runs/get_run.py +160 -0
  28. docket/api/runs/list_runs.py +180 -0
  29. docket/api/runs/report_run_outcome.py +206 -0
  30. docket/api/scheduled_acquisitions/__init__.py +1 -0
  31. docket/api/scheduled_acquisitions/archive_scheduled_acquisition.py +203 -0
  32. docket/api/scheduled_acquisitions/create_scheduled_acquisition.py +185 -0
  33. docket/api/scheduled_acquisitions/get_resolved_settings.py +169 -0
  34. docket/api/scheduled_acquisitions/get_scheduled_acquisition.py +159 -0
  35. docket/api/scheduled_acquisitions/list_active_acquisitions.py +297 -0
  36. docket/api/scheduled_acquisitions/list_runs_for_scheduled_acquisition.py +191 -0
  37. docket/api/scheduled_acquisitions/list_scheduled_acquisitions.py +332 -0
  38. docket/api/scheduled_acquisitions/preview_scheduled_acquisition_edit.py +224 -0
  39. docket/api/scheduled_acquisitions/set_planning_status.py +199 -0
  40. docket/api/scheduled_acquisitions/start_run.py +221 -0
  41. docket/api/scheduled_acquisitions/update_scheduled_acquisition.py +226 -0
  42. docket/api/settings/__init__.py +1 -0
  43. docket/api/settings/list_behavior_curriculum_discriminator_values.py +188 -0
  44. docket/api/settings/list_behavior_curriculum_settings.py +199 -0
  45. docket/api/settings/list_fip_discriminator_values.py +184 -0
  46. docket/api/settings/list_fip_settings.py +195 -0
  47. docket/api/settings/list_live_behavior_curriculum_settings.py +233 -0
  48. docket/api/settings/list_live_fip_settings.py +225 -0
  49. docket/api/settings/preview_behavior_curriculum_settings.py +191 -0
  50. docket/api/settings/preview_fip_settings.py +177 -0
  51. docket/api/settings/push_behavior_curriculum_settings.py +222 -0
  52. docket/api/settings/push_fip_settings.py +206 -0
  53. docket/api/templates/__init__.py +1 -0
  54. docket/api/templates/archive_template.py +203 -0
  55. docket/api/templates/create_template.py +206 -0
  56. docket/api/templates/get_template.py +159 -0
  57. docket/api/templates/list_templates.py +174 -0
  58. docket/api/templates/update_template.py +234 -0
  59. docket/api/vocabulary/__init__.py +1 -0
  60. docket/api/vocabulary/list_instruments.py +165 -0
  61. docket/api/vocabulary/list_persons.py +132 -0
  62. docket/api/vocabulary/list_projects.py +132 -0
  63. docket/api/vocabulary/list_subjects.py +132 -0
  64. docket/api/vocabulary/lookup_person.py +166 -0
  65. docket/api/vocabulary/lookup_subject.py +166 -0
  66. docket/api/vocabulary/sync_vocabulary.py +148 -0
  67. docket/client.py +272 -0
  68. docket/errors.py +16 -0
  69. docket/models/__init__.py +221 -0
  70. docket/models/access_role.py +12 -0
  71. docket/models/access_role_nullable_type_1.py +12 -0
  72. docket/models/access_role_nullable_type_2_type_1.py +12 -0
  73. docket/models/access_role_nullable_type_3_type_1.py +12 -0
  74. docket/models/acquisition_variable.py +72 -0
  75. docket/models/acquisition_warning.py +126 -0
  76. docket/models/add_principal_request.py +83 -0
  77. docket/models/api_token_response.py +271 -0
  78. docket/models/api_token_status.py +10 -0
  79. docket/models/archive_recurring_acquisition_request.py +77 -0
  80. docket/models/archive_recurring_acquisition_response.py +83 -0
  81. docket/models/archive_scheduled_acquisition_request.py +78 -0
  82. docket/models/archive_template_request.py +66 -0
  83. docket/models/auth_mode.py +10 -0
  84. docket/models/behavior_curriculum_push_settings_request.py +85 -0
  85. docket/models/behavior_curriculum_settings.py +55 -0
  86. docket/models/behavior_curriculum_settings_preview_response.py +102 -0
  87. docket/models/behavior_curriculum_settings_preview_response_promoted.py +50 -0
  88. docket/models/behavior_curriculum_settings_version_response.py +160 -0
  89. docket/models/behavior_curriculum_settings_version_response_promoted.py +50 -0
  90. docket/models/caller_kind.py +11 -0
  91. docket/models/create_api_token_request.py +97 -0
  92. docket/models/create_application_principal_request.py +65 -0
  93. docket/models/create_personal_api_token_request.py +167 -0
  94. docket/models/create_recurring_acquisition_request.py +269 -0
  95. docket/models/create_role_assignment_request.py +99 -0
  96. docket/models/create_scheduled_acquisition_request.py +265 -0
  97. docket/models/create_template_request.py +323 -0
  98. docket/models/created_api_token_response.py +82 -0
  99. docket/models/effective_status.py +15 -0
  100. docket/models/fip_color.py +13 -0
  101. docket/models/fip_fiber.py +93 -0
  102. docket/models/fip_mode.py +9 -0
  103. docket/models/fip_push_settings_request.py +82 -0
  104. docket/models/fip_settings.py +91 -0
  105. docket/models/fip_settings_preview_response.py +97 -0
  106. docket/models/fip_settings_preview_response_promoted.py +50 -0
  107. docket/models/fip_settings_version_response.py +155 -0
  108. docket/models/fip_settings_version_response_promoted.py +50 -0
  109. docket/models/future_occurrences.py +9 -0
  110. docket/models/get_resolved_settings_response_200.py +65 -0
  111. docket/models/held_role_response.py +116 -0
  112. docket/models/http_validation_problem_details.py +204 -0
  113. docket/models/http_validation_problem_details_errors.py +59 -0
  114. docket/models/instrument_response.py +91 -0
  115. docket/models/kept_occurrence.py +85 -0
  116. docket/models/kept_occurrence_reason.py +10 -0
  117. docket/models/list_active_acquisitions_effective_status_item.py +15 -0
  118. docket/models/list_scheduled_acquisitions_planning_status.py +11 -0
  119. docket/models/me_caller.py +118 -0
  120. docket/models/me_permission.py +98 -0
  121. docket/models/me_response.py +158 -0
  122. docket/models/me_role.py +75 -0
  123. docket/models/occurrence_preview.py +121 -0
  124. docket/models/occurrence_summary.py +126 -0
  125. docket/models/occurrence_warnings.py +91 -0
  126. docket/models/permission_action.py +12 -0
  127. docket/models/person_assignment.py +74 -0
  128. docket/models/person_lookup_response.py +131 -0
  129. docket/models/person_response.py +103 -0
  130. docket/models/person_role.py +9 -0
  131. docket/models/personal_token_limits.py +92 -0
  132. docket/models/planning_status.py +11 -0
  133. docket/models/principal_kind.py +9 -0
  134. docket/models/principal_response.py +216 -0
  135. docket/models/problem_details.py +177 -0
  136. docket/models/project_response.py +75 -0
  137. docket/models/recurrence_exception_kind.py +13 -0
  138. docket/models/recurrence_exception_response.py +103 -0
  139. docket/models/recurrence_frequency.py +9 -0
  140. docket/models/recurrence_preview_response.py +101 -0
  141. docket/models/recurrence_rule.py +207 -0
  142. docket/models/recurring_acquisition_created_response.py +123 -0
  143. docket/models/recurring_acquisition_detail_response.py +105 -0
  144. docket/models/recurring_acquisition_response.py +326 -0
  145. docket/models/report_run_outcome_request.py +89 -0
  146. docket/models/resolution_mode.py +10 -0
  147. docket/models/resolved_settings.py +73 -0
  148. docket/models/role_assignment_response.py +157 -0
  149. docket/models/role_origin.py +10 -0
  150. docket/models/role_source_kind.py +10 -0
  151. docket/models/run_origin.py +9 -0
  152. docket/models/run_outcome.py +9 -0
  153. docket/models/run_response.py +181 -0
  154. docket/models/run_settings_snapshot.py +72 -0
  155. docket/models/run_start_response.py +91 -0
  156. docket/models/run_start_response_settings.py +65 -0
  157. docket/models/run_status.py +11 -0
  158. docket/models/scheduled_acquisition_edit_preview_response.py +150 -0
  159. docket/models/scheduled_acquisition_response.py +366 -0
  160. docket/models/set_planning_status_request.py +90 -0
  161. docket/models/settings_selector.py +138 -0
  162. docket/models/skipped_occurrence.py +85 -0
  163. docket/models/split_preview_response.py +129 -0
  164. docket/models/split_recurring_acquisition_request.py +261 -0
  165. docket/models/split_recurring_acquisition_response.py +159 -0
  166. docket/models/start_run_request.py +73 -0
  167. docket/models/subject_lookup_response.py +149 -0
  168. docket/models/subject_response.py +128 -0
  169. docket/models/sync_counts.py +80 -0
  170. docket/models/sync_response.py +81 -0
  171. docket/models/template_response.py +302 -0
  172. docket/models/update_scheduled_acquisition_request.py +235 -0
  173. docket/models/update_template_request.py +279 -0
  174. docket/models/weekday.py +14 -0
  175. docket/types.py +54 -0
  176. docket_auth/__init__.py +239 -0
  177. docket_client-0.3.2.dist-info/METADATA +233 -0
  178. docket_client-0.3.2.dist-info/RECORD +188 -0
  179. docket_client-0.3.2.dist-info/WHEEL +4 -0
  180. docket_client-0.3.2.dist-info/entry_points.txt +2 -0
  181. docket_mcp/__init__.py +6 -0
  182. docket_mcp/api.py +207 -0
  183. docket_mcp/config.py +57 -0
  184. docket_mcp/server.py +78 -0
  185. docket_mcp/signin.py +155 -0
  186. docket_mcp/slots.py +80 -0
  187. docket_mcp/times.py +160 -0
  188. docket_mcp/tools.py +1202 -0
@@ -0,0 +1,188 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.create_application_principal_request import CreateApplicationPrincipalRequest
12
+ from ...models.http_validation_problem_details import HttpValidationProblemDetails
13
+ from ...models.principal_response import PrincipalResponse
14
+ from ...models.problem_details import ProblemDetails
15
+ from typing import cast
16
+
17
+
18
+ def _get_kwargs(
19
+ *,
20
+ body: CreateApplicationPrincipalRequest,
21
+ ) -> dict[str, Any]:
22
+ headers: dict[str, Any] = {}
23
+
24
+ _kwargs: dict[str, Any] = {
25
+ "method": "post",
26
+ "url": "/api/v1/access/principals/applications",
27
+ }
28
+
29
+ _kwargs["json"] = body.to_dict()
30
+
31
+ headers["Content-Type"] = "application/json"
32
+
33
+ _kwargs["headers"] = headers
34
+ return _kwargs
35
+
36
+
37
+ def _parse_response(
38
+ *, client: AuthenticatedClient | Client, response: httpx.Response
39
+ ) -> HttpValidationProblemDetails | PrincipalResponse | ProblemDetails | None:
40
+ if response.status_code == 201:
41
+ response_201 = PrincipalResponse.from_dict(response.json())
42
+
43
+ return response_201
44
+
45
+ if response.status_code == 401:
46
+ response_401 = ProblemDetails.from_dict(response.json())
47
+
48
+ return response_401
49
+
50
+ if response.status_code == 403:
51
+ response_403 = ProblemDetails.from_dict(response.json())
52
+
53
+ return response_403
54
+
55
+ if response.status_code == 422:
56
+ response_422 = HttpValidationProblemDetails.from_dict(response.json())
57
+
58
+ return response_422
59
+
60
+ if client.raise_on_unexpected_status:
61
+ raise errors.UnexpectedStatus(response.status_code, response.content)
62
+ else:
63
+ return None
64
+
65
+
66
+ def _build_response(
67
+ *, client: AuthenticatedClient | Client, response: httpx.Response
68
+ ) -> Response[HttpValidationProblemDetails | PrincipalResponse | ProblemDetails]:
69
+ return Response(
70
+ status_code=HTTPStatus(response.status_code),
71
+ content=response.content,
72
+ headers=response.headers,
73
+ parsed=_parse_response(client=client, response=response),
74
+ )
75
+
76
+
77
+ def sync_detailed(
78
+ *,
79
+ client: AuthenticatedClient,
80
+ body: CreateApplicationPrincipalRequest,
81
+ ) -> Response[HttpValidationProblemDetails | PrincipalResponse | ProblemDetails]:
82
+ """Create a Docket-local application principal (a rig or script with no Entra registration); its object
83
+ id is generated as docket:<guid>. Give it the machine role, then issue it a token. Admin only.
84
+
85
+ Args:
86
+ body (CreateApplicationPrincipalRequest): Creates a Docket-local application principal: a
87
+ rig or script with no Entra registration.
88
+
89
+ Raises:
90
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
91
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
92
+
93
+ Returns:
94
+ Response[HttpValidationProblemDetails | PrincipalResponse | ProblemDetails]
95
+ """
96
+
97
+ kwargs = _get_kwargs(
98
+ body=body,
99
+ )
100
+
101
+ response = client.get_httpx_client().request(
102
+ **kwargs,
103
+ )
104
+
105
+ return _build_response(client=client, response=response)
106
+
107
+
108
+ def sync(
109
+ *,
110
+ client: AuthenticatedClient,
111
+ body: CreateApplicationPrincipalRequest,
112
+ ) -> HttpValidationProblemDetails | PrincipalResponse | ProblemDetails | None:
113
+ """Create a Docket-local application principal (a rig or script with no Entra registration); its object
114
+ id is generated as docket:<guid>. Give it the machine role, then issue it a token. Admin only.
115
+
116
+ Args:
117
+ body (CreateApplicationPrincipalRequest): Creates a Docket-local application principal: a
118
+ rig or script with no Entra registration.
119
+
120
+ Raises:
121
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
122
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
123
+
124
+ Returns:
125
+ HttpValidationProblemDetails | PrincipalResponse | ProblemDetails
126
+ """
127
+
128
+ return sync_detailed(
129
+ client=client,
130
+ body=body,
131
+ ).parsed
132
+
133
+
134
+ async def asyncio_detailed(
135
+ *,
136
+ client: AuthenticatedClient,
137
+ body: CreateApplicationPrincipalRequest,
138
+ ) -> Response[HttpValidationProblemDetails | PrincipalResponse | ProblemDetails]:
139
+ """Create a Docket-local application principal (a rig or script with no Entra registration); its object
140
+ id is generated as docket:<guid>. Give it the machine role, then issue it a token. Admin only.
141
+
142
+ Args:
143
+ body (CreateApplicationPrincipalRequest): Creates a Docket-local application principal: a
144
+ rig or script with no Entra registration.
145
+
146
+ Raises:
147
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
148
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
149
+
150
+ Returns:
151
+ Response[HttpValidationProblemDetails | PrincipalResponse | ProblemDetails]
152
+ """
153
+
154
+ kwargs = _get_kwargs(
155
+ body=body,
156
+ )
157
+
158
+ response = await client.get_async_httpx_client().request(**kwargs)
159
+
160
+ return _build_response(client=client, response=response)
161
+
162
+
163
+ async def asyncio(
164
+ *,
165
+ client: AuthenticatedClient,
166
+ body: CreateApplicationPrincipalRequest,
167
+ ) -> HttpValidationProblemDetails | PrincipalResponse | ProblemDetails | None:
168
+ """Create a Docket-local application principal (a rig or script with no Entra registration); its object
169
+ id is generated as docket:<guid>. Give it the machine role, then issue it a token. Admin only.
170
+
171
+ Args:
172
+ body (CreateApplicationPrincipalRequest): Creates a Docket-local application principal: a
173
+ rig or script with no Entra registration.
174
+
175
+ Raises:
176
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
177
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
178
+
179
+ Returns:
180
+ HttpValidationProblemDetails | PrincipalResponse | ProblemDetails
181
+ """
182
+
183
+ return (
184
+ await asyncio_detailed(
185
+ client=client,
186
+ body=body,
187
+ )
188
+ ).parsed
@@ -0,0 +1,194 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.create_role_assignment_request import CreateRoleAssignmentRequest
12
+ from ...models.http_validation_problem_details import HttpValidationProblemDetails
13
+ from ...models.problem_details import ProblemDetails
14
+ from ...models.role_assignment_response import RoleAssignmentResponse
15
+ from typing import cast
16
+
17
+
18
+ def _get_kwargs(
19
+ *,
20
+ body: CreateRoleAssignmentRequest,
21
+ ) -> dict[str, Any]:
22
+ headers: dict[str, Any] = {}
23
+
24
+ _kwargs: dict[str, Any] = {
25
+ "method": "post",
26
+ "url": "/api/v1/access/assignments",
27
+ }
28
+
29
+ _kwargs["json"] = body.to_dict()
30
+
31
+ headers["Content-Type"] = "application/json"
32
+
33
+ _kwargs["headers"] = headers
34
+ return _kwargs
35
+
36
+
37
+ def _parse_response(
38
+ *, client: AuthenticatedClient | Client, response: httpx.Response
39
+ ) -> HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse | None:
40
+ if response.status_code == 201:
41
+ response_201 = RoleAssignmentResponse.from_dict(response.json())
42
+
43
+ return response_201
44
+
45
+ if response.status_code == 401:
46
+ response_401 = ProblemDetails.from_dict(response.json())
47
+
48
+ return response_401
49
+
50
+ if response.status_code == 403:
51
+ response_403 = ProblemDetails.from_dict(response.json())
52
+
53
+ return response_403
54
+
55
+ if response.status_code == 404:
56
+ response_404 = ProblemDetails.from_dict(response.json())
57
+
58
+ return response_404
59
+
60
+ if response.status_code == 409:
61
+ response_409 = ProblemDetails.from_dict(response.json())
62
+
63
+ return response_409
64
+
65
+ if response.status_code == 422:
66
+ response_422 = HttpValidationProblemDetails.from_dict(response.json())
67
+
68
+ return response_422
69
+
70
+ if client.raise_on_unexpected_status:
71
+ raise errors.UnexpectedStatus(response.status_code, response.content)
72
+ else:
73
+ return None
74
+
75
+
76
+ def _build_response(
77
+ *, client: AuthenticatedClient | Client, response: httpx.Response
78
+ ) -> Response[HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse]:
79
+ return Response(
80
+ status_code=HTTPStatus(response.status_code),
81
+ content=response.content,
82
+ headers=response.headers,
83
+ parsed=_parse_response(client=client, response=response),
84
+ )
85
+
86
+
87
+ def sync_detailed(
88
+ *,
89
+ client: AuthenticatedClient,
90
+ body: CreateRoleAssignmentRequest,
91
+ ) -> Response[HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse]:
92
+ """Grant a role. Takes effect at once. Machine needs an application principal; the person roles need a
93
+ person. Admin only.
94
+
95
+ Args:
96
+ body (CreateRoleAssignmentRequest): Grants a role.
97
+
98
+ Raises:
99
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
100
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
101
+
102
+ Returns:
103
+ Response[HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse]
104
+ """
105
+
106
+ kwargs = _get_kwargs(
107
+ body=body,
108
+ )
109
+
110
+ response = client.get_httpx_client().request(
111
+ **kwargs,
112
+ )
113
+
114
+ return _build_response(client=client, response=response)
115
+
116
+
117
+ def sync(
118
+ *,
119
+ client: AuthenticatedClient,
120
+ body: CreateRoleAssignmentRequest,
121
+ ) -> HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse | None:
122
+ """Grant a role. Takes effect at once. Machine needs an application principal; the person roles need a
123
+ person. Admin only.
124
+
125
+ Args:
126
+ body (CreateRoleAssignmentRequest): Grants a role.
127
+
128
+ Raises:
129
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
130
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
131
+
132
+ Returns:
133
+ HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse
134
+ """
135
+
136
+ return sync_detailed(
137
+ client=client,
138
+ body=body,
139
+ ).parsed
140
+
141
+
142
+ async def asyncio_detailed(
143
+ *,
144
+ client: AuthenticatedClient,
145
+ body: CreateRoleAssignmentRequest,
146
+ ) -> Response[HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse]:
147
+ """Grant a role. Takes effect at once. Machine needs an application principal; the person roles need a
148
+ person. Admin only.
149
+
150
+ Args:
151
+ body (CreateRoleAssignmentRequest): Grants a role.
152
+
153
+ Raises:
154
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
155
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
156
+
157
+ Returns:
158
+ Response[HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse]
159
+ """
160
+
161
+ kwargs = _get_kwargs(
162
+ body=body,
163
+ )
164
+
165
+ response = await client.get_async_httpx_client().request(**kwargs)
166
+
167
+ return _build_response(client=client, response=response)
168
+
169
+
170
+ async def asyncio(
171
+ *,
172
+ client: AuthenticatedClient,
173
+ body: CreateRoleAssignmentRequest,
174
+ ) -> HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse | None:
175
+ """Grant a role. Takes effect at once. Machine needs an application principal; the person roles need a
176
+ person. Admin only.
177
+
178
+ Args:
179
+ body (CreateRoleAssignmentRequest): Grants a role.
180
+
181
+ Raises:
182
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
183
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
184
+
185
+ Returns:
186
+ HttpValidationProblemDetails | ProblemDetails | RoleAssignmentResponse
187
+ """
188
+
189
+ return (
190
+ await asyncio_detailed(
191
+ client=client,
192
+ body=body,
193
+ )
194
+ ).parsed
@@ -0,0 +1,184 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.api_token_response import ApiTokenResponse
12
+ from ...models.problem_details import ProblemDetails
13
+ from ...types import UNSET, Unset
14
+ from typing import cast
15
+
16
+
17
+ def _get_kwargs(
18
+ *,
19
+ principal: str | Unset = UNSET,
20
+ ) -> dict[str, Any]:
21
+
22
+ params: dict[str, Any] = {}
23
+
24
+ params["principal"] = principal
25
+
26
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
27
+
28
+ _kwargs: dict[str, Any] = {
29
+ "method": "get",
30
+ "url": "/api/v1/access/tokens",
31
+ "params": params,
32
+ }
33
+
34
+ return _kwargs
35
+
36
+
37
+ def _parse_response(
38
+ *, client: AuthenticatedClient | Client, response: httpx.Response
39
+ ) -> ProblemDetails | list[ApiTokenResponse] | None:
40
+ if response.status_code == 200:
41
+ response_200 = []
42
+ _response_200 = response.json()
43
+ for response_200_item_data in _response_200:
44
+ response_200_item = ApiTokenResponse.from_dict(response_200_item_data)
45
+
46
+ response_200.append(response_200_item)
47
+
48
+ return response_200
49
+
50
+ if response.status_code == 401:
51
+ response_401 = ProblemDetails.from_dict(response.json())
52
+
53
+ return response_401
54
+
55
+ if response.status_code == 403:
56
+ response_403 = ProblemDetails.from_dict(response.json())
57
+
58
+ return response_403
59
+
60
+ if client.raise_on_unexpected_status:
61
+ raise errors.UnexpectedStatus(response.status_code, response.content)
62
+ else:
63
+ return None
64
+
65
+
66
+ def _build_response(
67
+ *, client: AuthenticatedClient | Client, response: httpx.Response
68
+ ) -> Response[ProblemDetails | list[ApiTokenResponse]]:
69
+ return Response(
70
+ status_code=HTTPStatus(response.status_code),
71
+ content=response.content,
72
+ headers=response.headers,
73
+ parsed=_parse_response(client=client, response=response),
74
+ )
75
+
76
+
77
+ def sync_detailed(
78
+ *,
79
+ client: AuthenticatedClient,
80
+ principal: str | Unset = UNSET,
81
+ ) -> Response[ProblemDetails | list[ApiTokenResponse]]:
82
+ """API tokens (metadata only; the secret is never shown again), optionally of one principal. Admin
83
+ only.
84
+
85
+ Args:
86
+ principal (str | Unset):
87
+
88
+ Raises:
89
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
90
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
91
+
92
+ Returns:
93
+ Response[ProblemDetails | list[ApiTokenResponse]]
94
+ """
95
+
96
+ kwargs = _get_kwargs(
97
+ principal=principal,
98
+ )
99
+
100
+ response = client.get_httpx_client().request(
101
+ **kwargs,
102
+ )
103
+
104
+ return _build_response(client=client, response=response)
105
+
106
+
107
+ def sync(
108
+ *,
109
+ client: AuthenticatedClient,
110
+ principal: str | Unset = UNSET,
111
+ ) -> ProblemDetails | list[ApiTokenResponse] | None:
112
+ """API tokens (metadata only; the secret is never shown again), optionally of one principal. Admin
113
+ only.
114
+
115
+ Args:
116
+ principal (str | Unset):
117
+
118
+ Raises:
119
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
120
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
121
+
122
+ Returns:
123
+ ProblemDetails | list[ApiTokenResponse]
124
+ """
125
+
126
+ return sync_detailed(
127
+ client=client,
128
+ principal=principal,
129
+ ).parsed
130
+
131
+
132
+ async def asyncio_detailed(
133
+ *,
134
+ client: AuthenticatedClient,
135
+ principal: str | Unset = UNSET,
136
+ ) -> Response[ProblemDetails | list[ApiTokenResponse]]:
137
+ """API tokens (metadata only; the secret is never shown again), optionally of one principal. Admin
138
+ only.
139
+
140
+ Args:
141
+ principal (str | Unset):
142
+
143
+ Raises:
144
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
145
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
146
+
147
+ Returns:
148
+ Response[ProblemDetails | list[ApiTokenResponse]]
149
+ """
150
+
151
+ kwargs = _get_kwargs(
152
+ principal=principal,
153
+ )
154
+
155
+ response = await client.get_async_httpx_client().request(**kwargs)
156
+
157
+ return _build_response(client=client, response=response)
158
+
159
+
160
+ async def asyncio(
161
+ *,
162
+ client: AuthenticatedClient,
163
+ principal: str | Unset = UNSET,
164
+ ) -> ProblemDetails | list[ApiTokenResponse] | None:
165
+ """API tokens (metadata only; the secret is never shown again), optionally of one principal. Admin
166
+ only.
167
+
168
+ Args:
169
+ principal (str | Unset):
170
+
171
+ Raises:
172
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
173
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
174
+
175
+ Returns:
176
+ ProblemDetails | list[ApiTokenResponse]
177
+ """
178
+
179
+ return (
180
+ await asyncio_detailed(
181
+ client=client,
182
+ principal=principal,
183
+ )
184
+ ).parsed