wordlift-client 1.134.0__py3-none-any.whl → 1.136.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.
- wordlift_client/__init__.py +25 -3
- wordlift_client/api/__init__.py +1 -0
- wordlift_client/api/audit_api.py +18 -6
- wordlift_client/api/default_api.py +1767 -39
- wordlift_client/api_client.py +1 -1
- wordlift_client/configuration.py +1 -1
- wordlift_client/models/__init__.py +23 -2
- wordlift_client/models/audit_data.py +27 -11
- wordlift_client/models/automation_issue.py +110 -0
- wordlift_client/models/automation_readiness.py +16 -5
- wordlift_client/models/bot_status.py +102 -0
- wordlift_client/models/content_freshness.py +106 -0
- wordlift_client/models/content_structure.py +10 -6
- wordlift_client/models/detected_schema.py +100 -0
- wordlift_client/models/error_response.py +5 -3
- wordlift_client/models/html_semantics.py +100 -0
- wordlift_client/models/http_validation_error1.py +96 -0
- wordlift_client/models/image_accessibility.py +9 -7
- wordlift_client/models/internal_linking.py +100 -0
- wordlift_client/models/js_rendering.py +8 -17
- wordlift_client/models/monitor_result_item.py +117 -0
- wordlift_client/models/monitor_state.py +39 -0
- wordlift_client/models/monitor_summary_item.py +105 -0
- wordlift_client/models/neighbors.py +101 -0
- wordlift_client/models/page_info.py +95 -0
- wordlift_client/models/quick_wins_result.py +110 -0
- wordlift_client/models/resource_request.py +92 -0
- wordlift_client/models/resource_type.py +40 -0
- wordlift_client/models/schema_recommendation.py +90 -0
- wordlift_client/models/seo_fundamentals.py +6 -3
- wordlift_client/models/site_files.py +25 -10
- wordlift_client/models/structured_data.py +28 -5
- wordlift_client/models/url_list_item.py +132 -0
- wordlift_client/models/url_list_response.py +104 -0
- wordlift_client/models/url_results_response.py +121 -0
- wordlift_client/models/url_summary_response.py +136 -0
- wordlift_client/models/validation_error1.py +22 -9
- wordlift_client/models/validation_error2.py +96 -0
- wordlift_client/models/validation_error2_detail_inner.py +92 -0
- wordlift_client/models/well_known_files.py +98 -0
- {wordlift_client-1.134.0.dist-info → wordlift_client-1.136.0.dist-info}/METADATA +1 -1
- {wordlift_client-1.134.0.dist-info → wordlift_client-1.136.0.dist-info}/RECORD +45 -22
- {wordlift_client-1.134.0.dist-info → wordlift_client-1.136.0.dist-info}/LICENSE +0 -0
- {wordlift_client-1.134.0.dist-info → wordlift_client-1.136.0.dist-info}/WHEEL +0 -0
- {wordlift_client-1.134.0.dist-info → wordlift_client-1.136.0.dist-info}/top_level.txt +0 -0
wordlift_client/api_client.py
CHANGED
|
@@ -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.
|
|
92
|
+
self.user_agent = 'OpenAPI-Generator/1.136.0/python'
|
|
93
93
|
self.client_side_validation = configuration.client_side_validation
|
|
94
94
|
|
|
95
95
|
async def __aenter__(self):
|
wordlift_client/configuration.py
CHANGED
|
@@ -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.
|
|
429
|
+
"SDK Package Version: 1.136.0".\
|
|
430
430
|
format(env=sys.platform, pyversion=sys.version)
|
|
431
431
|
|
|
432
432
|
def get_host_settings(self):
|
|
@@ -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
|
|
@@ -89,7 +93,9 @@ from wordlift_client.models.generate_sitemap200_response import GenerateSitemap2
|
|
|
89
93
|
from wordlift_client.models.generate_sitemap_request import GenerateSitemapRequest
|
|
90
94
|
from wordlift_client.models.graphql_request import GraphqlRequest
|
|
91
95
|
from wordlift_client.models.http_validation_error import HTTPValidationError
|
|
96
|
+
from wordlift_client.models.http_validation_error1 import HTTPValidationError1
|
|
92
97
|
from wordlift_client.models.html import Html
|
|
98
|
+
from wordlift_client.models.html_semantics import HtmlSemantics
|
|
93
99
|
from wordlift_client.models.image import Image
|
|
94
100
|
from wordlift_client.models.image_accessibility import ImageAccessibility
|
|
95
101
|
from wordlift_client.models.include_exclude import IncludeExclude
|
|
@@ -99,6 +105,7 @@ from wordlift_client.models.internal_link import InternalLink
|
|
|
99
105
|
from wordlift_client.models.internal_link_destination import InternalLinkDestination
|
|
100
106
|
from wordlift_client.models.internal_link_request import InternalLinkRequest
|
|
101
107
|
from wordlift_client.models.internal_link_source import InternalLinkSource
|
|
108
|
+
from wordlift_client.models.internal_linking import InternalLinking
|
|
102
109
|
from wordlift_client.models.item import Item
|
|
103
110
|
from wordlift_client.models.js_rendering import JsRendering
|
|
104
111
|
from wordlift_client.models.kg_embedding_request import KgEmbeddingRequest
|
|
@@ -115,6 +122,10 @@ from wordlift_client.models.merchant_sync import MerchantSync
|
|
|
115
122
|
from wordlift_client.models.merchant_view import MerchantView
|
|
116
123
|
from wordlift_client.models.model import Model
|
|
117
124
|
from wordlift_client.models.model_field import ModelField
|
|
125
|
+
from wordlift_client.models.monitor_result_item import MonitorResultItem
|
|
126
|
+
from wordlift_client.models.monitor_state import MonitorState
|
|
127
|
+
from wordlift_client.models.monitor_summary_item import MonitorSummaryItem
|
|
128
|
+
from wordlift_client.models.neighbors import Neighbors
|
|
118
129
|
from wordlift_client.models.network_account_info import NetworkAccountInfo
|
|
119
130
|
from wordlift_client.models.node_request import NodeRequest
|
|
120
131
|
from wordlift_client.models.node_request_metadata_value import NodeRequestMetadataValue
|
|
@@ -124,6 +135,7 @@ from wordlift_client.models.page_active_account import PageActiveAccount
|
|
|
124
135
|
from wordlift_client.models.page_add_on_configuration import PageAddOnConfiguration
|
|
125
136
|
from wordlift_client.models.page_content_generation import PageContentGeneration
|
|
126
137
|
from wordlift_client.models.page_field import PageField
|
|
138
|
+
from wordlift_client.models.page_info import PageInfo
|
|
127
139
|
from wordlift_client.models.page_merchant_entry import PageMerchantEntry
|
|
128
140
|
from wordlift_client.models.page_merchant_sync import PageMerchantSync
|
|
129
141
|
from wordlift_client.models.page_merchant_view import PageMerchantView
|
|
@@ -150,6 +162,7 @@ from wordlift_client.models.query_coverage_output import QueryCoverageOutput
|
|
|
150
162
|
from wordlift_client.models.question_and_answer import QuestionAndAnswer
|
|
151
163
|
from wordlift_client.models.question_and_answer_request import QuestionAndAnswerRequest
|
|
152
164
|
from wordlift_client.models.quick_win import QuickWin
|
|
165
|
+
from wordlift_client.models.quick_wins_result import QuickWinsResult
|
|
153
166
|
from wordlift_client.models.rank_entities import RankEntities
|
|
154
167
|
from wordlift_client.models.record import Record
|
|
155
168
|
from wordlift_client.models.render_request import RenderRequest
|
|
@@ -157,15 +170,17 @@ from wordlift_client.models.request import Request
|
|
|
157
170
|
from wordlift_client.models.request1 import Request1
|
|
158
171
|
from wordlift_client.models.request2 import Request2
|
|
159
172
|
from wordlift_client.models.request3 import Request3
|
|
173
|
+
from wordlift_client.models.resource_request import ResourceRequest
|
|
174
|
+
from wordlift_client.models.resource_type import ResourceType
|
|
160
175
|
from wordlift_client.models.response import Response
|
|
161
176
|
from wordlift_client.models.response1 import Response1
|
|
162
177
|
from wordlift_client.models.response2 import Response2
|
|
163
178
|
from wordlift_client.models.rule import Rule
|
|
164
179
|
from wordlift_client.models.rule_request import RuleRequest
|
|
180
|
+
from wordlift_client.models.schema_recommendation import SchemaRecommendation
|
|
165
181
|
from wordlift_client.models.scope import Scope
|
|
166
182
|
from wordlift_client.models.seo_fundamentals import SeoFundamentals
|
|
167
183
|
from wordlift_client.models.site_files import SiteFiles
|
|
168
|
-
from wordlift_client.models.site_files_bot_access import SiteFilesBotAccess
|
|
169
184
|
from wordlift_client.models.sitemap_import_request import SitemapImportRequest
|
|
170
185
|
from wordlift_client.models.smart_content import SmartContent
|
|
171
186
|
from wordlift_client.models.smart_content_request import SmartContentRequest
|
|
@@ -180,9 +195,14 @@ from wordlift_client.models.update_question_and_answer_request import UpdateQues
|
|
|
180
195
|
from wordlift_client.models.update_record_request import UpdateRecordRequest
|
|
181
196
|
from wordlift_client.models.update_records_request import UpdateRecordsRequest
|
|
182
197
|
from wordlift_client.models.update_site_url_request import UpdateSiteUrlRequest
|
|
198
|
+
from wordlift_client.models.url_list_item import UrlListItem
|
|
199
|
+
from wordlift_client.models.url_list_response import UrlListResponse
|
|
200
|
+
from wordlift_client.models.url_results_response import UrlResultsResponse
|
|
201
|
+
from wordlift_client.models.url_summary_response import UrlSummaryResponse
|
|
183
202
|
from wordlift_client.models.validation_error import ValidationError
|
|
184
203
|
from wordlift_client.models.validation_error1 import ValidationError1
|
|
185
|
-
from wordlift_client.models.
|
|
204
|
+
from wordlift_client.models.validation_error2 import ValidationError2
|
|
205
|
+
from wordlift_client.models.validation_error2_detail_inner import ValidationError2DetailInner
|
|
186
206
|
from wordlift_client.models.validation_fix import ValidationFix
|
|
187
207
|
from wordlift_client.models.validation_result import ValidationResult
|
|
188
208
|
from wordlift_client.models.validation_type_enum import ValidationTypeEnum
|
|
@@ -199,6 +219,7 @@ from wordlift_client.models.web_page_import_response import WebPageImportRespons
|
|
|
199
219
|
from wordlift_client.models.webpage_properties import WebpageProperties
|
|
200
220
|
from wordlift_client.models.website import Website
|
|
201
221
|
from wordlift_client.models.website_search import WebsiteSearch
|
|
222
|
+
from wordlift_client.models.well_known_files import WellKnownFiles
|
|
202
223
|
from wordlift_client.models.what_operand_lhs import WhatOperandLhs
|
|
203
224
|
from wordlift_client.models.what_operator import WhatOperator
|
|
204
225
|
from wordlift_client.models.when_operator import WhenOperator
|
|
@@ -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.
|
|
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
|
-
|
|
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[
|
|
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
|
|
129
|
-
_items = []
|
|
144
|
+
# override the default output from pydantic by calling `to_dict()` of quick_wins
|
|
130
145
|
if self.quick_wins:
|
|
131
|
-
|
|
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":
|
|
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")
|
|
@@ -0,0 +1,110 @@
|
|
|
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, field_validator
|
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from typing import Optional, Set
|
|
24
|
+
from typing_extensions import Self
|
|
25
|
+
|
|
26
|
+
class AutomationIssue(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
AutomationIssue
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
priority: Optional[StrictStr] = Field(default=None, description="Priority level of the issue")
|
|
31
|
+
criterion: Optional[StrictStr] = Field(default=None, description="WCAG or accessibility criterion reference")
|
|
32
|
+
what: Optional[StrictStr] = Field(default=None, description="Description of the issue")
|
|
33
|
+
where: Optional[StrictStr] = Field(default=None, description="Location of the issue on the page")
|
|
34
|
+
why: Optional[StrictStr] = Field(default=None, description="Why this issue matters")
|
|
35
|
+
how: Optional[StrictStr] = Field(default=None, description="How to fix the issue")
|
|
36
|
+
compliance: Optional[StrictStr] = Field(default=None, description="Compliance impact description")
|
|
37
|
+
__properties: ClassVar[List[str]] = ["priority", "criterion", "what", "where", "why", "how", "compliance"]
|
|
38
|
+
|
|
39
|
+
@field_validator('priority')
|
|
40
|
+
def priority_validate_enum(cls, value):
|
|
41
|
+
"""Validates the enum"""
|
|
42
|
+
if value is None:
|
|
43
|
+
return value
|
|
44
|
+
|
|
45
|
+
if value not in set(['P1', 'P2', 'P3', 'P4']):
|
|
46
|
+
raise ValueError("must be one of enum values ('P1', 'P2', 'P3', 'P4')")
|
|
47
|
+
return value
|
|
48
|
+
|
|
49
|
+
model_config = ConfigDict(
|
|
50
|
+
populate_by_name=True,
|
|
51
|
+
validate_assignment=True,
|
|
52
|
+
protected_namespaces=(),
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def to_str(self) -> str:
|
|
57
|
+
"""Returns the string representation of the model using alias"""
|
|
58
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
59
|
+
|
|
60
|
+
def to_json(self) -> str:
|
|
61
|
+
"""Returns the JSON representation of the model using alias"""
|
|
62
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
63
|
+
return json.dumps(self.to_dict())
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
67
|
+
"""Create an instance of AutomationIssue from a JSON string"""
|
|
68
|
+
return cls.from_dict(json.loads(json_str))
|
|
69
|
+
|
|
70
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
71
|
+
"""Return the dictionary representation of the model using alias.
|
|
72
|
+
|
|
73
|
+
This has the following differences from calling pydantic's
|
|
74
|
+
`self.model_dump(by_alias=True)`:
|
|
75
|
+
|
|
76
|
+
* `None` is only added to the output dict for nullable fields that
|
|
77
|
+
were set at model initialization. Other fields with value `None`
|
|
78
|
+
are ignored.
|
|
79
|
+
"""
|
|
80
|
+
excluded_fields: Set[str] = set([
|
|
81
|
+
])
|
|
82
|
+
|
|
83
|
+
_dict = self.model_dump(
|
|
84
|
+
by_alias=True,
|
|
85
|
+
exclude=excluded_fields,
|
|
86
|
+
exclude_none=True,
|
|
87
|
+
)
|
|
88
|
+
return _dict
|
|
89
|
+
|
|
90
|
+
@classmethod
|
|
91
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
92
|
+
"""Create an instance of AutomationIssue from a dict"""
|
|
93
|
+
if obj is None:
|
|
94
|
+
return None
|
|
95
|
+
|
|
96
|
+
if not isinstance(obj, dict):
|
|
97
|
+
return cls.model_validate(obj)
|
|
98
|
+
|
|
99
|
+
_obj = cls.model_validate({
|
|
100
|
+
"priority": obj.get("priority"),
|
|
101
|
+
"criterion": obj.get("criterion"),
|
|
102
|
+
"what": obj.get("what"),
|
|
103
|
+
"where": obj.get("where"),
|
|
104
|
+
"why": obj.get("why"),
|
|
105
|
+
"how": obj.get("how"),
|
|
106
|
+
"compliance": obj.get("compliance")
|
|
107
|
+
})
|
|
108
|
+
return _obj
|
|
109
|
+
|
|
110
|
+
|
|
@@ -20,6 +20,8 @@ import json
|
|
|
20
20
|
|
|
21
21
|
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
|
22
22
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from typing_extensions import Annotated
|
|
24
|
+
from wordlift_client.models.automation_issue import AutomationIssue
|
|
23
25
|
from typing import Optional, Set
|
|
24
26
|
from typing_extensions import Self
|
|
25
27
|
|
|
@@ -27,10 +29,11 @@ class AutomationReadiness(BaseModel):
|
|
|
27
29
|
"""
|
|
28
30
|
AutomationReadiness
|
|
29
31
|
""" # noqa: E501
|
|
32
|
+
score: Optional[Annotated[int, Field(le=10, strict=True, ge=0)]] = Field(default=None, description="Numeric score for automation readiness (0-10)")
|
|
30
33
|
status: Optional[StrictStr] = None
|
|
31
34
|
explanation: Optional[StrictStr] = None
|
|
32
|
-
issues: Optional[List[
|
|
33
|
-
__properties: ClassVar[List[str]] = ["status", "explanation", "issues"]
|
|
35
|
+
issues: Optional[List[AutomationIssue]] = Field(default=None, description="List of structured automation readiness issues")
|
|
36
|
+
__properties: ClassVar[List[str]] = ["score", "status", "explanation", "issues"]
|
|
34
37
|
|
|
35
38
|
@field_validator('status')
|
|
36
39
|
def status_validate_enum(cls, value):
|
|
@@ -38,8 +41,8 @@ class AutomationReadiness(BaseModel):
|
|
|
38
41
|
if value is None:
|
|
39
42
|
return value
|
|
40
43
|
|
|
41
|
-
if value not in set(['Good', 'Needs Improvement', 'Poor']):
|
|
42
|
-
raise ValueError("must be one of enum values ('Good', 'Needs Improvement', 'Poor')")
|
|
44
|
+
if value not in set(['Good', 'Needs Improvement', 'Poor', 'Unknown']):
|
|
45
|
+
raise ValueError("must be one of enum values ('Good', 'Needs Improvement', 'Poor', 'Unknown')")
|
|
43
46
|
return value
|
|
44
47
|
|
|
45
48
|
model_config = ConfigDict(
|
|
@@ -81,6 +84,13 @@ class AutomationReadiness(BaseModel):
|
|
|
81
84
|
exclude=excluded_fields,
|
|
82
85
|
exclude_none=True,
|
|
83
86
|
)
|
|
87
|
+
# override the default output from pydantic by calling `to_dict()` of each item in issues (list)
|
|
88
|
+
_items = []
|
|
89
|
+
if self.issues:
|
|
90
|
+
for _item in self.issues:
|
|
91
|
+
if _item:
|
|
92
|
+
_items.append(_item.to_dict())
|
|
93
|
+
_dict['issues'] = _items
|
|
84
94
|
return _dict
|
|
85
95
|
|
|
86
96
|
@classmethod
|
|
@@ -93,9 +103,10 @@ class AutomationReadiness(BaseModel):
|
|
|
93
103
|
return cls.model_validate(obj)
|
|
94
104
|
|
|
95
105
|
_obj = cls.model_validate({
|
|
106
|
+
"score": obj.get("score"),
|
|
96
107
|
"status": obj.get("status"),
|
|
97
108
|
"explanation": obj.get("explanation"),
|
|
98
|
-
"issues": obj.get("issues")
|
|
109
|
+
"issues": [AutomationIssue.from_dict(_item) for _item in obj["issues"]] if obj.get("issues") is not None else None
|
|
99
110
|
})
|
|
100
111
|
return _obj
|
|
101
112
|
|
|
@@ -0,0 +1,102 @@
|
|
|
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, field_validator
|
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from typing import Optional, Set
|
|
24
|
+
from typing_extensions import Self
|
|
25
|
+
|
|
26
|
+
class BotStatus(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
BotStatus
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
name: Optional[StrictStr] = Field(default=None, description="Name of the bot (e.g., GPTBot, Claude-Web, Googlebot)")
|
|
31
|
+
vendor: Optional[StrictStr] = Field(default=None, description="Vendor of the bot (e.g., OpenAI, Anthropic, Google)")
|
|
32
|
+
status: Optional[StrictStr] = Field(default=None, description="Access status for this bot")
|
|
33
|
+
__properties: ClassVar[List[str]] = ["name", "vendor", "status"]
|
|
34
|
+
|
|
35
|
+
@field_validator('status')
|
|
36
|
+
def status_validate_enum(cls, value):
|
|
37
|
+
"""Validates the enum"""
|
|
38
|
+
if value is None:
|
|
39
|
+
return value
|
|
40
|
+
|
|
41
|
+
if value not in set(['Allowed', 'Blocked']):
|
|
42
|
+
raise ValueError("must be one of enum values ('Allowed', 'Blocked')")
|
|
43
|
+
return value
|
|
44
|
+
|
|
45
|
+
model_config = ConfigDict(
|
|
46
|
+
populate_by_name=True,
|
|
47
|
+
validate_assignment=True,
|
|
48
|
+
protected_namespaces=(),
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def to_str(self) -> str:
|
|
53
|
+
"""Returns the string representation of the model using alias"""
|
|
54
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
55
|
+
|
|
56
|
+
def to_json(self) -> str:
|
|
57
|
+
"""Returns the JSON representation of the model using alias"""
|
|
58
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
59
|
+
return json.dumps(self.to_dict())
|
|
60
|
+
|
|
61
|
+
@classmethod
|
|
62
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
63
|
+
"""Create an instance of BotStatus from a JSON string"""
|
|
64
|
+
return cls.from_dict(json.loads(json_str))
|
|
65
|
+
|
|
66
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
67
|
+
"""Return the dictionary representation of the model using alias.
|
|
68
|
+
|
|
69
|
+
This has the following differences from calling pydantic's
|
|
70
|
+
`self.model_dump(by_alias=True)`:
|
|
71
|
+
|
|
72
|
+
* `None` is only added to the output dict for nullable fields that
|
|
73
|
+
were set at model initialization. Other fields with value `None`
|
|
74
|
+
are ignored.
|
|
75
|
+
"""
|
|
76
|
+
excluded_fields: Set[str] = set([
|
|
77
|
+
])
|
|
78
|
+
|
|
79
|
+
_dict = self.model_dump(
|
|
80
|
+
by_alias=True,
|
|
81
|
+
exclude=excluded_fields,
|
|
82
|
+
exclude_none=True,
|
|
83
|
+
)
|
|
84
|
+
return _dict
|
|
85
|
+
|
|
86
|
+
@classmethod
|
|
87
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
88
|
+
"""Create an instance of BotStatus from a dict"""
|
|
89
|
+
if obj is None:
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
if not isinstance(obj, dict):
|
|
93
|
+
return cls.model_validate(obj)
|
|
94
|
+
|
|
95
|
+
_obj = cls.model_validate({
|
|
96
|
+
"name": obj.get("name"),
|
|
97
|
+
"vendor": obj.get("vendor"),
|
|
98
|
+
"status": obj.get("status")
|
|
99
|
+
})
|
|
100
|
+
return _obj
|
|
101
|
+
|
|
102
|
+
|
|
@@ -0,0 +1,106 @@
|
|
|
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, field_validator
|
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
|
+
from typing import Optional, Set
|
|
24
|
+
from typing_extensions import Self
|
|
25
|
+
|
|
26
|
+
class ContentFreshness(BaseModel):
|
|
27
|
+
"""
|
|
28
|
+
Legacy field - always returns status Unknown
|
|
29
|
+
""" # noqa: E501
|
|
30
|
+
status: Optional[StrictStr] = Field(default=None, description="Always returns Unknown as this is not currently analyzed")
|
|
31
|
+
explanation: Optional[StrictStr] = Field(default=None, description="Explanation that this is not currently analyzed")
|
|
32
|
+
category: Optional[StrictStr] = Field(default=None, description="Always returns \"N/A\"")
|
|
33
|
+
publication_date: Optional[StrictStr] = Field(default=None, description="Always returns \"N/A\"", alias="publicationDate")
|
|
34
|
+
last_updated_date: Optional[StrictStr] = Field(default=None, description="Always returns \"N/A\"", alias="lastUpdatedDate")
|
|
35
|
+
__properties: ClassVar[List[str]] = ["status", "explanation", "category", "publicationDate", "lastUpdatedDate"]
|
|
36
|
+
|
|
37
|
+
@field_validator('status')
|
|
38
|
+
def status_validate_enum(cls, value):
|
|
39
|
+
"""Validates the enum"""
|
|
40
|
+
if value is None:
|
|
41
|
+
return value
|
|
42
|
+
|
|
43
|
+
if value not in set(['Unknown']):
|
|
44
|
+
raise ValueError("must be one of enum values ('Unknown')")
|
|
45
|
+
return value
|
|
46
|
+
|
|
47
|
+
model_config = ConfigDict(
|
|
48
|
+
populate_by_name=True,
|
|
49
|
+
validate_assignment=True,
|
|
50
|
+
protected_namespaces=(),
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def to_str(self) -> str:
|
|
55
|
+
"""Returns the string representation of the model using alias"""
|
|
56
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
57
|
+
|
|
58
|
+
def to_json(self) -> str:
|
|
59
|
+
"""Returns the JSON representation of the model using alias"""
|
|
60
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
61
|
+
return json.dumps(self.to_dict())
|
|
62
|
+
|
|
63
|
+
@classmethod
|
|
64
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
65
|
+
"""Create an instance of ContentFreshness from a JSON string"""
|
|
66
|
+
return cls.from_dict(json.loads(json_str))
|
|
67
|
+
|
|
68
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
69
|
+
"""Return the dictionary representation of the model using alias.
|
|
70
|
+
|
|
71
|
+
This has the following differences from calling pydantic's
|
|
72
|
+
`self.model_dump(by_alias=True)`:
|
|
73
|
+
|
|
74
|
+
* `None` is only added to the output dict for nullable fields that
|
|
75
|
+
were set at model initialization. Other fields with value `None`
|
|
76
|
+
are ignored.
|
|
77
|
+
"""
|
|
78
|
+
excluded_fields: Set[str] = set([
|
|
79
|
+
])
|
|
80
|
+
|
|
81
|
+
_dict = self.model_dump(
|
|
82
|
+
by_alias=True,
|
|
83
|
+
exclude=excluded_fields,
|
|
84
|
+
exclude_none=True,
|
|
85
|
+
)
|
|
86
|
+
return _dict
|
|
87
|
+
|
|
88
|
+
@classmethod
|
|
89
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
90
|
+
"""Create an instance of ContentFreshness 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
|
+
"status": obj.get("status"),
|
|
99
|
+
"explanation": obj.get("explanation"),
|
|
100
|
+
"category": obj.get("category"),
|
|
101
|
+
"publicationDate": obj.get("publicationDate"),
|
|
102
|
+
"lastUpdatedDate": obj.get("lastUpdatedDate")
|
|
103
|
+
})
|
|
104
|
+
return _obj
|
|
105
|
+
|
|
106
|
+
|
|
@@ -18,7 +18,7 @@ import pprint
|
|
|
18
18
|
import re # noqa: F401
|
|
19
19
|
import json
|
|
20
20
|
|
|
21
|
-
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator
|
|
22
22
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
23
23
|
from typing_extensions import Annotated
|
|
24
24
|
from typing import Optional, Set
|
|
@@ -28,10 +28,12 @@ class ContentStructure(BaseModel):
|
|
|
28
28
|
"""
|
|
29
29
|
ContentStructure
|
|
30
30
|
""" # noqa: E501
|
|
31
|
+
score: Optional[Annotated[int, Field(le=15, strict=True, ge=0)]] = Field(default=None, description="Numeric score for content structure (0-15)")
|
|
31
32
|
status: Optional[StrictStr] = None
|
|
32
33
|
explanation: Optional[StrictStr] = None
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
has_semantic_elements: Optional[StrictBool] = Field(default=None, description="Whether semantic HTML elements are used", alias="hasSemanticElements")
|
|
35
|
+
has_landmarks: Optional[StrictBool] = Field(default=None, description="Whether ARIA landmarks are present", alias="hasLandmarks")
|
|
36
|
+
__properties: ClassVar[List[str]] = ["score", "status", "explanation", "hasSemanticElements", "hasLandmarks"]
|
|
35
37
|
|
|
36
38
|
@field_validator('status')
|
|
37
39
|
def status_validate_enum(cls, value):
|
|
@@ -39,8 +41,8 @@ class ContentStructure(BaseModel):
|
|
|
39
41
|
if value is None:
|
|
40
42
|
return value
|
|
41
43
|
|
|
42
|
-
if value not in set(['Good', 'Needs Improvement', 'Poor']):
|
|
43
|
-
raise ValueError("must be one of enum values ('Good', 'Needs Improvement', 'Poor')")
|
|
44
|
+
if value not in set(['Good', 'Needs Improvement', 'Poor', 'Unknown']):
|
|
45
|
+
raise ValueError("must be one of enum values ('Good', 'Needs Improvement', 'Poor', 'Unknown')")
|
|
44
46
|
return value
|
|
45
47
|
|
|
46
48
|
model_config = ConfigDict(
|
|
@@ -94,9 +96,11 @@ class ContentStructure(BaseModel):
|
|
|
94
96
|
return cls.model_validate(obj)
|
|
95
97
|
|
|
96
98
|
_obj = cls.model_validate({
|
|
99
|
+
"score": obj.get("score"),
|
|
97
100
|
"status": obj.get("status"),
|
|
98
101
|
"explanation": obj.get("explanation"),
|
|
99
|
-
"
|
|
102
|
+
"hasSemanticElements": obj.get("hasSemanticElements"),
|
|
103
|
+
"hasLandmarks": obj.get("hasLandmarks")
|
|
100
104
|
})
|
|
101
105
|
return _obj
|
|
102
106
|
|