nadeshiko-sdk 0.1.0__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.
- nadeshiko/__init__.py +10 -0
- nadeshiko/_version.py +1 -0
- nadeshiko/api/__init__.py +1 -0
- nadeshiko/api/auth/__init__.py +3 -0
- nadeshiko/api/auth/internal/__init__.py +11 -0
- nadeshiko/api/auth/internal/get_discord_auth_url.py +176 -0
- nadeshiko/api/auth/internal/login.py +213 -0
- nadeshiko/api/auth/internal/login_discord.py +204 -0
- nadeshiko/api/auth/internal/login_google.py +204 -0
- nadeshiko/api/auth/internal/register.py +212 -0
- nadeshiko/api/auth_jwt/__init__.py +3 -0
- nadeshiko/api/auth_jwt/internal/__init__.py +7 -0
- nadeshiko/api/auth_jwt/internal/logout.py +151 -0
- nadeshiko/api/lists/__init__.py +8 -0
- nadeshiko/api/lists/internal/__init__.py +12 -0
- nadeshiko/api/lists/internal/list_add_item.py +215 -0
- nadeshiko/api/lists/internal/list_create.py +194 -0
- nadeshiko/api/lists/internal/list_destroy.py +193 -0
- nadeshiko/api/lists/internal/list_remove_item.py +207 -0
- nadeshiko/api/lists/internal/list_update.py +215 -0
- nadeshiko/api/lists/internal/list_update_item.py +229 -0
- nadeshiko/api/lists/list_index.py +257 -0
- nadeshiko/api/lists/list_show.py +193 -0
- nadeshiko/api/media/__init__.py +14 -0
- nadeshiko/api/media/character_show.py +193 -0
- nadeshiko/api/media/episode_index.py +229 -0
- nadeshiko/api/media/episode_show.py +207 -0
- nadeshiko/api/media/internal/__init__.py +16 -0
- nadeshiko/api/media/internal/episode_create.py +215 -0
- nadeshiko/api/media/internal/episode_destroy.py +205 -0
- nadeshiko/api/media/internal/episode_update.py +229 -0
- nadeshiko/api/media/internal/media_create.py +194 -0
- nadeshiko/api/media/internal/media_destroy.py +197 -0
- nadeshiko/api/media/internal/media_update.py +219 -0
- nadeshiko/api/media/internal/segment_create.py +229 -0
- nadeshiko/api/media/internal/segment_destroy.py +219 -0
- nadeshiko/api/media/internal/segment_index.py +243 -0
- nadeshiko/api/media/internal/segment_update.py +243 -0
- nadeshiko/api/media/media_index.py +232 -0
- nadeshiko/api/media/media_show.py +193 -0
- nadeshiko/api/media/segment_show.py +221 -0
- nadeshiko/api/media/segment_show_by_uuid.py +193 -0
- nadeshiko/api/media/seiyuu_show.py +193 -0
- nadeshiko/api/search/__init__.py +11 -0
- nadeshiko/api/search/fetch_media_info.py +278 -0
- nadeshiko/api/search/fetch_sentence_context.py +219 -0
- nadeshiko/api/search/internal/__init__.py +6 -0
- nadeshiko/api/search/search.py +295 -0
- nadeshiko/api/search/search_health_check.py +168 -0
- nadeshiko/api/search/search_multiple.py +238 -0
- nadeshiko/api/user/__init__.py +3 -0
- nadeshiko/api/user/internal/__init__.py +11 -0
- nadeshiko/api/user/internal/create_api_key.py +199 -0
- nadeshiko/api/user/internal/deactivate_api_key.py +194 -0
- nadeshiko/api/user/internal/get_api_keys.py +151 -0
- nadeshiko/api/user/internal/get_identity_me.py +156 -0
- nadeshiko/api/user/internal/get_user_info.py +156 -0
- nadeshiko/client.py +138 -0
- nadeshiko/errors.py +16 -0
- nadeshiko/models/__init__.py +215 -0
- nadeshiko/models/api_key.py +118 -0
- nadeshiko/models/api_key_permission.py +70 -0
- nadeshiko/models/auth_user.py +107 -0
- nadeshiko/models/basic_info.py +132 -0
- nadeshiko/models/category_statistic.py +71 -0
- nadeshiko/models/character.py +100 -0
- nadeshiko/models/character_input.py +130 -0
- nadeshiko/models/character_input_character_role.py +10 -0
- nadeshiko/models/character_with_media.py +124 -0
- nadeshiko/models/character_with_media_media_appearances_item.py +93 -0
- nadeshiko/models/character_with_media_media_appearances_item_role.py +10 -0
- nadeshiko/models/create_api_key_request.py +75 -0
- nadeshiko/models/create_api_key_response.py +70 -0
- nadeshiko/models/deactivate_api_key_request.py +62 -0
- nadeshiko/models/deactivate_api_key_response.py +62 -0
- nadeshiko/models/discord_auth_url_response.py +62 -0
- nadeshiko/models/discord_login_request.py +62 -0
- nadeshiko/models/episode.py +253 -0
- nadeshiko/models/episode_create_request.py +145 -0
- nadeshiko/models/episode_list_response.py +94 -0
- nadeshiko/models/episode_update_request.py +135 -0
- nadeshiko/models/error.py +128 -0
- nadeshiko/models/error_errors.py +46 -0
- nadeshiko/models/fetch_media_info_response.py +115 -0
- nadeshiko/models/fetch_media_info_type.py +10 -0
- nadeshiko/models/fetch_sentence_context_request.py +96 -0
- nadeshiko/models/fetch_sentence_context_response.py +75 -0
- nadeshiko/models/get_api_keys_response.py +86 -0
- nadeshiko/models/google_login_request.py +62 -0
- nadeshiko/models/list_.py +97 -0
- nadeshiko/models/list_add_item_body.py +69 -0
- nadeshiko/models/list_add_item_response_201.py +61 -0
- nadeshiko/models/list_create_request.py +107 -0
- nadeshiko/models/list_create_request_type.py +9 -0
- nadeshiko/models/list_create_request_visibility.py +9 -0
- nadeshiko/models/list_destroy_response_200.py +70 -0
- nadeshiko/models/list_index_type.py +9 -0
- nadeshiko/models/list_index_visibility.py +9 -0
- nadeshiko/models/list_input.py +138 -0
- nadeshiko/models/list_input_list_type.py +9 -0
- nadeshiko/models/list_input_list_visibility.py +9 -0
- nadeshiko/models/list_remove_item_response_200.py +61 -0
- nadeshiko/models/list_type.py +9 -0
- nadeshiko/models/list_update_body.py +78 -0
- nadeshiko/models/list_update_body_visibility.py +9 -0
- nadeshiko/models/list_update_item_body.py +61 -0
- nadeshiko/models/list_update_item_response_200.py +61 -0
- nadeshiko/models/list_visibility.py +9 -0
- nadeshiko/models/list_with_media.py +119 -0
- nadeshiko/models/list_with_media_media_item.py +83 -0
- nadeshiko/models/list_with_media_type.py +9 -0
- nadeshiko/models/list_with_media_visibility.py +9 -0
- nadeshiko/models/login_request.py +70 -0
- nadeshiko/models/login_response.py +84 -0
- nadeshiko/models/logout_response.py +73 -0
- nadeshiko/models/media.py +288 -0
- nadeshiko/models/media_category.py +11 -0
- nadeshiko/models/media_character.py +78 -0
- nadeshiko/models/media_character_role.py +10 -0
- nadeshiko/models/media_create_request.py +270 -0
- nadeshiko/models/media_create_request_category.py +11 -0
- nadeshiko/models/media_destroy_response_200.py +70 -0
- nadeshiko/models/media_index_category.py +9 -0
- nadeshiko/models/media_info_data.py +307 -0
- nadeshiko/models/media_info_path.py +83 -0
- nadeshiko/models/media_info_stats.py +89 -0
- nadeshiko/models/media_list_response.py +94 -0
- nadeshiko/models/media_update_request.py +297 -0
- nadeshiko/models/media_update_request_category.py +9 -0
- nadeshiko/models/quota_info.py +87 -0
- nadeshiko/models/quota_info_quota_limit_type_1.py +8 -0
- nadeshiko/models/register_request.py +78 -0
- nadeshiko/models/register_response.py +76 -0
- nadeshiko/models/register_response_user.py +46 -0
- nadeshiko/models/search_health_check_response.py +138 -0
- nadeshiko/models/search_multiple_request.py +72 -0
- nadeshiko/models/search_multiple_response.py +79 -0
- nadeshiko/models/search_request.py +253 -0
- nadeshiko/models/search_request_content_sort.py +13 -0
- nadeshiko/models/search_request_media_item.py +85 -0
- nadeshiko/models/search_request_media_item_seasons_item.py +69 -0
- nadeshiko/models/search_response.py +158 -0
- nadeshiko/models/segment.py +303 -0
- nadeshiko/models/segment_create_request.py +203 -0
- nadeshiko/models/segment_create_request_status.py +13 -0
- nadeshiko/models/segment_info.py +207 -0
- nadeshiko/models/segment_list_response.py +94 -0
- nadeshiko/models/segment_status.py +13 -0
- nadeshiko/models/segment_update_request.py +198 -0
- nadeshiko/models/segment_update_request_status.py +13 -0
- nadeshiko/models/seiyuu.py +86 -0
- nadeshiko/models/seiyuu_with_roles.py +108 -0
- nadeshiko/models/seiyuu_with_roles_roles_item.py +109 -0
- nadeshiko/models/seiyuu_with_roles_roles_item_role.py +10 -0
- nadeshiko/models/sentence.py +88 -0
- nadeshiko/models/statistic.py +132 -0
- nadeshiko/models/statistic_season_with_episode_hits.py +74 -0
- nadeshiko/models/statistic_season_with_episode_hits_additional_property.py +46 -0
- nadeshiko/models/user_info_response.py +79 -0
- nadeshiko/models/user_info_response_user.py +91 -0
- nadeshiko/models/user_role.py +71 -0
- nadeshiko/models/word_match.py +107 -0
- nadeshiko/models/word_match_media.py +98 -0
- nadeshiko/types.py +54 -0
- nadeshiko_sdk-0.1.0.dist-info/METADATA +147 -0
- nadeshiko_sdk-0.1.0.dist-info/RECORD +167 -0
- nadeshiko_sdk-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"""Contains all the data models used in inputs/outputs"""
|
|
2
|
+
|
|
3
|
+
from .api_key import ApiKey
|
|
4
|
+
from .api_key_permission import ApiKeyPermission
|
|
5
|
+
from .auth_user import AuthUser
|
|
6
|
+
from .basic_info import BasicInfo
|
|
7
|
+
from .category_statistic import CategoryStatistic
|
|
8
|
+
from .character import Character
|
|
9
|
+
from .character_input import CharacterInput
|
|
10
|
+
from .character_input_character_role import CharacterInputCharacterRole
|
|
11
|
+
from .character_with_media import CharacterWithMedia
|
|
12
|
+
from .character_with_media_media_appearances_item import CharacterWithMediaMediaAppearancesItem
|
|
13
|
+
from .character_with_media_media_appearances_item_role import (
|
|
14
|
+
CharacterWithMediaMediaAppearancesItemRole,
|
|
15
|
+
)
|
|
16
|
+
from .create_api_key_request import CreateApiKeyRequest
|
|
17
|
+
from .create_api_key_response import CreateApiKeyResponse
|
|
18
|
+
from .deactivate_api_key_request import DeactivateApiKeyRequest
|
|
19
|
+
from .deactivate_api_key_response import DeactivateApiKeyResponse
|
|
20
|
+
from .discord_auth_url_response import DiscordAuthUrlResponse
|
|
21
|
+
from .discord_login_request import DiscordLoginRequest
|
|
22
|
+
from .episode import Episode
|
|
23
|
+
from .episode_create_request import EpisodeCreateRequest
|
|
24
|
+
from .episode_list_response import EpisodeListResponse
|
|
25
|
+
from .episode_update_request import EpisodeUpdateRequest
|
|
26
|
+
from .error import Error
|
|
27
|
+
from .error_errors import ErrorErrors
|
|
28
|
+
from .fetch_media_info_response import FetchMediaInfoResponse
|
|
29
|
+
from .fetch_media_info_type import FetchMediaInfoType
|
|
30
|
+
from .fetch_sentence_context_request import FetchSentenceContextRequest
|
|
31
|
+
from .fetch_sentence_context_response import FetchSentenceContextResponse
|
|
32
|
+
from .get_api_keys_response import GetApiKeysResponse
|
|
33
|
+
from .google_login_request import GoogleLoginRequest
|
|
34
|
+
from .list_ import List
|
|
35
|
+
from .list_add_item_body import ListAddItemBody
|
|
36
|
+
from .list_add_item_response_201 import ListAddItemResponse201
|
|
37
|
+
from .list_create_request import ListCreateRequest
|
|
38
|
+
from .list_create_request_type import ListCreateRequestType
|
|
39
|
+
from .list_create_request_visibility import ListCreateRequestVisibility
|
|
40
|
+
from .list_destroy_response_200 import ListDestroyResponse200
|
|
41
|
+
from .list_index_type import ListIndexType
|
|
42
|
+
from .list_index_visibility import ListIndexVisibility
|
|
43
|
+
from .list_input import ListInput
|
|
44
|
+
from .list_input_list_type import ListInputListType
|
|
45
|
+
from .list_input_list_visibility import ListInputListVisibility
|
|
46
|
+
from .list_remove_item_response_200 import ListRemoveItemResponse200
|
|
47
|
+
from .list_type import ListType
|
|
48
|
+
from .list_update_body import ListUpdateBody
|
|
49
|
+
from .list_update_body_visibility import ListUpdateBodyVisibility
|
|
50
|
+
from .list_update_item_body import ListUpdateItemBody
|
|
51
|
+
from .list_update_item_response_200 import ListUpdateItemResponse200
|
|
52
|
+
from .list_visibility import ListVisibility
|
|
53
|
+
from .list_with_media import ListWithMedia
|
|
54
|
+
from .list_with_media_media_item import ListWithMediaMediaItem
|
|
55
|
+
from .list_with_media_type import ListWithMediaType
|
|
56
|
+
from .list_with_media_visibility import ListWithMediaVisibility
|
|
57
|
+
from .login_request import LoginRequest
|
|
58
|
+
from .login_response import LoginResponse
|
|
59
|
+
from .logout_response import LogoutResponse
|
|
60
|
+
from .media import Media
|
|
61
|
+
from .media_category import MediaCategory
|
|
62
|
+
from .media_character import MediaCharacter
|
|
63
|
+
from .media_character_role import MediaCharacterRole
|
|
64
|
+
from .media_create_request import MediaCreateRequest
|
|
65
|
+
from .media_create_request_category import MediaCreateRequestCategory
|
|
66
|
+
from .media_destroy_response_200 import MediaDestroyResponse200
|
|
67
|
+
from .media_index_category import MediaIndexCategory
|
|
68
|
+
from .media_info_data import MediaInfoData
|
|
69
|
+
from .media_info_path import MediaInfoPath
|
|
70
|
+
from .media_info_stats import MediaInfoStats
|
|
71
|
+
from .media_list_response import MediaListResponse
|
|
72
|
+
from .media_update_request import MediaUpdateRequest
|
|
73
|
+
from .media_update_request_category import MediaUpdateRequestCategory
|
|
74
|
+
from .quota_info import QuotaInfo
|
|
75
|
+
from .quota_info_quota_limit_type_1 import QuotaInfoQuotaLimitType1
|
|
76
|
+
from .register_request import RegisterRequest
|
|
77
|
+
from .register_response import RegisterResponse
|
|
78
|
+
from .register_response_user import RegisterResponseUser
|
|
79
|
+
from .search_health_check_response import SearchHealthCheckResponse
|
|
80
|
+
from .search_multiple_request import SearchMultipleRequest
|
|
81
|
+
from .search_multiple_response import SearchMultipleResponse
|
|
82
|
+
from .search_request import SearchRequest
|
|
83
|
+
from .search_request_content_sort import SearchRequestContentSort
|
|
84
|
+
from .search_request_media_item import SearchRequestMediaItem
|
|
85
|
+
from .search_request_media_item_seasons_item import SearchRequestMediaItemSeasonsItem
|
|
86
|
+
from .search_response import SearchResponse
|
|
87
|
+
from .segment import Segment
|
|
88
|
+
from .segment_create_request import SegmentCreateRequest
|
|
89
|
+
from .segment_create_request_status import SegmentCreateRequestStatus
|
|
90
|
+
from .segment_info import SegmentInfo
|
|
91
|
+
from .segment_list_response import SegmentListResponse
|
|
92
|
+
from .segment_status import SegmentStatus
|
|
93
|
+
from .segment_update_request import SegmentUpdateRequest
|
|
94
|
+
from .segment_update_request_status import SegmentUpdateRequestStatus
|
|
95
|
+
from .seiyuu import Seiyuu
|
|
96
|
+
from .seiyuu_with_roles import SeiyuuWithRoles
|
|
97
|
+
from .seiyuu_with_roles_roles_item import SeiyuuWithRolesRolesItem
|
|
98
|
+
from .seiyuu_with_roles_roles_item_role import SeiyuuWithRolesRolesItemRole
|
|
99
|
+
from .sentence import Sentence
|
|
100
|
+
from .statistic import Statistic
|
|
101
|
+
from .statistic_season_with_episode_hits import StatisticSeasonWithEpisodeHits
|
|
102
|
+
from .statistic_season_with_episode_hits_additional_property import (
|
|
103
|
+
StatisticSeasonWithEpisodeHitsAdditionalProperty,
|
|
104
|
+
)
|
|
105
|
+
from .user_info_response import UserInfoResponse
|
|
106
|
+
from .user_info_response_user import UserInfoResponseUser
|
|
107
|
+
from .user_role import UserRole
|
|
108
|
+
from .word_match import WordMatch
|
|
109
|
+
from .word_match_media import WordMatchMedia
|
|
110
|
+
|
|
111
|
+
__all__ = (
|
|
112
|
+
"ApiKey",
|
|
113
|
+
"ApiKeyPermission",
|
|
114
|
+
"AuthUser",
|
|
115
|
+
"BasicInfo",
|
|
116
|
+
"CategoryStatistic",
|
|
117
|
+
"Character",
|
|
118
|
+
"CharacterInput",
|
|
119
|
+
"CharacterInputCharacterRole",
|
|
120
|
+
"CharacterWithMedia",
|
|
121
|
+
"CharacterWithMediaMediaAppearancesItem",
|
|
122
|
+
"CharacterWithMediaMediaAppearancesItemRole",
|
|
123
|
+
"CreateApiKeyRequest",
|
|
124
|
+
"CreateApiKeyResponse",
|
|
125
|
+
"DeactivateApiKeyRequest",
|
|
126
|
+
"DeactivateApiKeyResponse",
|
|
127
|
+
"DiscordAuthUrlResponse",
|
|
128
|
+
"DiscordLoginRequest",
|
|
129
|
+
"Episode",
|
|
130
|
+
"EpisodeCreateRequest",
|
|
131
|
+
"EpisodeListResponse",
|
|
132
|
+
"EpisodeUpdateRequest",
|
|
133
|
+
"Error",
|
|
134
|
+
"ErrorErrors",
|
|
135
|
+
"FetchMediaInfoResponse",
|
|
136
|
+
"FetchMediaInfoType",
|
|
137
|
+
"FetchSentenceContextRequest",
|
|
138
|
+
"FetchSentenceContextResponse",
|
|
139
|
+
"GetApiKeysResponse",
|
|
140
|
+
"GoogleLoginRequest",
|
|
141
|
+
"List",
|
|
142
|
+
"ListAddItemBody",
|
|
143
|
+
"ListAddItemResponse201",
|
|
144
|
+
"ListCreateRequest",
|
|
145
|
+
"ListCreateRequestType",
|
|
146
|
+
"ListCreateRequestVisibility",
|
|
147
|
+
"ListDestroyResponse200",
|
|
148
|
+
"ListIndexType",
|
|
149
|
+
"ListIndexVisibility",
|
|
150
|
+
"ListInput",
|
|
151
|
+
"ListInputListType",
|
|
152
|
+
"ListInputListVisibility",
|
|
153
|
+
"ListRemoveItemResponse200",
|
|
154
|
+
"ListType",
|
|
155
|
+
"ListUpdateBody",
|
|
156
|
+
"ListUpdateBodyVisibility",
|
|
157
|
+
"ListUpdateItemBody",
|
|
158
|
+
"ListUpdateItemResponse200",
|
|
159
|
+
"ListVisibility",
|
|
160
|
+
"ListWithMedia",
|
|
161
|
+
"ListWithMediaMediaItem",
|
|
162
|
+
"ListWithMediaType",
|
|
163
|
+
"ListWithMediaVisibility",
|
|
164
|
+
"LoginRequest",
|
|
165
|
+
"LoginResponse",
|
|
166
|
+
"LogoutResponse",
|
|
167
|
+
"Media",
|
|
168
|
+
"MediaCategory",
|
|
169
|
+
"MediaCharacter",
|
|
170
|
+
"MediaCharacterRole",
|
|
171
|
+
"MediaCreateRequest",
|
|
172
|
+
"MediaCreateRequestCategory",
|
|
173
|
+
"MediaDestroyResponse200",
|
|
174
|
+
"MediaIndexCategory",
|
|
175
|
+
"MediaInfoData",
|
|
176
|
+
"MediaInfoPath",
|
|
177
|
+
"MediaInfoStats",
|
|
178
|
+
"MediaListResponse",
|
|
179
|
+
"MediaUpdateRequest",
|
|
180
|
+
"MediaUpdateRequestCategory",
|
|
181
|
+
"QuotaInfo",
|
|
182
|
+
"QuotaInfoQuotaLimitType1",
|
|
183
|
+
"RegisterRequest",
|
|
184
|
+
"RegisterResponse",
|
|
185
|
+
"RegisterResponseUser",
|
|
186
|
+
"SearchHealthCheckResponse",
|
|
187
|
+
"SearchMultipleRequest",
|
|
188
|
+
"SearchMultipleResponse",
|
|
189
|
+
"SearchRequest",
|
|
190
|
+
"SearchRequestContentSort",
|
|
191
|
+
"SearchRequestMediaItem",
|
|
192
|
+
"SearchRequestMediaItemSeasonsItem",
|
|
193
|
+
"SearchResponse",
|
|
194
|
+
"Segment",
|
|
195
|
+
"SegmentCreateRequest",
|
|
196
|
+
"SegmentCreateRequestStatus",
|
|
197
|
+
"SegmentInfo",
|
|
198
|
+
"SegmentListResponse",
|
|
199
|
+
"SegmentStatus",
|
|
200
|
+
"SegmentUpdateRequest",
|
|
201
|
+
"SegmentUpdateRequestStatus",
|
|
202
|
+
"Seiyuu",
|
|
203
|
+
"SeiyuuWithRoles",
|
|
204
|
+
"SeiyuuWithRolesRolesItem",
|
|
205
|
+
"SeiyuuWithRolesRolesItemRole",
|
|
206
|
+
"Sentence",
|
|
207
|
+
"Statistic",
|
|
208
|
+
"StatisticSeasonWithEpisodeHits",
|
|
209
|
+
"StatisticSeasonWithEpisodeHitsAdditionalProperty",
|
|
210
|
+
"UserInfoResponse",
|
|
211
|
+
"UserInfoResponseUser",
|
|
212
|
+
"UserRole",
|
|
213
|
+
"WordMatch",
|
|
214
|
+
"WordMatchMedia",
|
|
215
|
+
)
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import datetime
|
|
4
|
+
from collections.abc import Mapping
|
|
5
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
6
|
+
|
|
7
|
+
from attrs import define as _attrs_define
|
|
8
|
+
from attrs import field as _attrs_field
|
|
9
|
+
from dateutil.parser import isoparse
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from ..models.api_key_permission import ApiKeyPermission
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
T = TypeVar("T", bound="ApiKey")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@_attrs_define
|
|
19
|
+
class ApiKey:
|
|
20
|
+
"""API key information
|
|
21
|
+
|
|
22
|
+
Attributes:
|
|
23
|
+
id (int): API key ID
|
|
24
|
+
name (str): API key name
|
|
25
|
+
is_active (bool): Whether the API key is active
|
|
26
|
+
created_at (datetime.datetime): Creation timestamp
|
|
27
|
+
hint (str): API key hint (last 4 characters)
|
|
28
|
+
permissions (list[ApiKeyPermission]): API key permissions
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
id: int
|
|
32
|
+
name: str
|
|
33
|
+
is_active: bool
|
|
34
|
+
created_at: datetime.datetime
|
|
35
|
+
hint: str
|
|
36
|
+
permissions: list[ApiKeyPermission]
|
|
37
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
38
|
+
|
|
39
|
+
def to_dict(self) -> dict[str, Any]:
|
|
40
|
+
id = self.id
|
|
41
|
+
|
|
42
|
+
name = self.name
|
|
43
|
+
|
|
44
|
+
is_active = self.is_active
|
|
45
|
+
|
|
46
|
+
created_at = self.created_at.isoformat()
|
|
47
|
+
|
|
48
|
+
hint = self.hint
|
|
49
|
+
|
|
50
|
+
permissions = []
|
|
51
|
+
for permissions_item_data in self.permissions:
|
|
52
|
+
permissions_item = permissions_item_data.to_dict()
|
|
53
|
+
permissions.append(permissions_item)
|
|
54
|
+
|
|
55
|
+
field_dict: dict[str, Any] = {}
|
|
56
|
+
field_dict.update(self.additional_properties)
|
|
57
|
+
field_dict.update(
|
|
58
|
+
{
|
|
59
|
+
"id": id,
|
|
60
|
+
"name": name,
|
|
61
|
+
"isActive": is_active,
|
|
62
|
+
"createdAt": created_at,
|
|
63
|
+
"hint": hint,
|
|
64
|
+
"permissions": permissions,
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
return field_dict
|
|
69
|
+
|
|
70
|
+
@classmethod
|
|
71
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
72
|
+
from ..models.api_key_permission import ApiKeyPermission
|
|
73
|
+
|
|
74
|
+
d = dict(src_dict)
|
|
75
|
+
id = d.pop("id")
|
|
76
|
+
|
|
77
|
+
name = d.pop("name")
|
|
78
|
+
|
|
79
|
+
is_active = d.pop("isActive")
|
|
80
|
+
|
|
81
|
+
created_at = isoparse(d.pop("createdAt"))
|
|
82
|
+
|
|
83
|
+
hint = d.pop("hint")
|
|
84
|
+
|
|
85
|
+
permissions = []
|
|
86
|
+
_permissions = d.pop("permissions")
|
|
87
|
+
for permissions_item_data in _permissions:
|
|
88
|
+
permissions_item = ApiKeyPermission.from_dict(permissions_item_data)
|
|
89
|
+
|
|
90
|
+
permissions.append(permissions_item)
|
|
91
|
+
|
|
92
|
+
api_key = cls(
|
|
93
|
+
id=id,
|
|
94
|
+
name=name,
|
|
95
|
+
is_active=is_active,
|
|
96
|
+
created_at=created_at,
|
|
97
|
+
hint=hint,
|
|
98
|
+
permissions=permissions,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
api_key.additional_properties = d
|
|
102
|
+
return api_key
|
|
103
|
+
|
|
104
|
+
@property
|
|
105
|
+
def additional_keys(self) -> list[str]:
|
|
106
|
+
return list(self.additional_properties.keys())
|
|
107
|
+
|
|
108
|
+
def __getitem__(self, key: str) -> Any:
|
|
109
|
+
return self.additional_properties[key]
|
|
110
|
+
|
|
111
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
112
|
+
self.additional_properties[key] = value
|
|
113
|
+
|
|
114
|
+
def __delitem__(self, key: str) -> None:
|
|
115
|
+
del self.additional_properties[key]
|
|
116
|
+
|
|
117
|
+
def __contains__(self, key: str) -> bool:
|
|
118
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="ApiKeyPermission")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class ApiKeyPermission:
|
|
14
|
+
"""API key permission
|
|
15
|
+
|
|
16
|
+
Attributes:
|
|
17
|
+
id (int): Permission ID
|
|
18
|
+
name (str): Permission name
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
id: int
|
|
22
|
+
name: str
|
|
23
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
24
|
+
|
|
25
|
+
def to_dict(self) -> dict[str, Any]:
|
|
26
|
+
id = self.id
|
|
27
|
+
|
|
28
|
+
name = self.name
|
|
29
|
+
|
|
30
|
+
field_dict: dict[str, Any] = {}
|
|
31
|
+
field_dict.update(self.additional_properties)
|
|
32
|
+
field_dict.update(
|
|
33
|
+
{
|
|
34
|
+
"id": id,
|
|
35
|
+
"name": name,
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
return field_dict
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
43
|
+
d = dict(src_dict)
|
|
44
|
+
id = d.pop("id")
|
|
45
|
+
|
|
46
|
+
name = d.pop("name")
|
|
47
|
+
|
|
48
|
+
api_key_permission = cls(
|
|
49
|
+
id=id,
|
|
50
|
+
name=name,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
api_key_permission.additional_properties = d
|
|
54
|
+
return api_key_permission
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def additional_keys(self) -> list[str]:
|
|
58
|
+
return list(self.additional_properties.keys())
|
|
59
|
+
|
|
60
|
+
def __getitem__(self, key: str) -> Any:
|
|
61
|
+
return self.additional_properties[key]
|
|
62
|
+
|
|
63
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
64
|
+
self.additional_properties[key] = value
|
|
65
|
+
|
|
66
|
+
def __delitem__(self, key: str) -> None:
|
|
67
|
+
del self.additional_properties[key]
|
|
68
|
+
|
|
69
|
+
def __contains__(self, key: str) -> bool:
|
|
70
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
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
|
+
if TYPE_CHECKING:
|
|
12
|
+
from ..models.user_role import UserRole
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
T = TypeVar("T", bound="AuthUser")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@_attrs_define
|
|
19
|
+
class AuthUser:
|
|
20
|
+
"""Authenticated user information
|
|
21
|
+
|
|
22
|
+
Attributes:
|
|
23
|
+
id (int | Unset): User ID
|
|
24
|
+
username (str | Unset): User's display name
|
|
25
|
+
email (str | Unset): User's email address
|
|
26
|
+
roles (list[UserRole] | Unset): User's roles
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
id: int | Unset = UNSET
|
|
30
|
+
username: str | Unset = UNSET
|
|
31
|
+
email: str | Unset = UNSET
|
|
32
|
+
roles: list[UserRole] | Unset = UNSET
|
|
33
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
34
|
+
|
|
35
|
+
def to_dict(self) -> dict[str, Any]:
|
|
36
|
+
id = self.id
|
|
37
|
+
|
|
38
|
+
username = self.username
|
|
39
|
+
|
|
40
|
+
email = self.email
|
|
41
|
+
|
|
42
|
+
roles: list[dict[str, Any]] | Unset = UNSET
|
|
43
|
+
if not isinstance(self.roles, Unset):
|
|
44
|
+
roles = []
|
|
45
|
+
for roles_item_data in self.roles:
|
|
46
|
+
roles_item = roles_item_data.to_dict()
|
|
47
|
+
roles.append(roles_item)
|
|
48
|
+
|
|
49
|
+
field_dict: dict[str, Any] = {}
|
|
50
|
+
field_dict.update(self.additional_properties)
|
|
51
|
+
field_dict.update({})
|
|
52
|
+
if id is not UNSET:
|
|
53
|
+
field_dict["id"] = id
|
|
54
|
+
if username is not UNSET:
|
|
55
|
+
field_dict["username"] = username
|
|
56
|
+
if email is not UNSET:
|
|
57
|
+
field_dict["email"] = email
|
|
58
|
+
if roles is not UNSET:
|
|
59
|
+
field_dict["roles"] = roles
|
|
60
|
+
|
|
61
|
+
return field_dict
|
|
62
|
+
|
|
63
|
+
@classmethod
|
|
64
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
65
|
+
from ..models.user_role import UserRole
|
|
66
|
+
|
|
67
|
+
d = dict(src_dict)
|
|
68
|
+
id = d.pop("id", UNSET)
|
|
69
|
+
|
|
70
|
+
username = d.pop("username", UNSET)
|
|
71
|
+
|
|
72
|
+
email = d.pop("email", UNSET)
|
|
73
|
+
|
|
74
|
+
_roles = d.pop("roles", UNSET)
|
|
75
|
+
roles: list[UserRole] | Unset = UNSET
|
|
76
|
+
if _roles is not UNSET:
|
|
77
|
+
roles = []
|
|
78
|
+
for roles_item_data in _roles:
|
|
79
|
+
roles_item = UserRole.from_dict(roles_item_data)
|
|
80
|
+
|
|
81
|
+
roles.append(roles_item)
|
|
82
|
+
|
|
83
|
+
auth_user = cls(
|
|
84
|
+
id=id,
|
|
85
|
+
username=username,
|
|
86
|
+
email=email,
|
|
87
|
+
roles=roles,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
auth_user.additional_properties = d
|
|
91
|
+
return auth_user
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def additional_keys(self) -> list[str]:
|
|
95
|
+
return list(self.additional_properties.keys())
|
|
96
|
+
|
|
97
|
+
def __getitem__(self, key: str) -> Any:
|
|
98
|
+
return self.additional_properties[key]
|
|
99
|
+
|
|
100
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
101
|
+
self.additional_properties[key] = value
|
|
102
|
+
|
|
103
|
+
def __delitem__(self, key: str) -> None:
|
|
104
|
+
del self.additional_properties[key]
|
|
105
|
+
|
|
106
|
+
def __contains__(self, key: str) -> bool:
|
|
107
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
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
|
+
T = TypeVar("T", bound="BasicInfo")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class BasicInfo:
|
|
16
|
+
"""Basic anime/media information included in search results
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
id_anime (int): Unique identifier for the anime/media Example: 110316.
|
|
20
|
+
name_anime_romaji (str): Romaji transliteration of the anime name Example: Steins;Gate.
|
|
21
|
+
episode (int): Episode number where the segment appears Example: 1.
|
|
22
|
+
season (int): Season number where the segment appears Example: 1.
|
|
23
|
+
category (int): Media category (1=Anime, 2=Unknown, 3=J-Drama, 4=Audiobook) Example: 1.
|
|
24
|
+
name_anime_en (str | Unset): English translation of the anime name Example: Steins;Gate.
|
|
25
|
+
name_anime_jp (str | Unset): Original Japanese name of the anime Example: シュタインズ・ゲート.
|
|
26
|
+
cover (str | Unset): URL to the cover image Example: https://example.com/media/anime/steins-gate/cover.jpg.
|
|
27
|
+
banner (str | Unset): URL to the banner image Example: https://example.com/media/anime/steins-gate/banner.jpg.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
id_anime: int
|
|
31
|
+
name_anime_romaji: str
|
|
32
|
+
episode: int
|
|
33
|
+
season: int
|
|
34
|
+
category: int
|
|
35
|
+
name_anime_en: str | Unset = UNSET
|
|
36
|
+
name_anime_jp: str | Unset = UNSET
|
|
37
|
+
cover: str | Unset = UNSET
|
|
38
|
+
banner: str | Unset = UNSET
|
|
39
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
40
|
+
|
|
41
|
+
def to_dict(self) -> dict[str, Any]:
|
|
42
|
+
id_anime = self.id_anime
|
|
43
|
+
|
|
44
|
+
name_anime_romaji = self.name_anime_romaji
|
|
45
|
+
|
|
46
|
+
episode = self.episode
|
|
47
|
+
|
|
48
|
+
season = self.season
|
|
49
|
+
|
|
50
|
+
category = self.category
|
|
51
|
+
|
|
52
|
+
name_anime_en = self.name_anime_en
|
|
53
|
+
|
|
54
|
+
name_anime_jp = self.name_anime_jp
|
|
55
|
+
|
|
56
|
+
cover = self.cover
|
|
57
|
+
|
|
58
|
+
banner = self.banner
|
|
59
|
+
|
|
60
|
+
field_dict: dict[str, Any] = {}
|
|
61
|
+
field_dict.update(self.additional_properties)
|
|
62
|
+
field_dict.update(
|
|
63
|
+
{
|
|
64
|
+
"id_anime": id_anime,
|
|
65
|
+
"name_anime_romaji": name_anime_romaji,
|
|
66
|
+
"episode": episode,
|
|
67
|
+
"season": season,
|
|
68
|
+
"category": category,
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
if name_anime_en is not UNSET:
|
|
72
|
+
field_dict["name_anime_en"] = name_anime_en
|
|
73
|
+
if name_anime_jp is not UNSET:
|
|
74
|
+
field_dict["name_anime_jp"] = name_anime_jp
|
|
75
|
+
if cover is not UNSET:
|
|
76
|
+
field_dict["cover"] = cover
|
|
77
|
+
if banner is not UNSET:
|
|
78
|
+
field_dict["banner"] = banner
|
|
79
|
+
|
|
80
|
+
return field_dict
|
|
81
|
+
|
|
82
|
+
@classmethod
|
|
83
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
84
|
+
d = dict(src_dict)
|
|
85
|
+
id_anime = d.pop("id_anime")
|
|
86
|
+
|
|
87
|
+
name_anime_romaji = d.pop("name_anime_romaji")
|
|
88
|
+
|
|
89
|
+
episode = d.pop("episode")
|
|
90
|
+
|
|
91
|
+
season = d.pop("season")
|
|
92
|
+
|
|
93
|
+
category = d.pop("category")
|
|
94
|
+
|
|
95
|
+
name_anime_en = d.pop("name_anime_en", UNSET)
|
|
96
|
+
|
|
97
|
+
name_anime_jp = d.pop("name_anime_jp", UNSET)
|
|
98
|
+
|
|
99
|
+
cover = d.pop("cover", UNSET)
|
|
100
|
+
|
|
101
|
+
banner = d.pop("banner", UNSET)
|
|
102
|
+
|
|
103
|
+
basic_info = cls(
|
|
104
|
+
id_anime=id_anime,
|
|
105
|
+
name_anime_romaji=name_anime_romaji,
|
|
106
|
+
episode=episode,
|
|
107
|
+
season=season,
|
|
108
|
+
category=category,
|
|
109
|
+
name_anime_en=name_anime_en,
|
|
110
|
+
name_anime_jp=name_anime_jp,
|
|
111
|
+
cover=cover,
|
|
112
|
+
banner=banner,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
basic_info.additional_properties = d
|
|
116
|
+
return basic_info
|
|
117
|
+
|
|
118
|
+
@property
|
|
119
|
+
def additional_keys(self) -> list[str]:
|
|
120
|
+
return list(self.additional_properties.keys())
|
|
121
|
+
|
|
122
|
+
def __getitem__(self, key: str) -> Any:
|
|
123
|
+
return self.additional_properties[key]
|
|
124
|
+
|
|
125
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
126
|
+
self.additional_properties[key] = value
|
|
127
|
+
|
|
128
|
+
def __delitem__(self, key: str) -> None:
|
|
129
|
+
del self.additional_properties[key]
|
|
130
|
+
|
|
131
|
+
def __contains__(self, key: str) -> bool:
|
|
132
|
+
return key in self.additional_properties
|