wordlift-client 1.122.0__py3-none-any.whl → 1.124.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.
Files changed (29) hide show
  1. wordlift_client/__init__.py +18 -1
  2. wordlift_client/api/__init__.py +1 -0
  3. wordlift_client/api/audit_api.py +315 -0
  4. wordlift_client/api/google_search_console_api.py +275 -0
  5. wordlift_client/api_client.py +1 -1
  6. wordlift_client/configuration.py +1 -1
  7. wordlift_client/models/__init__.py +16 -0
  8. wordlift_client/models/account_stats.py +3 -1
  9. wordlift_client/models/audit_data.py +166 -0
  10. wordlift_client/models/audit_request.py +88 -0
  11. wordlift_client/models/audit_response.py +94 -0
  12. wordlift_client/models/automation_readiness.py +102 -0
  13. wordlift_client/models/content_structure.py +103 -0
  14. wordlift_client/models/create_url_inspection_request.py +88 -0
  15. wordlift_client/models/error_response.py +90 -0
  16. wordlift_client/models/image_accessibility.py +107 -0
  17. wordlift_client/models/js_rendering.py +130 -0
  18. wordlift_client/models/quick_win.py +102 -0
  19. wordlift_client/models/seo_fundamentals.py +116 -0
  20. wordlift_client/models/site_files.py +130 -0
  21. wordlift_client/models/site_files_bot_access.py +122 -0
  22. wordlift_client/models/structured_data.py +106 -0
  23. wordlift_client/models/validation_error1.py +96 -0
  24. wordlift_client/models/validation_error1_detail_inner.py +92 -0
  25. {wordlift_client-1.122.0.dist-info → wordlift_client-1.124.0.dist-info}/METADATA +1 -1
  26. {wordlift_client-1.122.0.dist-info → wordlift_client-1.124.0.dist-info}/RECORD +29 -12
  27. {wordlift_client-1.122.0.dist-info → wordlift_client-1.124.0.dist-info}/LICENSE +0 -0
  28. {wordlift_client-1.122.0.dist-info → wordlift_client-1.124.0.dist-info}/WHEEL +0 -0
  29. {wordlift_client-1.122.0.dist-info → wordlift_client-1.124.0.dist-info}/top_level.txt +0 -0
@@ -20,6 +20,7 @@ from typing_extensions import Annotated
20
20
  from pydantic import Field, StrictInt, StrictStr
21
21
  from typing import List, Optional
22
22
  from typing_extensions import Annotated
23
+ from wordlift_client.models.create_url_inspection_request import CreateUrlInspectionRequest
23
24
  from wordlift_client.models.page_website import PageWebsite
24
25
  from wordlift_client.models.page_website_search import PageWebsiteSearch
25
26
 
@@ -41,6 +42,280 @@ class GoogleSearchConsoleApi:
41
42
  self.api_client = api_client
42
43
 
43
44
 
45
+ @validate_call
46
+ async def create_url_inspection(
47
+ self,
48
+ create_url_inspection_request: CreateUrlInspectionRequest,
49
+ _request_timeout: Union[
50
+ None,
51
+ Annotated[StrictFloat, Field(gt=0)],
52
+ Tuple[
53
+ Annotated[StrictFloat, Field(gt=0)],
54
+ Annotated[StrictFloat, Field(gt=0)]
55
+ ]
56
+ ] = None,
57
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
58
+ _content_type: Optional[StrictStr] = None,
59
+ _headers: Optional[Dict[StrictStr, Any]] = None,
60
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
61
+ ) -> str:
62
+ """Create
63
+
64
+ Inspect a URL using the Google Search Console connected to the authenticated account.
65
+
66
+ :param create_url_inspection_request: (required)
67
+ :type create_url_inspection_request: CreateUrlInspectionRequest
68
+ :param _request_timeout: timeout setting for this request. If one
69
+ number provided, it will be total request
70
+ timeout. It can also be a pair (tuple) of
71
+ (connection, read) timeouts.
72
+ :type _request_timeout: int, tuple(int, int), optional
73
+ :param _request_auth: set to override the auth_settings for an a single
74
+ request; this effectively ignores the
75
+ authentication in the spec for a single request.
76
+ :type _request_auth: dict, optional
77
+ :param _content_type: force content-type for the request.
78
+ :type _content_type: str, Optional
79
+ :param _headers: set to override the headers for a single
80
+ request; this effectively ignores the headers
81
+ in the spec for a single request.
82
+ :type _headers: dict, optional
83
+ :param _host_index: set to override the host_index for a single
84
+ request; this effectively ignores the host_index
85
+ in the spec for a single request.
86
+ :type _host_index: int, optional
87
+ :return: Returns the result object.
88
+ """ # noqa: E501
89
+
90
+ _param = self._create_url_inspection_serialize(
91
+ create_url_inspection_request=create_url_inspection_request,
92
+ _request_auth=_request_auth,
93
+ _content_type=_content_type,
94
+ _headers=_headers,
95
+ _host_index=_host_index
96
+ )
97
+
98
+ _response_types_map: Dict[str, Optional[str]] = {
99
+ '200': "str",
100
+ '301': None,
101
+ }
102
+ response_data = await self.api_client.call_api(
103
+ *_param,
104
+ _request_timeout=_request_timeout
105
+ )
106
+ await response_data.read()
107
+ return self.api_client.response_deserialize(
108
+ response_data=response_data,
109
+ response_types_map=_response_types_map,
110
+ ).data
111
+
112
+
113
+ @validate_call
114
+ async def create_url_inspection_with_http_info(
115
+ self,
116
+ create_url_inspection_request: CreateUrlInspectionRequest,
117
+ _request_timeout: Union[
118
+ None,
119
+ Annotated[StrictFloat, Field(gt=0)],
120
+ Tuple[
121
+ Annotated[StrictFloat, Field(gt=0)],
122
+ Annotated[StrictFloat, Field(gt=0)]
123
+ ]
124
+ ] = None,
125
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
126
+ _content_type: Optional[StrictStr] = None,
127
+ _headers: Optional[Dict[StrictStr, Any]] = None,
128
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
129
+ ) -> ApiResponse[str]:
130
+ """Create
131
+
132
+ Inspect a URL using the Google Search Console connected to the authenticated account.
133
+
134
+ :param create_url_inspection_request: (required)
135
+ :type create_url_inspection_request: CreateUrlInspectionRequest
136
+ :param _request_timeout: timeout setting for this request. If one
137
+ number provided, it will be total request
138
+ timeout. It can also be a pair (tuple) of
139
+ (connection, read) timeouts.
140
+ :type _request_timeout: int, tuple(int, int), optional
141
+ :param _request_auth: set to override the auth_settings for an a single
142
+ request; this effectively ignores the
143
+ authentication in the spec for a single request.
144
+ :type _request_auth: dict, optional
145
+ :param _content_type: force content-type for the request.
146
+ :type _content_type: str, Optional
147
+ :param _headers: set to override the headers for a single
148
+ request; this effectively ignores the headers
149
+ in the spec for a single request.
150
+ :type _headers: dict, optional
151
+ :param _host_index: set to override the host_index for a single
152
+ request; this effectively ignores the host_index
153
+ in the spec for a single request.
154
+ :type _host_index: int, optional
155
+ :return: Returns the result object.
156
+ """ # noqa: E501
157
+
158
+ _param = self._create_url_inspection_serialize(
159
+ create_url_inspection_request=create_url_inspection_request,
160
+ _request_auth=_request_auth,
161
+ _content_type=_content_type,
162
+ _headers=_headers,
163
+ _host_index=_host_index
164
+ )
165
+
166
+ _response_types_map: Dict[str, Optional[str]] = {
167
+ '200': "str",
168
+ '301': None,
169
+ }
170
+ response_data = await self.api_client.call_api(
171
+ *_param,
172
+ _request_timeout=_request_timeout
173
+ )
174
+ await response_data.read()
175
+ return self.api_client.response_deserialize(
176
+ response_data=response_data,
177
+ response_types_map=_response_types_map,
178
+ )
179
+
180
+
181
+ @validate_call
182
+ async def create_url_inspection_without_preload_content(
183
+ self,
184
+ create_url_inspection_request: CreateUrlInspectionRequest,
185
+ _request_timeout: Union[
186
+ None,
187
+ Annotated[StrictFloat, Field(gt=0)],
188
+ Tuple[
189
+ Annotated[StrictFloat, Field(gt=0)],
190
+ Annotated[StrictFloat, Field(gt=0)]
191
+ ]
192
+ ] = None,
193
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
194
+ _content_type: Optional[StrictStr] = None,
195
+ _headers: Optional[Dict[StrictStr, Any]] = None,
196
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
197
+ ) -> RESTResponseType:
198
+ """Create
199
+
200
+ Inspect a URL using the Google Search Console connected to the authenticated account.
201
+
202
+ :param create_url_inspection_request: (required)
203
+ :type create_url_inspection_request: CreateUrlInspectionRequest
204
+ :param _request_timeout: timeout setting for this request. If one
205
+ number provided, it will be total request
206
+ timeout. It can also be a pair (tuple) of
207
+ (connection, read) timeouts.
208
+ :type _request_timeout: int, tuple(int, int), optional
209
+ :param _request_auth: set to override the auth_settings for an a single
210
+ request; this effectively ignores the
211
+ authentication in the spec for a single request.
212
+ :type _request_auth: dict, optional
213
+ :param _content_type: force content-type for the request.
214
+ :type _content_type: str, Optional
215
+ :param _headers: set to override the headers for a single
216
+ request; this effectively ignores the headers
217
+ in the spec for a single request.
218
+ :type _headers: dict, optional
219
+ :param _host_index: set to override the host_index for a single
220
+ request; this effectively ignores the host_index
221
+ in the spec for a single request.
222
+ :type _host_index: int, optional
223
+ :return: Returns the result object.
224
+ """ # noqa: E501
225
+
226
+ _param = self._create_url_inspection_serialize(
227
+ create_url_inspection_request=create_url_inspection_request,
228
+ _request_auth=_request_auth,
229
+ _content_type=_content_type,
230
+ _headers=_headers,
231
+ _host_index=_host_index
232
+ )
233
+
234
+ _response_types_map: Dict[str, Optional[str]] = {
235
+ '200': "str",
236
+ '301': None,
237
+ }
238
+ response_data = await self.api_client.call_api(
239
+ *_param,
240
+ _request_timeout=_request_timeout
241
+ )
242
+ return response_data.response
243
+
244
+
245
+ def _create_url_inspection_serialize(
246
+ self,
247
+ create_url_inspection_request,
248
+ _request_auth,
249
+ _content_type,
250
+ _headers,
251
+ _host_index,
252
+ ) -> RequestSerialized:
253
+
254
+ _host = None
255
+
256
+ _collection_formats: Dict[str, str] = {
257
+ }
258
+
259
+ _path_params: Dict[str, str] = {}
260
+ _query_params: List[Tuple[str, str]] = []
261
+ _header_params: Dict[str, Optional[str]] = _headers or {}
262
+ _form_params: List[Tuple[str, str]] = []
263
+ _files: Dict[str, Union[str, bytes]] = {}
264
+ _body_params: Optional[bytes] = None
265
+
266
+ # process the path parameters
267
+ # process the query parameters
268
+ # process the header parameters
269
+ # process the form parameters
270
+ # process the body parameter
271
+ if create_url_inspection_request is not None:
272
+ _body_params = create_url_inspection_request
273
+
274
+
275
+ # set the HTTP header `Accept`
276
+ _header_params['Accept'] = self.api_client.select_header_accept(
277
+ [
278
+ 'application/json'
279
+ ]
280
+ )
281
+
282
+ # set the HTTP header `Content-Type`
283
+ if _content_type:
284
+ _header_params['Content-Type'] = _content_type
285
+ else:
286
+ _default_content_type = (
287
+ self.api_client.select_header_content_type(
288
+ [
289
+ 'application/json'
290
+ ]
291
+ )
292
+ )
293
+ if _default_content_type is not None:
294
+ _header_params['Content-Type'] = _default_content_type
295
+
296
+ # authentication setting
297
+ _auth_settings: List[str] = [
298
+ 'ApiKey'
299
+ ]
300
+
301
+ return self.api_client.param_serialize(
302
+ method='POST',
303
+ resource_path='/gsc/url-inspections',
304
+ path_params=_path_params,
305
+ query_params=_query_params,
306
+ header_params=_header_params,
307
+ body=_body_params,
308
+ post_params=_form_params,
309
+ files=_files,
310
+ auth_settings=_auth_settings,
311
+ collection_formats=_collection_formats,
312
+ _host=_host,
313
+ _request_auth=_request_auth
314
+ )
315
+
316
+
317
+
318
+
44
319
  @validate_call
45
320
  async def list_website_search(
46
321
  self,
@@ -89,7 +89,7 @@ class ApiClient:
89
89
  self.default_headers[header_name] = header_value
90
90
  self.cookie = cookie
91
91
  # Set default User-Agent.
92
- self.user_agent = 'OpenAPI-Generator/1.122.0/python'
92
+ self.user_agent = 'OpenAPI-Generator/1.124.0/python'
93
93
  self.client_side_validation = configuration.client_side_validation
94
94
 
95
95
  async def __aenter__(self):
@@ -426,7 +426,7 @@ conf = wordlift_client.Configuration(
426
426
  "OS: {env}\n"\
427
427
  "Python Version: {pyversion}\n"\
428
428
  "Version of the API: 1.0\n"\
429
- "SDK Package Version: 1.122.0".\
429
+ "SDK Package Version: 1.124.0".\
430
430
  format(env=sys.platform, pyversion=sys.version)
431
431
 
432
432
  def get_host_settings(self):
@@ -32,10 +32,14 @@ from wordlift_client.models.anchor_text import AnchorText
32
32
  from wordlift_client.models.annotation import Annotation
33
33
  from wordlift_client.models.ask_request import AskRequest
34
34
  from wordlift_client.models.ask_response import AskResponse
35
+ from wordlift_client.models.audit_data import AuditData
36
+ from wordlift_client.models.audit_request import AuditRequest
37
+ from wordlift_client.models.audit_response import AuditResponse
35
38
  from wordlift_client.models.author_request import AuthorRequest
36
39
  from wordlift_client.models.authorization import Authorization
37
40
  from wordlift_client.models.authorization_status import AuthorizationStatus
38
41
  from wordlift_client.models.autocomplete_result import AutocompleteResult
42
+ from wordlift_client.models.automation_readiness import AutomationReadiness
39
43
  from wordlift_client.models.batch_request import BatchRequest
40
44
  from wordlift_client.models.botify_crawl_import_request import BotifyCrawlImportRequest
41
45
  from wordlift_client.models.build_authorize_uri_request import BuildAuthorizeUriRequest
@@ -60,9 +64,11 @@ from wordlift_client.models.content_expansion_response import ContentExpansionRe
60
64
  from wordlift_client.models.content_generation import ContentGeneration
61
65
  from wordlift_client.models.content_generation_request import ContentGenerationRequest
62
66
  from wordlift_client.models.content_generation_stats import ContentGenerationStats
67
+ from wordlift_client.models.content_structure import ContentStructure
63
68
  from wordlift_client.models.create_embeddings_input import CreateEmbeddingsInput
64
69
  from wordlift_client.models.create_seo_score200_response import CreateSEOScore200Response
65
70
  from wordlift_client.models.create_seo_score_request import CreateSEOScoreRequest
71
+ from wordlift_client.models.create_url_inspection_request import CreateUrlInspectionRequest
66
72
  from wordlift_client.models.diagnostic_plugin import DiagnosticPlugin
67
73
  from wordlift_client.models.diagnostic_plugin_request import DiagnosticPluginRequest
68
74
  from wordlift_client.models.domain_validation_request import DomainValidationRequest
@@ -73,6 +79,7 @@ from wordlift_client.models.entity1 import Entity1
73
79
  from wordlift_client.models.entity_gap_request import EntityGapRequest
74
80
  from wordlift_client.models.entity_match import EntityMatch
75
81
  from wordlift_client.models.entity_patch_request import EntityPatchRequest
82
+ from wordlift_client.models.error_response import ErrorResponse
76
83
  from wordlift_client.models.event import Event
77
84
  from wordlift_client.models.exchange_auth_code_request import ExchangeAuthCodeRequest
78
85
  from wordlift_client.models.exchange_auth_code_response import ExchangeAuthCodeResponse
@@ -84,6 +91,7 @@ from wordlift_client.models.graphql_request import GraphqlRequest
84
91
  from wordlift_client.models.http_validation_error import HTTPValidationError
85
92
  from wordlift_client.models.html import Html
86
93
  from wordlift_client.models.image import Image
94
+ from wordlift_client.models.image_accessibility import ImageAccessibility
87
95
  from wordlift_client.models.image_to_text_request import ImageToTextRequest
88
96
  from wordlift_client.models.image_to_text_response import ImageToTextResponse
89
97
  from wordlift_client.models.include_exclude import IncludeExclude
@@ -94,6 +102,7 @@ from wordlift_client.models.internal_link_destination import InternalLinkDestina
94
102
  from wordlift_client.models.internal_link_request import InternalLinkRequest
95
103
  from wordlift_client.models.internal_link_source import InternalLinkSource
96
104
  from wordlift_client.models.item import Item
105
+ from wordlift_client.models.js_rendering import JsRendering
97
106
  from wordlift_client.models.kg_embedding_request import KgEmbeddingRequest
98
107
  from wordlift_client.models.kg_embedding_response import KgEmbeddingResponse
99
108
  from wordlift_client.models.level_enum import LevelEnum
@@ -141,6 +150,7 @@ from wordlift_client.models.properties import Properties
141
150
  from wordlift_client.models.properties1 import Properties1
142
151
  from wordlift_client.models.question_and_answer import QuestionAndAnswer
143
152
  from wordlift_client.models.question_and_answer_request import QuestionAndAnswerRequest
153
+ from wordlift_client.models.quick_win import QuickWin
144
154
  from wordlift_client.models.rank_entities import RankEntities
145
155
  from wordlift_client.models.record import Record
146
156
  from wordlift_client.models.render_request import RenderRequest
@@ -154,9 +164,13 @@ from wordlift_client.models.response2 import Response2
154
164
  from wordlift_client.models.rule import Rule
155
165
  from wordlift_client.models.rule_request import RuleRequest
156
166
  from wordlift_client.models.scope import Scope
167
+ from wordlift_client.models.seo_fundamentals import SeoFundamentals
168
+ from wordlift_client.models.site_files import SiteFiles
169
+ from wordlift_client.models.site_files_bot_access import SiteFilesBotAccess
157
170
  from wordlift_client.models.sitemap_import_request import SitemapImportRequest
158
171
  from wordlift_client.models.smart_content import SmartContent
159
172
  from wordlift_client.models.smart_content_request import SmartContentRequest
173
+ from wordlift_client.models.structured_data import StructuredData
160
174
  from wordlift_client.models.submit_fact_check200_response import SubmitFactCheck200Response
161
175
  from wordlift_client.models.submit_fact_check_request import SubmitFactCheckRequest
162
176
  from wordlift_client.models.token_response import TokenResponse
@@ -168,6 +182,8 @@ from wordlift_client.models.update_record_request import UpdateRecordRequest
168
182
  from wordlift_client.models.update_records_request import UpdateRecordsRequest
169
183
  from wordlift_client.models.update_site_url_request import UpdateSiteUrlRequest
170
184
  from wordlift_client.models.validation_error import ValidationError
185
+ from wordlift_client.models.validation_error1 import ValidationError1
186
+ from wordlift_client.models.validation_error1_detail_inner import ValidationError1DetailInner
171
187
  from wordlift_client.models.validation_fix import ValidationFix
172
188
  from wordlift_client.models.validation_result import ValidationResult
173
189
  from wordlift_client.models.validation_type_enum import ValidationTypeEnum
@@ -27,11 +27,12 @@ class AccountStats(BaseModel):
27
27
  """
28
28
  The Account statistics
29
29
  """ # noqa: E501
30
+ account_id: StrictInt = Field(description="The account ID.")
30
31
  entities: StrictInt = Field(description="The number of entities.")
31
32
  entities_with_url: StrictInt = Field(description="The number of entities with URL.")
32
33
  product_groups: StrictInt = Field(description="The number of product groups in the KG.")
33
34
  products: StrictInt = Field(description="The number of products in the KG.")
34
- __properties: ClassVar[List[str]] = ["entities", "entities_with_url", "product_groups", "products"]
35
+ __properties: ClassVar[List[str]] = ["account_id", "entities", "entities_with_url", "product_groups", "products"]
35
36
 
36
37
  model_config = ConfigDict(
37
38
  populate_by_name=True,
@@ -84,6 +85,7 @@ class AccountStats(BaseModel):
84
85
  return cls.model_validate(obj)
85
86
 
86
87
  _obj = cls.model_validate({
88
+ "account_id": obj.get("account_id"),
87
89
  "entities": obj.get("entities"),
88
90
  "entities_with_url": obj.get("entities_with_url"),
89
91
  "product_groups": obj.get("product_groups"),
@@ -0,0 +1,166 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ WordLift API
5
+
6
+ WordLift API
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Contact: hello@wordlift.io
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from datetime import datetime
22
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
23
+ from typing import Any, ClassVar, Dict, List, Optional
24
+ from typing_extensions import Annotated
25
+ from wordlift_client.models.automation_readiness import AutomationReadiness
26
+ from wordlift_client.models.content_structure import ContentStructure
27
+ from wordlift_client.models.image_accessibility import ImageAccessibility
28
+ from wordlift_client.models.js_rendering import JsRendering
29
+ from wordlift_client.models.quick_win import QuickWin
30
+ from wordlift_client.models.seo_fundamentals import SeoFundamentals
31
+ from wordlift_client.models.site_files import SiteFiles
32
+ from wordlift_client.models.structured_data import StructuredData
33
+ from typing import Optional, Set
34
+ from typing_extensions import Self
35
+
36
+ class AuditData(BaseModel):
37
+ """
38
+ AuditData
39
+ """ # noqa: E501
40
+ url: Optional[StrictStr] = Field(default=None, description="The audited URL (may include trailing slash)")
41
+ domain: Optional[StrictStr] = Field(default=None, description="The base domain of the audited URL")
42
+ timestamp: Optional[datetime] = Field(default=None, description="ISO 8601 timestamp of when the audit was performed")
43
+ overall_score: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field(default=None, description="Overall SEO and AI-readiness score (0-100)", alias="overallScore")
44
+ summary: Optional[StrictStr] = Field(default=None, description="High-level summary of the audit findings")
45
+ site_files: Optional[SiteFiles] = Field(default=None, alias="siteFiles")
46
+ seo_fundamentals: Optional[SeoFundamentals] = Field(default=None, alias="seoFundamentals")
47
+ structured_data: Optional[StructuredData] = Field(default=None, alias="structuredData")
48
+ content_structure: Optional[ContentStructure] = Field(default=None, alias="contentStructure")
49
+ image_accessibility: Optional[ImageAccessibility] = Field(default=None, alias="imageAccessibility")
50
+ automation_readiness: Optional[AutomationReadiness] = Field(default=None, alias="automationReadiness")
51
+ js_rendering: Optional[JsRendering] = Field(default=None, alias="jsRendering")
52
+ quick_wins: Optional[List[QuickWin]] = Field(default=None, alias="quickWins")
53
+ status: Optional[StrictStr] = Field(default=None, description="Status of the audit process")
54
+ account_id: Optional[StrictInt] = Field(default=None, description="Account ID associated with the audit", alias="accountId")
55
+ account_url: Optional[StrictStr] = Field(default=None, description="Account URL associated with the audit", alias="accountUrl")
56
+ __properties: ClassVar[List[str]] = ["url", "domain", "timestamp", "overallScore", "summary", "siteFiles", "seoFundamentals", "structuredData", "contentStructure", "imageAccessibility", "automationReadiness", "jsRendering", "quickWins", "status", "accountId", "accountUrl"]
57
+
58
+ @field_validator('status')
59
+ def status_validate_enum(cls, value):
60
+ """Validates the enum"""
61
+ if value is None:
62
+ return value
63
+
64
+ if value not in set(['completed', 'pending', 'failed']):
65
+ raise ValueError("must be one of enum values ('completed', 'pending', 'failed')")
66
+ return value
67
+
68
+ model_config = ConfigDict(
69
+ populate_by_name=True,
70
+ validate_assignment=True,
71
+ protected_namespaces=(),
72
+ )
73
+
74
+
75
+ def to_str(self) -> str:
76
+ """Returns the string representation of the model using alias"""
77
+ return pprint.pformat(self.model_dump(by_alias=True))
78
+
79
+ def to_json(self) -> str:
80
+ """Returns the JSON representation of the model using alias"""
81
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
82
+ return json.dumps(self.to_dict())
83
+
84
+ @classmethod
85
+ def from_json(cls, json_str: str) -> Optional[Self]:
86
+ """Create an instance of AuditData from a JSON string"""
87
+ return cls.from_dict(json.loads(json_str))
88
+
89
+ def to_dict(self) -> Dict[str, Any]:
90
+ """Return the dictionary representation of the model using alias.
91
+
92
+ This has the following differences from calling pydantic's
93
+ `self.model_dump(by_alias=True)`:
94
+
95
+ * `None` is only added to the output dict for nullable fields that
96
+ were set at model initialization. Other fields with value `None`
97
+ are ignored.
98
+ """
99
+ excluded_fields: Set[str] = set([
100
+ ])
101
+
102
+ _dict = self.model_dump(
103
+ by_alias=True,
104
+ exclude=excluded_fields,
105
+ exclude_none=True,
106
+ )
107
+ # override the default output from pydantic by calling `to_dict()` of site_files
108
+ if self.site_files:
109
+ _dict['siteFiles'] = self.site_files.to_dict()
110
+ # override the default output from pydantic by calling `to_dict()` of seo_fundamentals
111
+ if self.seo_fundamentals:
112
+ _dict['seoFundamentals'] = self.seo_fundamentals.to_dict()
113
+ # override the default output from pydantic by calling `to_dict()` of structured_data
114
+ if self.structured_data:
115
+ _dict['structuredData'] = self.structured_data.to_dict()
116
+ # override the default output from pydantic by calling `to_dict()` of content_structure
117
+ if self.content_structure:
118
+ _dict['contentStructure'] = self.content_structure.to_dict()
119
+ # override the default output from pydantic by calling `to_dict()` of image_accessibility
120
+ if self.image_accessibility:
121
+ _dict['imageAccessibility'] = self.image_accessibility.to_dict()
122
+ # override the default output from pydantic by calling `to_dict()` of automation_readiness
123
+ if self.automation_readiness:
124
+ _dict['automationReadiness'] = self.automation_readiness.to_dict()
125
+ # override the default output from pydantic by calling `to_dict()` of js_rendering
126
+ if self.js_rendering:
127
+ _dict['jsRendering'] = self.js_rendering.to_dict()
128
+ # override the default output from pydantic by calling `to_dict()` of each item in quick_wins (list)
129
+ _items = []
130
+ if self.quick_wins:
131
+ for _item in self.quick_wins:
132
+ if _item:
133
+ _items.append(_item.to_dict())
134
+ _dict['quickWins'] = _items
135
+ return _dict
136
+
137
+ @classmethod
138
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
139
+ """Create an instance of AuditData from a dict"""
140
+ if obj is None:
141
+ return None
142
+
143
+ if not isinstance(obj, dict):
144
+ return cls.model_validate(obj)
145
+
146
+ _obj = cls.model_validate({
147
+ "url": obj.get("url"),
148
+ "domain": obj.get("domain"),
149
+ "timestamp": obj.get("timestamp"),
150
+ "overallScore": obj.get("overallScore"),
151
+ "summary": obj.get("summary"),
152
+ "siteFiles": SiteFiles.from_dict(obj["siteFiles"]) if obj.get("siteFiles") is not None else None,
153
+ "seoFundamentals": SeoFundamentals.from_dict(obj["seoFundamentals"]) if obj.get("seoFundamentals") is not None else None,
154
+ "structuredData": StructuredData.from_dict(obj["structuredData"]) if obj.get("structuredData") is not None else None,
155
+ "contentStructure": ContentStructure.from_dict(obj["contentStructure"]) if obj.get("contentStructure") is not None else None,
156
+ "imageAccessibility": ImageAccessibility.from_dict(obj["imageAccessibility"]) if obj.get("imageAccessibility") is not None else None,
157
+ "automationReadiness": AutomationReadiness.from_dict(obj["automationReadiness"]) if obj.get("automationReadiness") is not None else None,
158
+ "jsRendering": JsRendering.from_dict(obj["jsRendering"]) if obj.get("jsRendering") is not None else None,
159
+ "quickWins": [QuickWin.from_dict(_item) for _item in obj["quickWins"]] if obj.get("quickWins") is not None else None,
160
+ "status": obj.get("status"),
161
+ "accountId": obj.get("accountId"),
162
+ "accountUrl": obj.get("accountUrl")
163
+ })
164
+ return _obj
165
+
166
+
@@ -0,0 +1,88 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ WordLift API
5
+
6
+ WordLift API
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Contact: hello@wordlift.io
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class AuditRequest(BaseModel):
27
+ """
28
+ AuditRequest
29
+ """ # noqa: E501
30
+ url: StrictStr = Field(description="The full URL of the website to audit")
31
+ __properties: ClassVar[List[str]] = ["url"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of AuditRequest from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of AuditRequest from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "url": obj.get("url")
85
+ })
86
+ return _obj
87
+
88
+