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.
- docket/__init__.py +8 -0
- docket/api/__init__.py +1 -0
- docket/api/access/__init__.py +1 -0
- docket/api/access/add_principal.py +193 -0
- docket/api/access/archive_role_assignment.py +182 -0
- docket/api/access/create_api_token.py +198 -0
- docket/api/access/create_application_principal.py +188 -0
- docket/api/access/create_role_assignment.py +194 -0
- docket/api/access/list_api_tokens.py +184 -0
- docket/api/access/list_principals.py +184 -0
- docket/api/access/list_role_assignments.py +200 -0
- docket/api/access/revoke_api_token.py +173 -0
- docket/api/identity/__init__.py +1 -0
- docket/api/identity/create_my_api_token.py +206 -0
- docket/api/identity/get_me.py +127 -0
- docket/api/identity/list_my_api_tokens.py +151 -0
- docket/api/identity/revoke_my_api_token.py +178 -0
- docket/api/recurring_acquisitions/__init__.py +1 -0
- docket/api/recurring_acquisitions/archive_recurring_acquisition.py +207 -0
- docket/api/recurring_acquisitions/create_recurring_acquisition.py +218 -0
- docket/api/recurring_acquisitions/get_recurring_acquisition.py +163 -0
- docket/api/recurring_acquisitions/list_recurring_acquisitions.py +248 -0
- docket/api/recurring_acquisitions/preview_recurring_acquisition.py +187 -0
- docket/api/recurring_acquisitions/preview_split_recurring_acquisition.py +232 -0
- docket/api/recurring_acquisitions/split_recurring_acquisition.py +258 -0
- docket/api/runs/__init__.py +1 -0
- docket/api/runs/get_run.py +160 -0
- docket/api/runs/list_runs.py +180 -0
- docket/api/runs/report_run_outcome.py +206 -0
- docket/api/scheduled_acquisitions/__init__.py +1 -0
- docket/api/scheduled_acquisitions/archive_scheduled_acquisition.py +203 -0
- docket/api/scheduled_acquisitions/create_scheduled_acquisition.py +185 -0
- docket/api/scheduled_acquisitions/get_resolved_settings.py +169 -0
- docket/api/scheduled_acquisitions/get_scheduled_acquisition.py +159 -0
- docket/api/scheduled_acquisitions/list_active_acquisitions.py +297 -0
- docket/api/scheduled_acquisitions/list_runs_for_scheduled_acquisition.py +191 -0
- docket/api/scheduled_acquisitions/list_scheduled_acquisitions.py +332 -0
- docket/api/scheduled_acquisitions/preview_scheduled_acquisition_edit.py +224 -0
- docket/api/scheduled_acquisitions/set_planning_status.py +199 -0
- docket/api/scheduled_acquisitions/start_run.py +221 -0
- docket/api/scheduled_acquisitions/update_scheduled_acquisition.py +226 -0
- docket/api/settings/__init__.py +1 -0
- docket/api/settings/list_behavior_curriculum_discriminator_values.py +188 -0
- docket/api/settings/list_behavior_curriculum_settings.py +199 -0
- docket/api/settings/list_fip_discriminator_values.py +184 -0
- docket/api/settings/list_fip_settings.py +195 -0
- docket/api/settings/list_live_behavior_curriculum_settings.py +233 -0
- docket/api/settings/list_live_fip_settings.py +225 -0
- docket/api/settings/preview_behavior_curriculum_settings.py +191 -0
- docket/api/settings/preview_fip_settings.py +177 -0
- docket/api/settings/push_behavior_curriculum_settings.py +222 -0
- docket/api/settings/push_fip_settings.py +206 -0
- docket/api/templates/__init__.py +1 -0
- docket/api/templates/archive_template.py +203 -0
- docket/api/templates/create_template.py +206 -0
- docket/api/templates/get_template.py +159 -0
- docket/api/templates/list_templates.py +174 -0
- docket/api/templates/update_template.py +234 -0
- docket/api/vocabulary/__init__.py +1 -0
- docket/api/vocabulary/list_instruments.py +165 -0
- docket/api/vocabulary/list_persons.py +132 -0
- docket/api/vocabulary/list_projects.py +132 -0
- docket/api/vocabulary/list_subjects.py +132 -0
- docket/api/vocabulary/lookup_person.py +166 -0
- docket/api/vocabulary/lookup_subject.py +166 -0
- docket/api/vocabulary/sync_vocabulary.py +148 -0
- docket/client.py +272 -0
- docket/errors.py +16 -0
- docket/models/__init__.py +221 -0
- docket/models/access_role.py +12 -0
- docket/models/access_role_nullable_type_1.py +12 -0
- docket/models/access_role_nullable_type_2_type_1.py +12 -0
- docket/models/access_role_nullable_type_3_type_1.py +12 -0
- docket/models/acquisition_variable.py +72 -0
- docket/models/acquisition_warning.py +126 -0
- docket/models/add_principal_request.py +83 -0
- docket/models/api_token_response.py +271 -0
- docket/models/api_token_status.py +10 -0
- docket/models/archive_recurring_acquisition_request.py +77 -0
- docket/models/archive_recurring_acquisition_response.py +83 -0
- docket/models/archive_scheduled_acquisition_request.py +78 -0
- docket/models/archive_template_request.py +66 -0
- docket/models/auth_mode.py +10 -0
- docket/models/behavior_curriculum_push_settings_request.py +85 -0
- docket/models/behavior_curriculum_settings.py +55 -0
- docket/models/behavior_curriculum_settings_preview_response.py +102 -0
- docket/models/behavior_curriculum_settings_preview_response_promoted.py +50 -0
- docket/models/behavior_curriculum_settings_version_response.py +160 -0
- docket/models/behavior_curriculum_settings_version_response_promoted.py +50 -0
- docket/models/caller_kind.py +11 -0
- docket/models/create_api_token_request.py +97 -0
- docket/models/create_application_principal_request.py +65 -0
- docket/models/create_personal_api_token_request.py +167 -0
- docket/models/create_recurring_acquisition_request.py +269 -0
- docket/models/create_role_assignment_request.py +99 -0
- docket/models/create_scheduled_acquisition_request.py +265 -0
- docket/models/create_template_request.py +323 -0
- docket/models/created_api_token_response.py +82 -0
- docket/models/effective_status.py +15 -0
- docket/models/fip_color.py +13 -0
- docket/models/fip_fiber.py +93 -0
- docket/models/fip_mode.py +9 -0
- docket/models/fip_push_settings_request.py +82 -0
- docket/models/fip_settings.py +91 -0
- docket/models/fip_settings_preview_response.py +97 -0
- docket/models/fip_settings_preview_response_promoted.py +50 -0
- docket/models/fip_settings_version_response.py +155 -0
- docket/models/fip_settings_version_response_promoted.py +50 -0
- docket/models/future_occurrences.py +9 -0
- docket/models/get_resolved_settings_response_200.py +65 -0
- docket/models/held_role_response.py +116 -0
- docket/models/http_validation_problem_details.py +204 -0
- docket/models/http_validation_problem_details_errors.py +59 -0
- docket/models/instrument_response.py +91 -0
- docket/models/kept_occurrence.py +85 -0
- docket/models/kept_occurrence_reason.py +10 -0
- docket/models/list_active_acquisitions_effective_status_item.py +15 -0
- docket/models/list_scheduled_acquisitions_planning_status.py +11 -0
- docket/models/me_caller.py +118 -0
- docket/models/me_permission.py +98 -0
- docket/models/me_response.py +158 -0
- docket/models/me_role.py +75 -0
- docket/models/occurrence_preview.py +121 -0
- docket/models/occurrence_summary.py +126 -0
- docket/models/occurrence_warnings.py +91 -0
- docket/models/permission_action.py +12 -0
- docket/models/person_assignment.py +74 -0
- docket/models/person_lookup_response.py +131 -0
- docket/models/person_response.py +103 -0
- docket/models/person_role.py +9 -0
- docket/models/personal_token_limits.py +92 -0
- docket/models/planning_status.py +11 -0
- docket/models/principal_kind.py +9 -0
- docket/models/principal_response.py +216 -0
- docket/models/problem_details.py +177 -0
- docket/models/project_response.py +75 -0
- docket/models/recurrence_exception_kind.py +13 -0
- docket/models/recurrence_exception_response.py +103 -0
- docket/models/recurrence_frequency.py +9 -0
- docket/models/recurrence_preview_response.py +101 -0
- docket/models/recurrence_rule.py +207 -0
- docket/models/recurring_acquisition_created_response.py +123 -0
- docket/models/recurring_acquisition_detail_response.py +105 -0
- docket/models/recurring_acquisition_response.py +326 -0
- docket/models/report_run_outcome_request.py +89 -0
- docket/models/resolution_mode.py +10 -0
- docket/models/resolved_settings.py +73 -0
- docket/models/role_assignment_response.py +157 -0
- docket/models/role_origin.py +10 -0
- docket/models/role_source_kind.py +10 -0
- docket/models/run_origin.py +9 -0
- docket/models/run_outcome.py +9 -0
- docket/models/run_response.py +181 -0
- docket/models/run_settings_snapshot.py +72 -0
- docket/models/run_start_response.py +91 -0
- docket/models/run_start_response_settings.py +65 -0
- docket/models/run_status.py +11 -0
- docket/models/scheduled_acquisition_edit_preview_response.py +150 -0
- docket/models/scheduled_acquisition_response.py +366 -0
- docket/models/set_planning_status_request.py +90 -0
- docket/models/settings_selector.py +138 -0
- docket/models/skipped_occurrence.py +85 -0
- docket/models/split_preview_response.py +129 -0
- docket/models/split_recurring_acquisition_request.py +261 -0
- docket/models/split_recurring_acquisition_response.py +159 -0
- docket/models/start_run_request.py +73 -0
- docket/models/subject_lookup_response.py +149 -0
- docket/models/subject_response.py +128 -0
- docket/models/sync_counts.py +80 -0
- docket/models/sync_response.py +81 -0
- docket/models/template_response.py +302 -0
- docket/models/update_scheduled_acquisition_request.py +235 -0
- docket/models/update_template_request.py +279 -0
- docket/models/weekday.py +14 -0
- docket/types.py +54 -0
- docket_auth/__init__.py +239 -0
- docket_client-0.3.2.dist-info/METADATA +233 -0
- docket_client-0.3.2.dist-info/RECORD +188 -0
- docket_client-0.3.2.dist-info/WHEEL +4 -0
- docket_client-0.3.2.dist-info/entry_points.txt +2 -0
- docket_mcp/__init__.py +6 -0
- docket_mcp/api.py +207 -0
- docket_mcp/config.py +57 -0
- docket_mcp/server.py +78 -0
- docket_mcp/signin.py +155 -0
- docket_mcp/slots.py +80 -0
- docket_mcp/times.py +160 -0
- docket_mcp/tools.py +1202 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from typing import cast
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from ..models.resolved_settings import ResolvedSettings
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="GetResolvedSettingsResponse200")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_attrs_define
|
|
21
|
+
class GetResolvedSettingsResponse200:
|
|
22
|
+
""" """
|
|
23
|
+
|
|
24
|
+
additional_properties: dict[str, ResolvedSettings] = _attrs_field(init=False, factory=dict)
|
|
25
|
+
|
|
26
|
+
def to_dict(self) -> dict[str, Any]:
|
|
27
|
+
from ..models.resolved_settings import ResolvedSettings
|
|
28
|
+
|
|
29
|
+
field_dict: dict[str, Any] = {}
|
|
30
|
+
for prop_name, prop in self.additional_properties.items():
|
|
31
|
+
field_dict[prop_name] = prop.to_dict()
|
|
32
|
+
|
|
33
|
+
return field_dict
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
37
|
+
from ..models.resolved_settings import ResolvedSettings
|
|
38
|
+
|
|
39
|
+
d = dict(src_dict)
|
|
40
|
+
get_resolved_settings_response_200 = cls()
|
|
41
|
+
|
|
42
|
+
additional_properties = {}
|
|
43
|
+
for prop_name, prop_dict in d.items():
|
|
44
|
+
additional_property = ResolvedSettings.from_dict(prop_dict)
|
|
45
|
+
|
|
46
|
+
additional_properties[prop_name] = additional_property
|
|
47
|
+
|
|
48
|
+
get_resolved_settings_response_200.additional_properties = additional_properties
|
|
49
|
+
return get_resolved_settings_response_200
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def additional_keys(self) -> list[str]:
|
|
53
|
+
return list(self.additional_properties.keys())
|
|
54
|
+
|
|
55
|
+
def __getitem__(self, key: str) -> ResolvedSettings:
|
|
56
|
+
return self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __setitem__(self, key: str, value: ResolvedSettings) -> None:
|
|
59
|
+
self.additional_properties[key] = value
|
|
60
|
+
|
|
61
|
+
def __delitem__(self, key: str) -> None:
|
|
62
|
+
del self.additional_properties[key]
|
|
63
|
+
|
|
64
|
+
def __contains__(self, key: str) -> bool:
|
|
65
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..models.access_role import AccessRole
|
|
12
|
+
from ..models.role_origin import RoleOrigin
|
|
13
|
+
from typing import cast
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
T = TypeVar("T", bound="HeldRoleResponse")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@_attrs_define
|
|
20
|
+
class HeldRoleResponse:
|
|
21
|
+
"""A role a principal holds.
|
|
22
|
+
|
|
23
|
+
Attributes:
|
|
24
|
+
assignment_id (int | None): The assignment to archive to remove it; null for bootstrap.
|
|
25
|
+
role (AccessRole): A role Docket grants. Roles live in Docket's database; Entra only proves
|
|
26
|
+
who the caller is, and the token's own `roles` claim is ignored.
|
|
27
|
+
scope (None | str): Acquisition-type key for an acquisition settings maintainer; null means all acquisition
|
|
28
|
+
types (or not applicable).
|
|
29
|
+
origin (RoleOrigin): Where a held role comes from.
|
|
30
|
+
bootstrap (bool): True when it comes from server configuration and cannot be removed here.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
assignment_id: int | None
|
|
34
|
+
role: AccessRole
|
|
35
|
+
scope: None | str
|
|
36
|
+
origin: RoleOrigin
|
|
37
|
+
bootstrap: bool
|
|
38
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
39
|
+
|
|
40
|
+
def to_dict(self) -> dict[str, Any]:
|
|
41
|
+
assignment_id: int | None
|
|
42
|
+
assignment_id = self.assignment_id
|
|
43
|
+
|
|
44
|
+
role = self.role.value
|
|
45
|
+
|
|
46
|
+
scope: None | str
|
|
47
|
+
scope = self.scope
|
|
48
|
+
|
|
49
|
+
origin = self.origin.value
|
|
50
|
+
|
|
51
|
+
bootstrap = self.bootstrap
|
|
52
|
+
|
|
53
|
+
field_dict: dict[str, Any] = {}
|
|
54
|
+
field_dict.update(self.additional_properties)
|
|
55
|
+
field_dict.update(
|
|
56
|
+
{
|
|
57
|
+
"assignment_id": assignment_id,
|
|
58
|
+
"role": role,
|
|
59
|
+
"scope": scope,
|
|
60
|
+
"origin": origin,
|
|
61
|
+
"bootstrap": bootstrap,
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
return field_dict
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
69
|
+
d = dict(src_dict)
|
|
70
|
+
|
|
71
|
+
def _parse_assignment_id(data: object) -> int | None:
|
|
72
|
+
if data is None:
|
|
73
|
+
return data
|
|
74
|
+
return cast(int | None, data)
|
|
75
|
+
|
|
76
|
+
assignment_id = _parse_assignment_id(d.pop("assignment_id"))
|
|
77
|
+
|
|
78
|
+
role = AccessRole(d.pop("role"))
|
|
79
|
+
|
|
80
|
+
def _parse_scope(data: object) -> None | str:
|
|
81
|
+
if data is None:
|
|
82
|
+
return data
|
|
83
|
+
return cast(None | str, data)
|
|
84
|
+
|
|
85
|
+
scope = _parse_scope(d.pop("scope"))
|
|
86
|
+
|
|
87
|
+
origin = RoleOrigin(d.pop("origin"))
|
|
88
|
+
|
|
89
|
+
bootstrap = d.pop("bootstrap")
|
|
90
|
+
|
|
91
|
+
held_role_response = cls(
|
|
92
|
+
assignment_id=assignment_id,
|
|
93
|
+
role=role,
|
|
94
|
+
scope=scope,
|
|
95
|
+
origin=origin,
|
|
96
|
+
bootstrap=bootstrap,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
held_role_response.additional_properties = d
|
|
100
|
+
return held_role_response
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def additional_keys(self) -> list[str]:
|
|
104
|
+
return list(self.additional_properties.keys())
|
|
105
|
+
|
|
106
|
+
def __getitem__(self, key: str) -> Any:
|
|
107
|
+
return self.additional_properties[key]
|
|
108
|
+
|
|
109
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
110
|
+
self.additional_properties[key] = value
|
|
111
|
+
|
|
112
|
+
def __delitem__(self, key: str) -> None:
|
|
113
|
+
del self.additional_properties[key]
|
|
114
|
+
|
|
115
|
+
def __contains__(self, key: str) -> bool:
|
|
116
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.http_validation_problem_details_errors import HttpValidationProblemDetailsErrors
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
T = TypeVar("T", bound="HttpValidationProblemDetails")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class HttpValidationProblemDetails:
|
|
23
|
+
"""
|
|
24
|
+
Attributes:
|
|
25
|
+
code (str): Stable machine-readable error code, e.g. not_found, validation_failed, version_conflict,
|
|
26
|
+
settings_not_available.
|
|
27
|
+
request_id (str): Correlation id of the request (the X-Request-Id response header); quote it when reporting a
|
|
28
|
+
problem.
|
|
29
|
+
type_ (None | str | Unset):
|
|
30
|
+
title (None | str | Unset):
|
|
31
|
+
status (int | None | Unset):
|
|
32
|
+
detail (None | str | Unset):
|
|
33
|
+
instance (None | str | Unset):
|
|
34
|
+
errors (HttpValidationProblemDetailsErrors | Unset):
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
code: str
|
|
38
|
+
request_id: str
|
|
39
|
+
type_: None | str | Unset = UNSET
|
|
40
|
+
title: None | str | Unset = UNSET
|
|
41
|
+
status: int | None | Unset = UNSET
|
|
42
|
+
detail: None | str | Unset = UNSET
|
|
43
|
+
instance: None | str | Unset = UNSET
|
|
44
|
+
errors: HttpValidationProblemDetailsErrors | Unset = UNSET
|
|
45
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
from ..models.http_validation_problem_details_errors import (
|
|
49
|
+
HttpValidationProblemDetailsErrors,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
code = self.code
|
|
53
|
+
|
|
54
|
+
request_id = self.request_id
|
|
55
|
+
|
|
56
|
+
type_: None | str | Unset
|
|
57
|
+
if isinstance(self.type_, Unset):
|
|
58
|
+
type_ = UNSET
|
|
59
|
+
else:
|
|
60
|
+
type_ = self.type_
|
|
61
|
+
|
|
62
|
+
title: None | str | Unset
|
|
63
|
+
if isinstance(self.title, Unset):
|
|
64
|
+
title = UNSET
|
|
65
|
+
else:
|
|
66
|
+
title = self.title
|
|
67
|
+
|
|
68
|
+
status: int | None | Unset
|
|
69
|
+
if isinstance(self.status, Unset):
|
|
70
|
+
status = UNSET
|
|
71
|
+
else:
|
|
72
|
+
status = self.status
|
|
73
|
+
|
|
74
|
+
detail: None | str | Unset
|
|
75
|
+
if isinstance(self.detail, Unset):
|
|
76
|
+
detail = UNSET
|
|
77
|
+
else:
|
|
78
|
+
detail = self.detail
|
|
79
|
+
|
|
80
|
+
instance: None | str | Unset
|
|
81
|
+
if isinstance(self.instance, Unset):
|
|
82
|
+
instance = UNSET
|
|
83
|
+
else:
|
|
84
|
+
instance = self.instance
|
|
85
|
+
|
|
86
|
+
errors: dict[str, Any] | Unset = UNSET
|
|
87
|
+
if not isinstance(self.errors, Unset):
|
|
88
|
+
errors = self.errors.to_dict()
|
|
89
|
+
|
|
90
|
+
field_dict: dict[str, Any] = {}
|
|
91
|
+
field_dict.update(self.additional_properties)
|
|
92
|
+
field_dict.update(
|
|
93
|
+
{
|
|
94
|
+
"code": code,
|
|
95
|
+
"request_id": request_id,
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
if type_ is not UNSET:
|
|
99
|
+
field_dict["type"] = type_
|
|
100
|
+
if title is not UNSET:
|
|
101
|
+
field_dict["title"] = title
|
|
102
|
+
if status is not UNSET:
|
|
103
|
+
field_dict["status"] = status
|
|
104
|
+
if detail is not UNSET:
|
|
105
|
+
field_dict["detail"] = detail
|
|
106
|
+
if instance is not UNSET:
|
|
107
|
+
field_dict["instance"] = instance
|
|
108
|
+
if errors is not UNSET:
|
|
109
|
+
field_dict["errors"] = errors
|
|
110
|
+
|
|
111
|
+
return field_dict
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
115
|
+
from ..models.http_validation_problem_details_errors import (
|
|
116
|
+
HttpValidationProblemDetailsErrors,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
d = dict(src_dict)
|
|
120
|
+
code = d.pop("code")
|
|
121
|
+
|
|
122
|
+
request_id = d.pop("request_id")
|
|
123
|
+
|
|
124
|
+
def _parse_type_(data: object) -> None | str | Unset:
|
|
125
|
+
if data is None:
|
|
126
|
+
return data
|
|
127
|
+
if isinstance(data, Unset):
|
|
128
|
+
return data
|
|
129
|
+
return cast(None | str | Unset, data)
|
|
130
|
+
|
|
131
|
+
type_ = _parse_type_(d.pop("type", UNSET))
|
|
132
|
+
|
|
133
|
+
def _parse_title(data: object) -> None | str | Unset:
|
|
134
|
+
if data is None:
|
|
135
|
+
return data
|
|
136
|
+
if isinstance(data, Unset):
|
|
137
|
+
return data
|
|
138
|
+
return cast(None | str | Unset, data)
|
|
139
|
+
|
|
140
|
+
title = _parse_title(d.pop("title", UNSET))
|
|
141
|
+
|
|
142
|
+
def _parse_status(data: object) -> int | None | Unset:
|
|
143
|
+
if data is None:
|
|
144
|
+
return data
|
|
145
|
+
if isinstance(data, Unset):
|
|
146
|
+
return data
|
|
147
|
+
return cast(int | None | Unset, data)
|
|
148
|
+
|
|
149
|
+
status = _parse_status(d.pop("status", UNSET))
|
|
150
|
+
|
|
151
|
+
def _parse_detail(data: object) -> None | str | Unset:
|
|
152
|
+
if data is None:
|
|
153
|
+
return data
|
|
154
|
+
if isinstance(data, Unset):
|
|
155
|
+
return data
|
|
156
|
+
return cast(None | str | Unset, data)
|
|
157
|
+
|
|
158
|
+
detail = _parse_detail(d.pop("detail", UNSET))
|
|
159
|
+
|
|
160
|
+
def _parse_instance(data: object) -> None | str | Unset:
|
|
161
|
+
if data is None:
|
|
162
|
+
return data
|
|
163
|
+
if isinstance(data, Unset):
|
|
164
|
+
return data
|
|
165
|
+
return cast(None | str | Unset, data)
|
|
166
|
+
|
|
167
|
+
instance = _parse_instance(d.pop("instance", UNSET))
|
|
168
|
+
|
|
169
|
+
_errors = d.pop("errors", UNSET)
|
|
170
|
+
errors: HttpValidationProblemDetailsErrors | Unset
|
|
171
|
+
if isinstance(_errors, Unset):
|
|
172
|
+
errors = UNSET
|
|
173
|
+
else:
|
|
174
|
+
errors = HttpValidationProblemDetailsErrors.from_dict(_errors)
|
|
175
|
+
|
|
176
|
+
http_validation_problem_details = cls(
|
|
177
|
+
code=code,
|
|
178
|
+
request_id=request_id,
|
|
179
|
+
type_=type_,
|
|
180
|
+
title=title,
|
|
181
|
+
status=status,
|
|
182
|
+
detail=detail,
|
|
183
|
+
instance=instance,
|
|
184
|
+
errors=errors,
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
http_validation_problem_details.additional_properties = d
|
|
188
|
+
return http_validation_problem_details
|
|
189
|
+
|
|
190
|
+
@property
|
|
191
|
+
def additional_keys(self) -> list[str]:
|
|
192
|
+
return list(self.additional_properties.keys())
|
|
193
|
+
|
|
194
|
+
def __getitem__(self, key: str) -> Any:
|
|
195
|
+
return self.additional_properties[key]
|
|
196
|
+
|
|
197
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
198
|
+
self.additional_properties[key] = value
|
|
199
|
+
|
|
200
|
+
def __delitem__(self, key: str) -> None:
|
|
201
|
+
del self.additional_properties[key]
|
|
202
|
+
|
|
203
|
+
def __contains__(self, key: str) -> bool:
|
|
204
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from typing import cast
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
T = TypeVar("T", bound="HttpValidationProblemDetailsErrors")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@_attrs_define
|
|
18
|
+
class HttpValidationProblemDetailsErrors:
|
|
19
|
+
""" """
|
|
20
|
+
|
|
21
|
+
additional_properties: dict[str, list[str]] = _attrs_field(init=False, factory=dict)
|
|
22
|
+
|
|
23
|
+
def to_dict(self) -> dict[str, Any]:
|
|
24
|
+
|
|
25
|
+
field_dict: dict[str, Any] = {}
|
|
26
|
+
for prop_name, prop in self.additional_properties.items():
|
|
27
|
+
field_dict[prop_name] = prop
|
|
28
|
+
|
|
29
|
+
return field_dict
|
|
30
|
+
|
|
31
|
+
@classmethod
|
|
32
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
33
|
+
d = dict(src_dict)
|
|
34
|
+
http_validation_problem_details_errors = cls()
|
|
35
|
+
|
|
36
|
+
additional_properties = {}
|
|
37
|
+
for prop_name, prop_dict in d.items():
|
|
38
|
+
additional_property = cast(list[str], prop_dict)
|
|
39
|
+
|
|
40
|
+
additional_properties[prop_name] = additional_property
|
|
41
|
+
|
|
42
|
+
http_validation_problem_details_errors.additional_properties = additional_properties
|
|
43
|
+
return http_validation_problem_details_errors
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def additional_keys(self) -> list[str]:
|
|
47
|
+
return list(self.additional_properties.keys())
|
|
48
|
+
|
|
49
|
+
def __getitem__(self, key: str) -> list[str]:
|
|
50
|
+
return self.additional_properties[key]
|
|
51
|
+
|
|
52
|
+
def __setitem__(self, key: str, value: list[str]) -> None:
|
|
53
|
+
self.additional_properties[key] = value
|
|
54
|
+
|
|
55
|
+
def __delitem__(self, key: str) -> None:
|
|
56
|
+
del self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __contains__(self, key: str) -> bool:
|
|
59
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from typing import cast
|
|
12
|
+
import datetime
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
T = TypeVar("T", bound="InstrumentResponse")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@_attrs_define
|
|
19
|
+
class InstrumentResponse:
|
|
20
|
+
"""
|
|
21
|
+
Attributes:
|
|
22
|
+
id (str):
|
|
23
|
+
hostname (str):
|
|
24
|
+
rig_id (str):
|
|
25
|
+
synced_at (datetime.datetime): UTC instant, ISO 8601 with offset, e.g. 2026-10-15T16:00:00Z.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
id: str
|
|
29
|
+
hostname: str
|
|
30
|
+
rig_id: str
|
|
31
|
+
synced_at: datetime.datetime
|
|
32
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
33
|
+
|
|
34
|
+
def to_dict(self) -> dict[str, Any]:
|
|
35
|
+
id = self.id
|
|
36
|
+
|
|
37
|
+
hostname = self.hostname
|
|
38
|
+
|
|
39
|
+
rig_id = self.rig_id
|
|
40
|
+
|
|
41
|
+
synced_at = self.synced_at.isoformat()
|
|
42
|
+
|
|
43
|
+
field_dict: dict[str, Any] = {}
|
|
44
|
+
field_dict.update(self.additional_properties)
|
|
45
|
+
field_dict.update(
|
|
46
|
+
{
|
|
47
|
+
"id": id,
|
|
48
|
+
"hostname": hostname,
|
|
49
|
+
"rig_id": rig_id,
|
|
50
|
+
"synced_at": synced_at,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
return field_dict
|
|
55
|
+
|
|
56
|
+
@classmethod
|
|
57
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
58
|
+
d = dict(src_dict)
|
|
59
|
+
id = d.pop("id")
|
|
60
|
+
|
|
61
|
+
hostname = d.pop("hostname")
|
|
62
|
+
|
|
63
|
+
rig_id = d.pop("rig_id")
|
|
64
|
+
|
|
65
|
+
synced_at = datetime.datetime.fromisoformat(d.pop("synced_at"))
|
|
66
|
+
|
|
67
|
+
instrument_response = cls(
|
|
68
|
+
id=id,
|
|
69
|
+
hostname=hostname,
|
|
70
|
+
rig_id=rig_id,
|
|
71
|
+
synced_at=synced_at,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
instrument_response.additional_properties = d
|
|
75
|
+
return instrument_response
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def additional_keys(self) -> list[str]:
|
|
79
|
+
return list(self.additional_properties.keys())
|
|
80
|
+
|
|
81
|
+
def __getitem__(self, key: str) -> Any:
|
|
82
|
+
return self.additional_properties[key]
|
|
83
|
+
|
|
84
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
85
|
+
self.additional_properties[key] = value
|
|
86
|
+
|
|
87
|
+
def __delitem__(self, key: str) -> None:
|
|
88
|
+
del self.additional_properties[key]
|
|
89
|
+
|
|
90
|
+
def __contains__(self, key: str) -> bool:
|
|
91
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..models.kept_occurrence_reason import KeptOccurrenceReason
|
|
12
|
+
from typing import cast
|
|
13
|
+
import datetime
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
T = TypeVar("T", bound="KeptOccurrence")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@_attrs_define
|
|
20
|
+
class KeptOccurrence:
|
|
21
|
+
"""An occurrence of the old series, on or after the split date, that the split leaves alone.
|
|
22
|
+
|
|
23
|
+
Attributes:
|
|
24
|
+
scheduled_acquisition_id (int): The occurrence.
|
|
25
|
+
occurrence_local_date (datetime.date): Calendar date, e.g. 2026-10-15.
|
|
26
|
+
reason (KeptOccurrenceReason): Why an occurrence of the previous series survives a split.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
scheduled_acquisition_id: int
|
|
30
|
+
occurrence_local_date: datetime.date
|
|
31
|
+
reason: KeptOccurrenceReason
|
|
32
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
33
|
+
|
|
34
|
+
def to_dict(self) -> dict[str, Any]:
|
|
35
|
+
scheduled_acquisition_id = self.scheduled_acquisition_id
|
|
36
|
+
|
|
37
|
+
occurrence_local_date = self.occurrence_local_date.isoformat()
|
|
38
|
+
|
|
39
|
+
reason = self.reason.value
|
|
40
|
+
|
|
41
|
+
field_dict: dict[str, Any] = {}
|
|
42
|
+
field_dict.update(self.additional_properties)
|
|
43
|
+
field_dict.update(
|
|
44
|
+
{
|
|
45
|
+
"scheduled_acquisition_id": scheduled_acquisition_id,
|
|
46
|
+
"occurrence_local_date": occurrence_local_date,
|
|
47
|
+
"reason": reason,
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
return field_dict
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
55
|
+
d = dict(src_dict)
|
|
56
|
+
scheduled_acquisition_id = d.pop("scheduled_acquisition_id")
|
|
57
|
+
|
|
58
|
+
occurrence_local_date = datetime.date.fromisoformat(d.pop("occurrence_local_date"))
|
|
59
|
+
|
|
60
|
+
reason = KeptOccurrenceReason(d.pop("reason"))
|
|
61
|
+
|
|
62
|
+
kept_occurrence = cls(
|
|
63
|
+
scheduled_acquisition_id=scheduled_acquisition_id,
|
|
64
|
+
occurrence_local_date=occurrence_local_date,
|
|
65
|
+
reason=reason,
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
kept_occurrence.additional_properties = d
|
|
69
|
+
return kept_occurrence
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def additional_keys(self) -> list[str]:
|
|
73
|
+
return list(self.additional_properties.keys())
|
|
74
|
+
|
|
75
|
+
def __getitem__(self, key: str) -> Any:
|
|
76
|
+
return self.additional_properties[key]
|
|
77
|
+
|
|
78
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
79
|
+
self.additional_properties[key] = value
|
|
80
|
+
|
|
81
|
+
def __delitem__(self, key: str) -> None:
|
|
82
|
+
del self.additional_properties[key]
|
|
83
|
+
|
|
84
|
+
def __contains__(self, key: str) -> bool:
|
|
85
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ListActiveAcquisitionsEffectiveStatusItem(str, Enum):
|
|
5
|
+
CANCELLED = "cancelled"
|
|
6
|
+
COMPLETED = "completed"
|
|
7
|
+
ERRORED = "errored"
|
|
8
|
+
FAILED = "failed"
|
|
9
|
+
ONGOING = "ongoing"
|
|
10
|
+
SCHEDULED = "scheduled"
|
|
11
|
+
SUCCEEDED = "succeeded"
|
|
12
|
+
TIMED_OUT = "timed_out"
|
|
13
|
+
|
|
14
|
+
def __str__(self) -> str:
|
|
15
|
+
return str(self.value)
|