wordlift-client 1.133.0__py3-none-any.whl → 1.135.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 (31) hide show
  1. wordlift_client/__init__.py +11 -3
  2. wordlift_client/api/audit_api.py +15 -3
  3. wordlift_client/api/query_fan_out_api.py +16 -16
  4. wordlift_client/api_client.py +1 -1
  5. wordlift_client/configuration.py +1 -1
  6. wordlift_client/models/__init__.py +10 -2
  7. wordlift_client/models/ai_visibility_analysis_result.py +1 -3
  8. wordlift_client/models/analyze_content_request.py +105 -0
  9. wordlift_client/models/audit_data.py +27 -11
  10. wordlift_client/models/automation_issue.py +110 -0
  11. wordlift_client/models/automation_readiness.py +16 -5
  12. wordlift_client/models/bot_status.py +102 -0
  13. wordlift_client/models/content_freshness.py +106 -0
  14. wordlift_client/models/content_structure.py +10 -6
  15. wordlift_client/models/detected_schema.py +100 -0
  16. wordlift_client/models/error_response.py +5 -3
  17. wordlift_client/models/html_semantics.py +100 -0
  18. wordlift_client/models/image_accessibility.py +9 -7
  19. wordlift_client/models/internal_linking.py +100 -0
  20. wordlift_client/models/js_rendering.py +8 -17
  21. wordlift_client/models/quick_wins_result.py +110 -0
  22. wordlift_client/models/schema_recommendation.py +90 -0
  23. wordlift_client/models/seo_fundamentals.py +6 -3
  24. wordlift_client/models/site_files.py +25 -10
  25. wordlift_client/models/structured_data.py +28 -5
  26. wordlift_client/models/well_known_files.py +98 -0
  27. {wordlift_client-1.133.0.dist-info → wordlift_client-1.135.0.dist-info}/METADATA +1 -1
  28. {wordlift_client-1.133.0.dist-info → wordlift_client-1.135.0.dist-info}/RECORD +31 -21
  29. {wordlift_client-1.133.0.dist-info → wordlift_client-1.135.0.dist-info}/WHEEL +1 -1
  30. {wordlift_client-1.133.0.dist-info → wordlift_client-1.135.0.dist-info}/LICENSE +0 -0
  31. {wordlift_client-1.133.0.dist-info → wordlift_client-1.135.0.dist-info}/top_level.txt +0 -0
@@ -15,7 +15,7 @@
15
15
  """ # noqa: E501
16
16
 
17
17
 
18
- __version__ = "1.133.0"
18
+ __version__ = "1.135.0"
19
19
 
20
20
  # import apis into sdk package
21
21
  from wordlift_client.api.account_api import AccountApi
@@ -114,7 +114,7 @@ from wordlift_client.models.analyses_response_item import AnalysesResponseItem
114
114
  from wordlift_client.models.analytics_import_request import AnalyticsImportRequest
115
115
  from wordlift_client.models.analytics_sync import AnalyticsSync
116
116
  from wordlift_client.models.analytics_sync_request import AnalyticsSyncRequest
117
- from wordlift_client.models.analyze_url_request import AnalyzeURLRequest
117
+ from wordlift_client.models.analyze_content_request import AnalyzeContentRequest
118
118
  from wordlift_client.models.anchor_text import AnchorText
119
119
  from wordlift_client.models.annotation import Annotation
120
120
  from wordlift_client.models.ask_request import AskRequest
@@ -126,8 +126,10 @@ from wordlift_client.models.author_request import AuthorRequest
126
126
  from wordlift_client.models.authorization import Authorization
127
127
  from wordlift_client.models.authorization_status import AuthorizationStatus
128
128
  from wordlift_client.models.autocomplete_result import AutocompleteResult
129
+ from wordlift_client.models.automation_issue import AutomationIssue
129
130
  from wordlift_client.models.automation_readiness import AutomationReadiness
130
131
  from wordlift_client.models.batch_request import BatchRequest
132
+ from wordlift_client.models.bot_status import BotStatus
131
133
  from wordlift_client.models.botify_crawl_import_request import BotifyCrawlImportRequest
132
134
  from wordlift_client.models.build_authorize_uri_request import BuildAuthorizeUriRequest
133
135
  from wordlift_client.models.build_authorize_uri_response import BuildAuthorizeUriResponse
@@ -148,12 +150,14 @@ from wordlift_client.models.content_evaluation_response_quality_score_breakdown_
148
150
  from wordlift_client.models.content_evaluation_response_quality_score_breakdown_seo_top_entities_value_inner import ContentEvaluationResponseQualityScoreBreakdownSeoTopEntitiesValueInner
149
151
  from wordlift_client.models.content_expansion_request import ContentExpansionRequest
150
152
  from wordlift_client.models.content_expansion_response import ContentExpansionResponse
153
+ from wordlift_client.models.content_freshness import ContentFreshness
151
154
  from wordlift_client.models.content_generation import ContentGeneration
152
155
  from wordlift_client.models.content_generation_request import ContentGenerationRequest
153
156
  from wordlift_client.models.content_generation_stats import ContentGenerationStats
154
157
  from wordlift_client.models.content_structure import ContentStructure
155
158
  from wordlift_client.models.create_embeddings_input import CreateEmbeddingsInput
156
159
  from wordlift_client.models.create_url_inspection_request import CreateUrlInspectionRequest
160
+ from wordlift_client.models.detected_schema import DetectedSchema
157
161
  from wordlift_client.models.diagnostic_plugin import DiagnosticPlugin
158
162
  from wordlift_client.models.diagnostic_plugin_request import DiagnosticPluginRequest
159
163
  from wordlift_client.models.domain_validation_request import DomainValidationRequest
@@ -175,6 +179,7 @@ from wordlift_client.models.generate_sitemap_request import GenerateSitemapReque
175
179
  from wordlift_client.models.graphql_request import GraphqlRequest
176
180
  from wordlift_client.models.http_validation_error import HTTPValidationError
177
181
  from wordlift_client.models.html import Html
182
+ from wordlift_client.models.html_semantics import HtmlSemantics
178
183
  from wordlift_client.models.image import Image
179
184
  from wordlift_client.models.image_accessibility import ImageAccessibility
180
185
  from wordlift_client.models.include_exclude import IncludeExclude
@@ -184,6 +189,7 @@ from wordlift_client.models.internal_link import InternalLink
184
189
  from wordlift_client.models.internal_link_destination import InternalLinkDestination
185
190
  from wordlift_client.models.internal_link_request import InternalLinkRequest
186
191
  from wordlift_client.models.internal_link_source import InternalLinkSource
192
+ from wordlift_client.models.internal_linking import InternalLinking
187
193
  from wordlift_client.models.item import Item
188
194
  from wordlift_client.models.js_rendering import JsRendering
189
195
  from wordlift_client.models.kg_embedding_request import KgEmbeddingRequest
@@ -235,6 +241,7 @@ from wordlift_client.models.query_coverage_output import QueryCoverageOutput
235
241
  from wordlift_client.models.question_and_answer import QuestionAndAnswer
236
242
  from wordlift_client.models.question_and_answer_request import QuestionAndAnswerRequest
237
243
  from wordlift_client.models.quick_win import QuickWin
244
+ from wordlift_client.models.quick_wins_result import QuickWinsResult
238
245
  from wordlift_client.models.rank_entities import RankEntities
239
246
  from wordlift_client.models.record import Record
240
247
  from wordlift_client.models.render_request import RenderRequest
@@ -247,10 +254,10 @@ from wordlift_client.models.response1 import Response1
247
254
  from wordlift_client.models.response2 import Response2
248
255
  from wordlift_client.models.rule import Rule
249
256
  from wordlift_client.models.rule_request import RuleRequest
257
+ from wordlift_client.models.schema_recommendation import SchemaRecommendation
250
258
  from wordlift_client.models.scope import Scope
251
259
  from wordlift_client.models.seo_fundamentals import SeoFundamentals
252
260
  from wordlift_client.models.site_files import SiteFiles
253
- from wordlift_client.models.site_files_bot_access import SiteFilesBotAccess
254
261
  from wordlift_client.models.sitemap_import_request import SitemapImportRequest
255
262
  from wordlift_client.models.smart_content import SmartContent
256
263
  from wordlift_client.models.smart_content_request import SmartContentRequest
@@ -284,6 +291,7 @@ from wordlift_client.models.web_page_import_response import WebPageImportRespons
284
291
  from wordlift_client.models.webpage_properties import WebpageProperties
285
292
  from wordlift_client.models.website import Website
286
293
  from wordlift_client.models.website_search import WebsiteSearch
294
+ from wordlift_client.models.well_known_files import WellKnownFiles
287
295
  from wordlift_client.models.what_operand_lhs import WhatOperandLhs
288
296
  from wordlift_client.models.what_operator import WhatOperator
289
297
  from wordlift_client.models.when_operator import WhenOperator
@@ -57,7 +57,7 @@ class AuditApi:
57
57
  ) -> AuditResponse:
58
58
  """Website Audit
59
59
 
60
- Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: - Site files (robots.txt, llms.txt) - SEO fundamentals (title, description, headings) - Structured data (Schema.org, JSON-LD) - Content structure and semantic HTML - Image accessibility - Automation readiness for AI agents - JavaScript rendering and bot accessibility Returns an overall score (0-100) and detailed recommendations for improvement.
60
+ Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: - Site files (robots.txt, llms.txt, .well-known directory) - SEO fundamentals (title, description, headings) - Structured data (Schema.org, JSON-LD, Microdata) - Content structure and semantic HTML - Image accessibility - Automation readiness for AI agents - JavaScript rendering and bot accessibility - Content freshness (legacy field, status Unknown) - Internal linking (legacy field, status Unknown) - HTML semantics (legacy field, status Unknown) Returns an overall score (0-100) and detailed recommendations for improvement.
61
61
 
62
62
  :param audit_request: (required)
63
63
  :type audit_request: AuditRequest
@@ -93,8 +93,12 @@ class AuditApi:
93
93
 
94
94
  _response_types_map: Dict[str, Optional[str]] = {
95
95
  '200': "AuditResponse",
96
+ '400': "ErrorResponse",
96
97
  '401': "ErrorResponse",
98
+ '403': "ErrorResponse",
99
+ '404': "ErrorResponse",
97
100
  '422': "ValidationError1",
101
+ '500': "ErrorResponse",
98
102
  }
99
103
  response_data = await self.api_client.call_api(
100
104
  *_param,
@@ -126,7 +130,7 @@ class AuditApi:
126
130
  ) -> ApiResponse[AuditResponse]:
127
131
  """Website Audit
128
132
 
129
- Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: - Site files (robots.txt, llms.txt) - SEO fundamentals (title, description, headings) - Structured data (Schema.org, JSON-LD) - Content structure and semantic HTML - Image accessibility - Automation readiness for AI agents - JavaScript rendering and bot accessibility Returns an overall score (0-100) and detailed recommendations for improvement.
133
+ Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: - Site files (robots.txt, llms.txt, .well-known directory) - SEO fundamentals (title, description, headings) - Structured data (Schema.org, JSON-LD, Microdata) - Content structure and semantic HTML - Image accessibility - Automation readiness for AI agents - JavaScript rendering and bot accessibility - Content freshness (legacy field, status Unknown) - Internal linking (legacy field, status Unknown) - HTML semantics (legacy field, status Unknown) Returns an overall score (0-100) and detailed recommendations for improvement.
130
134
 
131
135
  :param audit_request: (required)
132
136
  :type audit_request: AuditRequest
@@ -162,8 +166,12 @@ class AuditApi:
162
166
 
163
167
  _response_types_map: Dict[str, Optional[str]] = {
164
168
  '200': "AuditResponse",
169
+ '400': "ErrorResponse",
165
170
  '401': "ErrorResponse",
171
+ '403': "ErrorResponse",
172
+ '404': "ErrorResponse",
166
173
  '422': "ValidationError1",
174
+ '500': "ErrorResponse",
167
175
  }
168
176
  response_data = await self.api_client.call_api(
169
177
  *_param,
@@ -195,7 +203,7 @@ class AuditApi:
195
203
  ) -> RESTResponseType:
196
204
  """Website Audit
197
205
 
198
- Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: - Site files (robots.txt, llms.txt) - SEO fundamentals (title, description, headings) - Structured data (Schema.org, JSON-LD) - Content structure and semantic HTML - Image accessibility - Automation readiness for AI agents - JavaScript rendering and bot accessibility Returns an overall score (0-100) and detailed recommendations for improvement.
206
+ Performs a comprehensive SEO and AI-readiness audit of a specified URL. The audit analyzes: - Site files (robots.txt, llms.txt, .well-known directory) - SEO fundamentals (title, description, headings) - Structured data (Schema.org, JSON-LD, Microdata) - Content structure and semantic HTML - Image accessibility - Automation readiness for AI agents - JavaScript rendering and bot accessibility - Content freshness (legacy field, status Unknown) - Internal linking (legacy field, status Unknown) - HTML semantics (legacy field, status Unknown) Returns an overall score (0-100) and detailed recommendations for improvement.
199
207
 
200
208
  :param audit_request: (required)
201
209
  :type audit_request: AuditRequest
@@ -231,8 +239,12 @@ class AuditApi:
231
239
 
232
240
  _response_types_map: Dict[str, Optional[str]] = {
233
241
  '200': "AuditResponse",
242
+ '400': "ErrorResponse",
234
243
  '401': "ErrorResponse",
244
+ '403': "ErrorResponse",
245
+ '404': "ErrorResponse",
235
246
  '422': "ValidationError1",
247
+ '500': "ErrorResponse",
236
248
  }
237
249
  response_data = await self.api_client.call_api(
238
250
  *_param,
@@ -20,7 +20,7 @@ from typing_extensions import Annotated
20
20
  from pydantic import StrictStr
21
21
  from typing import Optional
22
22
  from wordlift_client.models.ai_visibility_analysis_result import AIVisibilityAnalysisResult
23
- from wordlift_client.models.analyze_url_request import AnalyzeURLRequest
23
+ from wordlift_client.models.analyze_content_request import AnalyzeContentRequest
24
24
 
25
25
  from wordlift_client.api_client import ApiClient, RequestSerialized
26
26
  from wordlift_client.api_response import ApiResponse
@@ -43,7 +43,7 @@ class QueryFanOutApi:
43
43
  @validate_call
44
44
  async def create_ai_visibility_audit(
45
45
  self,
46
- analyze_url_request: AnalyzeURLRequest,
46
+ analyze_content_request: AnalyzeContentRequest,
47
47
  authorization: Optional[StrictStr] = None,
48
48
  _request_timeout: Union[
49
49
  None,
@@ -61,8 +61,8 @@ class QueryFanOutApi:
61
61
  """Create AI visibility audits for Query Fan-Out
62
62
 
63
63
 
64
- :param analyze_url_request: (required)
65
- :type analyze_url_request: AnalyzeURLRequest
64
+ :param analyze_content_request: (required)
65
+ :type analyze_content_request: AnalyzeContentRequest
66
66
  :param authorization:
67
67
  :type authorization: str
68
68
  :param _request_timeout: timeout setting for this request. If one
@@ -88,7 +88,7 @@ class QueryFanOutApi:
88
88
  """ # noqa: E501
89
89
 
90
90
  _param = self._create_ai_visibility_audit_serialize(
91
- analyze_url_request=analyze_url_request,
91
+ analyze_content_request=analyze_content_request,
92
92
  authorization=authorization,
93
93
  _request_auth=_request_auth,
94
94
  _content_type=_content_type,
@@ -114,7 +114,7 @@ class QueryFanOutApi:
114
114
  @validate_call
115
115
  async def create_ai_visibility_audit_with_http_info(
116
116
  self,
117
- analyze_url_request: AnalyzeURLRequest,
117
+ analyze_content_request: AnalyzeContentRequest,
118
118
  authorization: Optional[StrictStr] = None,
119
119
  _request_timeout: Union[
120
120
  None,
@@ -132,8 +132,8 @@ class QueryFanOutApi:
132
132
  """Create AI visibility audits for Query Fan-Out
133
133
 
134
134
 
135
- :param analyze_url_request: (required)
136
- :type analyze_url_request: AnalyzeURLRequest
135
+ :param analyze_content_request: (required)
136
+ :type analyze_content_request: AnalyzeContentRequest
137
137
  :param authorization:
138
138
  :type authorization: str
139
139
  :param _request_timeout: timeout setting for this request. If one
@@ -159,7 +159,7 @@ class QueryFanOutApi:
159
159
  """ # noqa: E501
160
160
 
161
161
  _param = self._create_ai_visibility_audit_serialize(
162
- analyze_url_request=analyze_url_request,
162
+ analyze_content_request=analyze_content_request,
163
163
  authorization=authorization,
164
164
  _request_auth=_request_auth,
165
165
  _content_type=_content_type,
@@ -185,7 +185,7 @@ class QueryFanOutApi:
185
185
  @validate_call
186
186
  async def create_ai_visibility_audit_without_preload_content(
187
187
  self,
188
- analyze_url_request: AnalyzeURLRequest,
188
+ analyze_content_request: AnalyzeContentRequest,
189
189
  authorization: Optional[StrictStr] = None,
190
190
  _request_timeout: Union[
191
191
  None,
@@ -203,8 +203,8 @@ class QueryFanOutApi:
203
203
  """Create AI visibility audits for Query Fan-Out
204
204
 
205
205
 
206
- :param analyze_url_request: (required)
207
- :type analyze_url_request: AnalyzeURLRequest
206
+ :param analyze_content_request: (required)
207
+ :type analyze_content_request: AnalyzeContentRequest
208
208
  :param authorization:
209
209
  :type authorization: str
210
210
  :param _request_timeout: timeout setting for this request. If one
@@ -230,7 +230,7 @@ class QueryFanOutApi:
230
230
  """ # noqa: E501
231
231
 
232
232
  _param = self._create_ai_visibility_audit_serialize(
233
- analyze_url_request=analyze_url_request,
233
+ analyze_content_request=analyze_content_request,
234
234
  authorization=authorization,
235
235
  _request_auth=_request_auth,
236
236
  _content_type=_content_type,
@@ -251,7 +251,7 @@ class QueryFanOutApi:
251
251
 
252
252
  def _create_ai_visibility_audit_serialize(
253
253
  self,
254
- analyze_url_request,
254
+ analyze_content_request,
255
255
  authorization,
256
256
  _request_auth,
257
257
  _content_type,
@@ -278,8 +278,8 @@ class QueryFanOutApi:
278
278
  _header_params['authorization'] = authorization
279
279
  # process the form parameters
280
280
  # process the body parameter
281
- if analyze_url_request is not None:
282
- _body_params = analyze_url_request
281
+ if analyze_content_request is not None:
282
+ _body_params = analyze_content_request
283
283
 
284
284
 
285
285
  # set the HTTP header `Accept`
@@ -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.133.0/python'
92
+ self.user_agent = 'OpenAPI-Generator/1.135.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.133.0".\
429
+ "SDK Package Version: 1.135.0".\
430
430
  format(env=sys.platform, pyversion=sys.version)
431
431
 
432
432
  def get_host_settings(self):
@@ -29,7 +29,7 @@ from wordlift_client.models.analyses_response_item import AnalysesResponseItem
29
29
  from wordlift_client.models.analytics_import_request import AnalyticsImportRequest
30
30
  from wordlift_client.models.analytics_sync import AnalyticsSync
31
31
  from wordlift_client.models.analytics_sync_request import AnalyticsSyncRequest
32
- from wordlift_client.models.analyze_url_request import AnalyzeURLRequest
32
+ from wordlift_client.models.analyze_content_request import AnalyzeContentRequest
33
33
  from wordlift_client.models.anchor_text import AnchorText
34
34
  from wordlift_client.models.annotation import Annotation
35
35
  from wordlift_client.models.ask_request import AskRequest
@@ -41,8 +41,10 @@ from wordlift_client.models.author_request import AuthorRequest
41
41
  from wordlift_client.models.authorization import Authorization
42
42
  from wordlift_client.models.authorization_status import AuthorizationStatus
43
43
  from wordlift_client.models.autocomplete_result import AutocompleteResult
44
+ from wordlift_client.models.automation_issue import AutomationIssue
44
45
  from wordlift_client.models.automation_readiness import AutomationReadiness
45
46
  from wordlift_client.models.batch_request import BatchRequest
47
+ from wordlift_client.models.bot_status import BotStatus
46
48
  from wordlift_client.models.botify_crawl_import_request import BotifyCrawlImportRequest
47
49
  from wordlift_client.models.build_authorize_uri_request import BuildAuthorizeUriRequest
48
50
  from wordlift_client.models.build_authorize_uri_response import BuildAuthorizeUriResponse
@@ -63,12 +65,14 @@ from wordlift_client.models.content_evaluation_response_quality_score_breakdown_
63
65
  from wordlift_client.models.content_evaluation_response_quality_score_breakdown_seo_top_entities_value_inner import ContentEvaluationResponseQualityScoreBreakdownSeoTopEntitiesValueInner
64
66
  from wordlift_client.models.content_expansion_request import ContentExpansionRequest
65
67
  from wordlift_client.models.content_expansion_response import ContentExpansionResponse
68
+ from wordlift_client.models.content_freshness import ContentFreshness
66
69
  from wordlift_client.models.content_generation import ContentGeneration
67
70
  from wordlift_client.models.content_generation_request import ContentGenerationRequest
68
71
  from wordlift_client.models.content_generation_stats import ContentGenerationStats
69
72
  from wordlift_client.models.content_structure import ContentStructure
70
73
  from wordlift_client.models.create_embeddings_input import CreateEmbeddingsInput
71
74
  from wordlift_client.models.create_url_inspection_request import CreateUrlInspectionRequest
75
+ from wordlift_client.models.detected_schema import DetectedSchema
72
76
  from wordlift_client.models.diagnostic_plugin import DiagnosticPlugin
73
77
  from wordlift_client.models.diagnostic_plugin_request import DiagnosticPluginRequest
74
78
  from wordlift_client.models.domain_validation_request import DomainValidationRequest
@@ -90,6 +94,7 @@ from wordlift_client.models.generate_sitemap_request import GenerateSitemapReque
90
94
  from wordlift_client.models.graphql_request import GraphqlRequest
91
95
  from wordlift_client.models.http_validation_error import HTTPValidationError
92
96
  from wordlift_client.models.html import Html
97
+ from wordlift_client.models.html_semantics import HtmlSemantics
93
98
  from wordlift_client.models.image import Image
94
99
  from wordlift_client.models.image_accessibility import ImageAccessibility
95
100
  from wordlift_client.models.include_exclude import IncludeExclude
@@ -99,6 +104,7 @@ from wordlift_client.models.internal_link import InternalLink
99
104
  from wordlift_client.models.internal_link_destination import InternalLinkDestination
100
105
  from wordlift_client.models.internal_link_request import InternalLinkRequest
101
106
  from wordlift_client.models.internal_link_source import InternalLinkSource
107
+ from wordlift_client.models.internal_linking import InternalLinking
102
108
  from wordlift_client.models.item import Item
103
109
  from wordlift_client.models.js_rendering import JsRendering
104
110
  from wordlift_client.models.kg_embedding_request import KgEmbeddingRequest
@@ -150,6 +156,7 @@ from wordlift_client.models.query_coverage_output import QueryCoverageOutput
150
156
  from wordlift_client.models.question_and_answer import QuestionAndAnswer
151
157
  from wordlift_client.models.question_and_answer_request import QuestionAndAnswerRequest
152
158
  from wordlift_client.models.quick_win import QuickWin
159
+ from wordlift_client.models.quick_wins_result import QuickWinsResult
153
160
  from wordlift_client.models.rank_entities import RankEntities
154
161
  from wordlift_client.models.record import Record
155
162
  from wordlift_client.models.render_request import RenderRequest
@@ -162,10 +169,10 @@ from wordlift_client.models.response1 import Response1
162
169
  from wordlift_client.models.response2 import Response2
163
170
  from wordlift_client.models.rule import Rule
164
171
  from wordlift_client.models.rule_request import RuleRequest
172
+ from wordlift_client.models.schema_recommendation import SchemaRecommendation
165
173
  from wordlift_client.models.scope import Scope
166
174
  from wordlift_client.models.seo_fundamentals import SeoFundamentals
167
175
  from wordlift_client.models.site_files import SiteFiles
168
- from wordlift_client.models.site_files_bot_access import SiteFilesBotAccess
169
176
  from wordlift_client.models.sitemap_import_request import SitemapImportRequest
170
177
  from wordlift_client.models.smart_content import SmartContent
171
178
  from wordlift_client.models.smart_content_request import SmartContentRequest
@@ -199,6 +206,7 @@ from wordlift_client.models.web_page_import_response import WebPageImportRespons
199
206
  from wordlift_client.models.webpage_properties import WebpageProperties
200
207
  from wordlift_client.models.website import Website
201
208
  from wordlift_client.models.website_search import WebsiteSearch
209
+ from wordlift_client.models.well_known_files import WellKnownFiles
202
210
  from wordlift_client.models.what_operand_lhs import WhatOperandLhs
203
211
  from wordlift_client.models.what_operator import WhatOperator
204
212
  from wordlift_client.models.when_operator import WhenOperator
@@ -28,7 +28,6 @@ class AIVisibilityAnalysisResult(BaseModel):
28
28
  """
29
29
  AIVisibilityAnalysisResult
30
30
  """ # noqa: E501
31
- url: StrictStr
32
31
  num_queries_requested: StrictInt
33
32
  coverage_threshold: Union[StrictFloat, StrictInt]
34
33
  entity_name: StrictStr
@@ -38,7 +37,7 @@ class AIVisibilityAnalysisResult(BaseModel):
38
37
  query_details: List[QueryCoverageOutput]
39
38
  content_chunks_count: StrictInt
40
39
  coverage_score: Union[StrictFloat, StrictInt]
41
- __properties: ClassVar[List[str]] = ["url", "num_queries_requested", "coverage_threshold", "entity_name", "query_reasoning", "covered_count", "total_queries", "query_details", "content_chunks_count", "coverage_score"]
40
+ __properties: ClassVar[List[str]] = ["num_queries_requested", "coverage_threshold", "entity_name", "query_reasoning", "covered_count", "total_queries", "query_details", "content_chunks_count", "coverage_score"]
42
41
 
43
42
  model_config = ConfigDict(
44
43
  populate_by_name=True,
@@ -100,7 +99,6 @@ class AIVisibilityAnalysisResult(BaseModel):
100
99
  return cls.model_validate(obj)
101
100
 
102
101
  _obj = cls.model_validate({
103
- "url": obj.get("url"),
104
102
  "num_queries_requested": obj.get("num_queries_requested"),
105
103
  "coverage_threshold": obj.get("coverage_threshold"),
106
104
  "entity_name": obj.get("entity_name"),
@@ -0,0 +1,105 @@
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, Optional, Union
23
+ from typing_extensions import Annotated
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class AnalyzeContentRequest(BaseModel):
28
+ """
29
+ AnalyzeContentRequest
30
+ """ # noqa: E501
31
+ url: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=2083)]] = None
32
+ text: Optional[StrictStr] = None
33
+ num_queries: Optional[Annotated[int, Field(le=20, strict=True, ge=1)]] = Field(default=10, description="Number of synthetic queries to generate")
34
+ coverage_threshold: Optional[Union[Annotated[float, Field(le=1, strict=True, ge=0)], Annotated[int, Field(le=1, strict=True, ge=0)]]] = Field(default=0.65, description="The threshold for answering synthetic queries")
35
+ __properties: ClassVar[List[str]] = ["url", "text", "num_queries", "coverage_threshold"]
36
+
37
+ model_config = ConfigDict(
38
+ populate_by_name=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
51
+ return json.dumps(self.to_dict())
52
+
53
+ @classmethod
54
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
+ """Create an instance of AnalyzeContentRequest from a JSON string"""
56
+ return cls.from_dict(json.loads(json_str))
57
+
58
+ def to_dict(self) -> Dict[str, Any]:
59
+ """Return the dictionary representation of the model using alias.
60
+
61
+ This has the following differences from calling pydantic's
62
+ `self.model_dump(by_alias=True)`:
63
+
64
+ * `None` is only added to the output dict for nullable fields that
65
+ were set at model initialization. Other fields with value `None`
66
+ are ignored.
67
+ """
68
+ excluded_fields: Set[str] = set([
69
+ ])
70
+
71
+ _dict = self.model_dump(
72
+ by_alias=True,
73
+ exclude=excluded_fields,
74
+ exclude_none=True,
75
+ )
76
+ # set to None if url (nullable) is None
77
+ # and model_fields_set contains the field
78
+ if self.url is None and "url" in self.model_fields_set:
79
+ _dict['url'] = None
80
+
81
+ # set to None if text (nullable) is None
82
+ # and model_fields_set contains the field
83
+ if self.text is None and "text" in self.model_fields_set:
84
+ _dict['text'] = None
85
+
86
+ return _dict
87
+
88
+ @classmethod
89
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
90
+ """Create an instance of AnalyzeContentRequest from a dict"""
91
+ if obj is None:
92
+ return None
93
+
94
+ if not isinstance(obj, dict):
95
+ return cls.model_validate(obj)
96
+
97
+ _obj = cls.model_validate({
98
+ "url": obj.get("url"),
99
+ "text": obj.get("text"),
100
+ "num_queries": obj.get("num_queries") if obj.get("num_queries") is not None else 10,
101
+ "coverage_threshold": obj.get("coverage_threshold") if obj.get("coverage_threshold") is not None else 0.65
102
+ })
103
+ return _obj
104
+
105
+
@@ -23,10 +23,13 @@ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_v
23
23
  from typing import Any, ClassVar, Dict, List, Optional
24
24
  from typing_extensions import Annotated
25
25
  from wordlift_client.models.automation_readiness import AutomationReadiness
26
+ from wordlift_client.models.content_freshness import ContentFreshness
26
27
  from wordlift_client.models.content_structure import ContentStructure
28
+ from wordlift_client.models.html_semantics import HtmlSemantics
27
29
  from wordlift_client.models.image_accessibility import ImageAccessibility
30
+ from wordlift_client.models.internal_linking import InternalLinking
28
31
  from wordlift_client.models.js_rendering import JsRendering
29
- from wordlift_client.models.quick_win import QuickWin
32
+ from wordlift_client.models.quick_wins_result import QuickWinsResult
30
33
  from wordlift_client.models.seo_fundamentals import SeoFundamentals
31
34
  from wordlift_client.models.site_files import SiteFiles
32
35
  from wordlift_client.models.structured_data import StructuredData
@@ -41,19 +44,23 @@ class AuditData(BaseModel):
41
44
  domain: Optional[StrictStr] = Field(default=None, description="The base domain of the audited URL")
42
45
  timestamp: Optional[datetime] = Field(default=None, description="ISO 8601 timestamp of when the audit was performed")
43
46
  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")
47
+ score: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field(default=None, description="Legacy field - same as overallScore")
48
+ summary: Optional[StrictStr] = Field(default=None, description="High-level summary of the audit findings in markdown format")
45
49
  site_files: Optional[SiteFiles] = Field(default=None, alias="siteFiles")
46
50
  seo_fundamentals: Optional[SeoFundamentals] = Field(default=None, alias="seoFundamentals")
47
51
  structured_data: Optional[StructuredData] = Field(default=None, alias="structuredData")
48
52
  content_structure: Optional[ContentStructure] = Field(default=None, alias="contentStructure")
49
53
  image_accessibility: Optional[ImageAccessibility] = Field(default=None, alias="imageAccessibility")
54
+ html_semantics: Optional[HtmlSemantics] = Field(default=None, alias="htmlSemantics")
55
+ content_freshness: Optional[ContentFreshness] = Field(default=None, alias="contentFreshness")
56
+ internal_linking: Optional[InternalLinking] = Field(default=None, alias="internalLinking")
50
57
  automation_readiness: Optional[AutomationReadiness] = Field(default=None, alias="automationReadiness")
51
58
  js_rendering: Optional[JsRendering] = Field(default=None, alias="jsRendering")
52
- quick_wins: Optional[List[QuickWin]] = Field(default=None, alias="quickWins")
59
+ quick_wins: Optional[QuickWinsResult] = Field(default=None, alias="quickWins")
53
60
  status: Optional[StrictStr] = Field(default=None, description="Status of the audit process")
54
61
  account_id: Optional[StrictInt] = Field(default=None, description="Account ID associated with the audit", alias="accountId")
55
62
  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"]
63
+ __properties: ClassVar[List[str]] = ["url", "domain", "timestamp", "overallScore", "score", "summary", "siteFiles", "seoFundamentals", "structuredData", "contentStructure", "imageAccessibility", "htmlSemantics", "contentFreshness", "internalLinking", "automationReadiness", "jsRendering", "quickWins", "status", "accountId", "accountUrl"]
57
64
 
58
65
  @field_validator('status')
59
66
  def status_validate_enum(cls, value):
@@ -119,19 +126,24 @@ class AuditData(BaseModel):
119
126
  # override the default output from pydantic by calling `to_dict()` of image_accessibility
120
127
  if self.image_accessibility:
121
128
  _dict['imageAccessibility'] = self.image_accessibility.to_dict()
129
+ # override the default output from pydantic by calling `to_dict()` of html_semantics
130
+ if self.html_semantics:
131
+ _dict['htmlSemantics'] = self.html_semantics.to_dict()
132
+ # override the default output from pydantic by calling `to_dict()` of content_freshness
133
+ if self.content_freshness:
134
+ _dict['contentFreshness'] = self.content_freshness.to_dict()
135
+ # override the default output from pydantic by calling `to_dict()` of internal_linking
136
+ if self.internal_linking:
137
+ _dict['internalLinking'] = self.internal_linking.to_dict()
122
138
  # override the default output from pydantic by calling `to_dict()` of automation_readiness
123
139
  if self.automation_readiness:
124
140
  _dict['automationReadiness'] = self.automation_readiness.to_dict()
125
141
  # override the default output from pydantic by calling `to_dict()` of js_rendering
126
142
  if self.js_rendering:
127
143
  _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 = []
144
+ # override the default output from pydantic by calling `to_dict()` of quick_wins
130
145
  if self.quick_wins:
131
- for _item in self.quick_wins:
132
- if _item:
133
- _items.append(_item.to_dict())
134
- _dict['quickWins'] = _items
146
+ _dict['quickWins'] = self.quick_wins.to_dict()
135
147
  return _dict
136
148
 
137
149
  @classmethod
@@ -148,15 +160,19 @@ class AuditData(BaseModel):
148
160
  "domain": obj.get("domain"),
149
161
  "timestamp": obj.get("timestamp"),
150
162
  "overallScore": obj.get("overallScore"),
163
+ "score": obj.get("score"),
151
164
  "summary": obj.get("summary"),
152
165
  "siteFiles": SiteFiles.from_dict(obj["siteFiles"]) if obj.get("siteFiles") is not None else None,
153
166
  "seoFundamentals": SeoFundamentals.from_dict(obj["seoFundamentals"]) if obj.get("seoFundamentals") is not None else None,
154
167
  "structuredData": StructuredData.from_dict(obj["structuredData"]) if obj.get("structuredData") is not None else None,
155
168
  "contentStructure": ContentStructure.from_dict(obj["contentStructure"]) if obj.get("contentStructure") is not None else None,
156
169
  "imageAccessibility": ImageAccessibility.from_dict(obj["imageAccessibility"]) if obj.get("imageAccessibility") is not None else None,
170
+ "htmlSemantics": HtmlSemantics.from_dict(obj["htmlSemantics"]) if obj.get("htmlSemantics") is not None else None,
171
+ "contentFreshness": ContentFreshness.from_dict(obj["contentFreshness"]) if obj.get("contentFreshness") is not None else None,
172
+ "internalLinking": InternalLinking.from_dict(obj["internalLinking"]) if obj.get("internalLinking") is not None else None,
157
173
  "automationReadiness": AutomationReadiness.from_dict(obj["automationReadiness"]) if obj.get("automationReadiness") is not None else None,
158
174
  "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,
175
+ "quickWins": QuickWinsResult.from_dict(obj["quickWins"]) if obj.get("quickWins") is not None else None,
160
176
  "status": obj.get("status"),
161
177
  "accountId": obj.get("accountId"),
162
178
  "accountUrl": obj.get("accountUrl")