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,207 @@
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.archive_recurring_acquisition_request import ArchiveRecurringAcquisitionRequest
12
+ from ...models.archive_recurring_acquisition_response import ArchiveRecurringAcquisitionResponse
13
+ from ...models.problem_details import ProblemDetails
14
+ from typing import cast
15
+
16
+
17
+ def _get_kwargs(
18
+ id: int,
19
+ *,
20
+ body: ArchiveRecurringAcquisitionRequest,
21
+ ) -> dict[str, Any]:
22
+ headers: dict[str, Any] = {}
23
+
24
+ _kwargs: dict[str, Any] = {
25
+ "method": "post",
26
+ "url": "/api/v1/recurring-acquisitions/{id}/archive".format(
27
+ id=quote(str(id), safe=""),
28
+ ),
29
+ }
30
+
31
+ _kwargs["json"] = body.to_dict()
32
+
33
+ headers["Content-Type"] = "application/json"
34
+
35
+ _kwargs["headers"] = headers
36
+ return _kwargs
37
+
38
+
39
+ def _parse_response(
40
+ *, client: AuthenticatedClient | Client, response: httpx.Response
41
+ ) -> ArchiveRecurringAcquisitionResponse | ProblemDetails | None:
42
+ if response.status_code == 200:
43
+ response_200 = ArchiveRecurringAcquisitionResponse.from_dict(response.json())
44
+
45
+ return response_200
46
+
47
+ if response.status_code == 401:
48
+ response_401 = ProblemDetails.from_dict(response.json())
49
+
50
+ return response_401
51
+
52
+ if response.status_code == 403:
53
+ response_403 = ProblemDetails.from_dict(response.json())
54
+
55
+ return response_403
56
+
57
+ if response.status_code == 404:
58
+ response_404 = ProblemDetails.from_dict(response.json())
59
+
60
+ return response_404
61
+
62
+ if response.status_code == 409:
63
+ response_409 = ProblemDetails.from_dict(response.json())
64
+
65
+ return response_409
66
+
67
+ if client.raise_on_unexpected_status:
68
+ raise errors.UnexpectedStatus(response.status_code, response.content)
69
+ else:
70
+ return None
71
+
72
+
73
+ def _build_response(
74
+ *, client: AuthenticatedClient | Client, response: httpx.Response
75
+ ) -> Response[ArchiveRecurringAcquisitionResponse | ProblemDetails]:
76
+ return Response(
77
+ status_code=HTTPStatus(response.status_code),
78
+ content=response.content,
79
+ headers=response.headers,
80
+ parsed=_parse_response(client=client, response=response),
81
+ )
82
+
83
+
84
+ def sync_detailed(
85
+ id: int,
86
+ *,
87
+ client: AuthenticatedClient,
88
+ body: ArchiveRecurringAcquisitionRequest,
89
+ ) -> Response[ArchiveRecurringAcquisitionResponse | ProblemDetails]:
90
+ """Archive a definition. With future_occurrences=archive, future occurrences without runs are archived
91
+ and recorded as exceptions; past occurrences and occurrences with runs are never touched.
92
+
93
+ Args:
94
+ id (int):
95
+ body (ArchiveRecurringAcquisitionRequest): Archive a definition: it generates nothing
96
+ further, and its history is kept.
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[ArchiveRecurringAcquisitionResponse | ProblemDetails]
104
+ """
105
+
106
+ kwargs = _get_kwargs(
107
+ id=id,
108
+ body=body,
109
+ )
110
+
111
+ response = client.get_httpx_client().request(
112
+ **kwargs,
113
+ )
114
+
115
+ return _build_response(client=client, response=response)
116
+
117
+
118
+ def sync(
119
+ id: int,
120
+ *,
121
+ client: AuthenticatedClient,
122
+ body: ArchiveRecurringAcquisitionRequest,
123
+ ) -> ArchiveRecurringAcquisitionResponse | ProblemDetails | None:
124
+ """Archive a definition. With future_occurrences=archive, future occurrences without runs are archived
125
+ and recorded as exceptions; past occurrences and occurrences with runs are never touched.
126
+
127
+ Args:
128
+ id (int):
129
+ body (ArchiveRecurringAcquisitionRequest): Archive a definition: it generates nothing
130
+ further, and its history is kept.
131
+
132
+ Raises:
133
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
134
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
135
+
136
+ Returns:
137
+ ArchiveRecurringAcquisitionResponse | ProblemDetails
138
+ """
139
+
140
+ return sync_detailed(
141
+ id=id,
142
+ client=client,
143
+ body=body,
144
+ ).parsed
145
+
146
+
147
+ async def asyncio_detailed(
148
+ id: int,
149
+ *,
150
+ client: AuthenticatedClient,
151
+ body: ArchiveRecurringAcquisitionRequest,
152
+ ) -> Response[ArchiveRecurringAcquisitionResponse | ProblemDetails]:
153
+ """Archive a definition. With future_occurrences=archive, future occurrences without runs are archived
154
+ and recorded as exceptions; past occurrences and occurrences with runs are never touched.
155
+
156
+ Args:
157
+ id (int):
158
+ body (ArchiveRecurringAcquisitionRequest): Archive a definition: it generates nothing
159
+ further, and its history is kept.
160
+
161
+ Raises:
162
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
163
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
164
+
165
+ Returns:
166
+ Response[ArchiveRecurringAcquisitionResponse | ProblemDetails]
167
+ """
168
+
169
+ kwargs = _get_kwargs(
170
+ id=id,
171
+ body=body,
172
+ )
173
+
174
+ response = await client.get_async_httpx_client().request(**kwargs)
175
+
176
+ return _build_response(client=client, response=response)
177
+
178
+
179
+ async def asyncio(
180
+ id: int,
181
+ *,
182
+ client: AuthenticatedClient,
183
+ body: ArchiveRecurringAcquisitionRequest,
184
+ ) -> ArchiveRecurringAcquisitionResponse | ProblemDetails | None:
185
+ """Archive a definition. With future_occurrences=archive, future occurrences without runs are archived
186
+ and recorded as exceptions; past occurrences and occurrences with runs are never touched.
187
+
188
+ Args:
189
+ id (int):
190
+ body (ArchiveRecurringAcquisitionRequest): Archive a definition: it generates nothing
191
+ further, and its history is kept.
192
+
193
+ Raises:
194
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
195
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
196
+
197
+ Returns:
198
+ ArchiveRecurringAcquisitionResponse | ProblemDetails
199
+ """
200
+
201
+ return (
202
+ await asyncio_detailed(
203
+ id=id,
204
+ client=client,
205
+ body=body,
206
+ )
207
+ ).parsed
@@ -0,0 +1,218 @@
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_recurring_acquisition_request import CreateRecurringAcquisitionRequest
12
+ from ...models.http_validation_problem_details import HttpValidationProblemDetails
13
+ from ...models.problem_details import ProblemDetails
14
+ from ...models.recurring_acquisition_created_response import RecurringAcquisitionCreatedResponse
15
+ from ...types import UNSET, Unset
16
+ from typing import cast
17
+
18
+
19
+ def _get_kwargs(
20
+ *,
21
+ body: CreateRecurringAcquisitionRequest,
22
+ idempotency_key: str | Unset = UNSET,
23
+ ) -> dict[str, Any]:
24
+ headers: dict[str, Any] = {}
25
+ if not isinstance(idempotency_key, Unset):
26
+ headers["Idempotency-Key"] = idempotency_key
27
+
28
+ _kwargs: dict[str, Any] = {
29
+ "method": "post",
30
+ "url": "/api/v1/recurring-acquisitions",
31
+ }
32
+
33
+ _kwargs["json"] = body.to_dict()
34
+
35
+ headers["Content-Type"] = "application/json"
36
+
37
+ _kwargs["headers"] = headers
38
+ return _kwargs
39
+
40
+
41
+ def _parse_response(
42
+ *, client: AuthenticatedClient | Client, response: httpx.Response
43
+ ) -> HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse | None:
44
+ if response.status_code == 201:
45
+ response_201 = RecurringAcquisitionCreatedResponse.from_dict(response.json())
46
+
47
+ return response_201
48
+
49
+ if response.status_code == 401:
50
+ response_401 = ProblemDetails.from_dict(response.json())
51
+
52
+ return response_401
53
+
54
+ if response.status_code == 403:
55
+ response_403 = ProblemDetails.from_dict(response.json())
56
+
57
+ return response_403
58
+
59
+ if response.status_code == 409:
60
+ response_409 = ProblemDetails.from_dict(response.json())
61
+
62
+ return response_409
63
+
64
+ if response.status_code == 422:
65
+ response_422 = HttpValidationProblemDetails.from_dict(response.json())
66
+
67
+ return response_422
68
+
69
+ if response.status_code == 503:
70
+ response_503 = ProblemDetails.from_dict(response.json())
71
+
72
+ return response_503
73
+
74
+ if client.raise_on_unexpected_status:
75
+ raise errors.UnexpectedStatus(response.status_code, response.content)
76
+ else:
77
+ return None
78
+
79
+
80
+ def _build_response(
81
+ *, client: AuthenticatedClient | Client, response: httpx.Response
82
+ ) -> Response[HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse]:
83
+ return Response(
84
+ status_code=HTTPStatus(response.status_code),
85
+ content=response.content,
86
+ headers=response.headers,
87
+ parsed=_parse_response(client=client, response=response),
88
+ )
89
+
90
+
91
+ def sync_detailed(
92
+ *,
93
+ client: AuthenticatedClient,
94
+ body: CreateRecurringAcquisitionRequest,
95
+ idempotency_key: str | Unset = UNSET,
96
+ ) -> Response[HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse]:
97
+ """Create a finite series and materialize every occurrence in one transaction. Retry-safe with an
98
+ Idempotency-Key.
99
+
100
+ Args:
101
+ idempotency_key (str | Unset):
102
+ body (CreateRecurringAcquisitionRequest): Plan a finite series. The acquisition fields
103
+ mean what they do on
104
+ CreateScheduledAcquisitionRequest and are copied onto every occurrence.
105
+
106
+ Raises:
107
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
108
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
109
+
110
+ Returns:
111
+ Response[HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse]
112
+ """
113
+
114
+ kwargs = _get_kwargs(
115
+ body=body,
116
+ idempotency_key=idempotency_key,
117
+ )
118
+
119
+ response = client.get_httpx_client().request(
120
+ **kwargs,
121
+ )
122
+
123
+ return _build_response(client=client, response=response)
124
+
125
+
126
+ def sync(
127
+ *,
128
+ client: AuthenticatedClient,
129
+ body: CreateRecurringAcquisitionRequest,
130
+ idempotency_key: str | Unset = UNSET,
131
+ ) -> HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse | None:
132
+ """Create a finite series and materialize every occurrence in one transaction. Retry-safe with an
133
+ Idempotency-Key.
134
+
135
+ Args:
136
+ idempotency_key (str | Unset):
137
+ body (CreateRecurringAcquisitionRequest): Plan a finite series. The acquisition fields
138
+ mean what they do on
139
+ CreateScheduledAcquisitionRequest and are copied onto every occurrence.
140
+
141
+ Raises:
142
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
143
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
144
+
145
+ Returns:
146
+ HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse
147
+ """
148
+
149
+ return sync_detailed(
150
+ client=client,
151
+ body=body,
152
+ idempotency_key=idempotency_key,
153
+ ).parsed
154
+
155
+
156
+ async def asyncio_detailed(
157
+ *,
158
+ client: AuthenticatedClient,
159
+ body: CreateRecurringAcquisitionRequest,
160
+ idempotency_key: str | Unset = UNSET,
161
+ ) -> Response[HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse]:
162
+ """Create a finite series and materialize every occurrence in one transaction. Retry-safe with an
163
+ Idempotency-Key.
164
+
165
+ Args:
166
+ idempotency_key (str | Unset):
167
+ body (CreateRecurringAcquisitionRequest): Plan a finite series. The acquisition fields
168
+ mean what they do on
169
+ CreateScheduledAcquisitionRequest and are copied onto every occurrence.
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
+ Response[HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse]
177
+ """
178
+
179
+ kwargs = _get_kwargs(
180
+ body=body,
181
+ idempotency_key=idempotency_key,
182
+ )
183
+
184
+ response = await client.get_async_httpx_client().request(**kwargs)
185
+
186
+ return _build_response(client=client, response=response)
187
+
188
+
189
+ async def asyncio(
190
+ *,
191
+ client: AuthenticatedClient,
192
+ body: CreateRecurringAcquisitionRequest,
193
+ idempotency_key: str | Unset = UNSET,
194
+ ) -> HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse | None:
195
+ """Create a finite series and materialize every occurrence in one transaction. Retry-safe with an
196
+ Idempotency-Key.
197
+
198
+ Args:
199
+ idempotency_key (str | Unset):
200
+ body (CreateRecurringAcquisitionRequest): Plan a finite series. The acquisition fields
201
+ mean what they do on
202
+ CreateScheduledAcquisitionRequest and are copied onto every occurrence.
203
+
204
+ Raises:
205
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
206
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
207
+
208
+ Returns:
209
+ HttpValidationProblemDetails | ProblemDetails | RecurringAcquisitionCreatedResponse
210
+ """
211
+
212
+ return (
213
+ await asyncio_detailed(
214
+ client=client,
215
+ body=body,
216
+ idempotency_key=idempotency_key,
217
+ )
218
+ ).parsed
@@ -0,0 +1,163 @@
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.problem_details import ProblemDetails
12
+ from ...models.recurring_acquisition_detail_response import RecurringAcquisitionDetailResponse
13
+ from typing import cast
14
+
15
+
16
+ def _get_kwargs(
17
+ id: int,
18
+ ) -> dict[str, Any]:
19
+
20
+ _kwargs: dict[str, Any] = {
21
+ "method": "get",
22
+ "url": "/api/v1/recurring-acquisitions/{id}".format(
23
+ id=quote(str(id), safe=""),
24
+ ),
25
+ }
26
+
27
+ return _kwargs
28
+
29
+
30
+ def _parse_response(
31
+ *, client: AuthenticatedClient | Client, response: httpx.Response
32
+ ) -> ProblemDetails | RecurringAcquisitionDetailResponse | None:
33
+ if response.status_code == 200:
34
+ response_200 = RecurringAcquisitionDetailResponse.from_dict(response.json())
35
+
36
+ return response_200
37
+
38
+ if response.status_code == 404:
39
+ response_404 = ProblemDetails.from_dict(response.json())
40
+
41
+ return response_404
42
+
43
+ if client.raise_on_unexpected_status:
44
+ raise errors.UnexpectedStatus(response.status_code, response.content)
45
+ else:
46
+ return None
47
+
48
+
49
+ def _build_response(
50
+ *, client: AuthenticatedClient | Client, response: httpx.Response
51
+ ) -> Response[ProblemDetails | RecurringAcquisitionDetailResponse]:
52
+ return Response(
53
+ status_code=HTTPStatus(response.status_code),
54
+ content=response.content,
55
+ headers=response.headers,
56
+ parsed=_parse_response(client=client, response=response),
57
+ )
58
+
59
+
60
+ def sync_detailed(
61
+ id: int,
62
+ *,
63
+ client: AuthenticatedClient,
64
+ ) -> Response[ProblemDetails | RecurringAcquisitionDetailResponse]:
65
+ """A definition with a summary of its occurrences and recorded exceptions.
66
+
67
+ Args:
68
+ id (int):
69
+
70
+ Raises:
71
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
72
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
73
+
74
+ Returns:
75
+ Response[ProblemDetails | RecurringAcquisitionDetailResponse]
76
+ """
77
+
78
+ kwargs = _get_kwargs(
79
+ id=id,
80
+ )
81
+
82
+ response = client.get_httpx_client().request(
83
+ **kwargs,
84
+ )
85
+
86
+ return _build_response(client=client, response=response)
87
+
88
+
89
+ def sync(
90
+ id: int,
91
+ *,
92
+ client: AuthenticatedClient,
93
+ ) -> ProblemDetails | RecurringAcquisitionDetailResponse | None:
94
+ """A definition with a summary of its occurrences and recorded exceptions.
95
+
96
+ Args:
97
+ id (int):
98
+
99
+ Raises:
100
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
101
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
102
+
103
+ Returns:
104
+ ProblemDetails | RecurringAcquisitionDetailResponse
105
+ """
106
+
107
+ return sync_detailed(
108
+ id=id,
109
+ client=client,
110
+ ).parsed
111
+
112
+
113
+ async def asyncio_detailed(
114
+ id: int,
115
+ *,
116
+ client: AuthenticatedClient,
117
+ ) -> Response[ProblemDetails | RecurringAcquisitionDetailResponse]:
118
+ """A definition with a summary of its occurrences and recorded exceptions.
119
+
120
+ Args:
121
+ id (int):
122
+
123
+ Raises:
124
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
125
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
126
+
127
+ Returns:
128
+ Response[ProblemDetails | RecurringAcquisitionDetailResponse]
129
+ """
130
+
131
+ kwargs = _get_kwargs(
132
+ id=id,
133
+ )
134
+
135
+ response = await client.get_async_httpx_client().request(**kwargs)
136
+
137
+ return _build_response(client=client, response=response)
138
+
139
+
140
+ async def asyncio(
141
+ id: int,
142
+ *,
143
+ client: AuthenticatedClient,
144
+ ) -> ProblemDetails | RecurringAcquisitionDetailResponse | None:
145
+ """A definition with a summary of its occurrences and recorded exceptions.
146
+
147
+ Args:
148
+ id (int):
149
+
150
+ Raises:
151
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
152
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
153
+
154
+ Returns:
155
+ ProblemDetails | RecurringAcquisitionDetailResponse
156
+ """
157
+
158
+ return (
159
+ await asyncio_detailed(
160
+ id=id,
161
+ client=client,
162
+ )
163
+ ).parsed