google_search_console_api/url_inspection/
mod.rs1use serde_derive::{Deserialize, Serialize};
6
7#[derive(Debug, Serialize, Deserialize, Clone)]
9pub struct RequestUrlInspection {
10 #[serde(rename = "inspectionUrl")]
12 pub inspection_url: String,
13 #[serde(rename = "siteUrl")]
15 pub site_url: String,
16 #[serde(rename = "languageCode")]
18 pub language_code: String,
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone)]
23pub struct ResponseInspectionResult {
24 #[serde(rename = "inspectionResult")]
26 pub inspection_result: InspectionResult,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone)]
31pub struct InspectionResult {
32 #[serde(rename = "inspectionResultLink")]
34 pub inspection_result_link: Option<String>,
35 #[serde(rename = "indexStatusResult")]
37 pub index_status_result: Option<IndexStatusResult>,
38 #[serde(rename = "ampResult")]
40 pub amp_result: Option<AmpInspectionResult>,
41 #[serde(rename = "mobileUsabilityResult")]
43 pub mobile_usability_result: Option<MobileUsabilityInspectionResult>,
44 #[serde(rename = "richResultsResult")]
46 pub rich_results_result: Option<RichResultsInspectionResult>,
47}
48
49#[derive(Debug, Serialize, Deserialize, Clone)]
51pub struct IndexStatusResult {
52 pub sitemap: Option<Vec<String>>,
54 #[serde(rename = "referringUrls")]
56 pub referring_urls: Option<Vec<String>>,
57 pub verdict: Option<Verdict>,
59 #[serde(rename = "coverageState")]
61 pub coverage_state: Option<String>,
62 #[serde(rename = "robotsTxtState")]
64 pub robots_txt_state: Option<RobotsTxtState>,
65 #[serde(rename = "indexingState")]
67 pub indexing_state: Option<IndexingState>,
68 #[serde(rename = "lastCrawlTime")]
70 pub last_crawl_time: Option<String>,
71 #[serde(rename = "pageFetchState")]
73 pub page_fetch_state: Option<PageFetchState>,
74 #[serde(rename = "googleCanonical")]
76 pub google_canonical: Option<String>,
77 #[serde(rename = "userCanonical")]
79 pub user_canonical: Option<String>,
80 #[serde(rename = "crawledAs")]
82 pub crawled_as: Option<CrawlUserAgent>,
83}
84
85#[derive(Debug, Serialize, Deserialize, Clone)]
87pub enum Verdict {
88 #[serde(rename = "VERDICT_UNSPECIFIED")]
90 VerdictUnspecified,
91 PASS,
93 PARTIAL,
95 FAIL,
97 NEUTRAL,
99}
100
101#[derive(Debug, Serialize, Deserialize, Clone)]
103pub enum RobotsTxtState {
104 #[serde(rename = "ROBOTS_TXT_STATE_UNSPECIFIED")]
106 RobotsTxtStateUnspecified,
107 ALLOWED,
109 DISALLOWED,
111}
112
113#[derive(Debug, Serialize, Deserialize, Clone)]
115pub enum IndexingState {
116 #[serde(rename = "INDEXING_STATE_UNSPECIFIED")]
118 IndexingStateUnspecified,
119 #[serde(rename = "INDEXING_ALLOWED")]
121 IndexingAllowed,
122 #[serde(rename = "BLOCKED_BY_META_TAG")]
124 BlockedByMetaTag,
125 #[serde(rename = "BLOCKED_BY_HTTP_HEADER")]
127 BlockedByHttpHeader,
128 #[serde(rename = "BLOCKED_BY_ROBOTS_TXT")]
130 BlockedByRobotsTxt,
131}
132
133#[derive(Debug, Serialize, Deserialize, Clone)]
135pub enum PageFetchState {
136 #[serde(rename = "PAGE_FETCH_STATE_UNSPECIFIED")]
138 PageFetchStateUnspecified,
139 SUCCESSFUL,
141 #[serde(rename = "SOFT_404")]
143 Soft404,
144 #[serde(rename = "BLOCKED_ROBOTS_TXT")]
146 BlockedRobotsTxt,
147 #[serde(rename = "NOT_FOUND")]
149 NotFound,
150 #[serde(rename = "ACCESS_DENIED")]
152 AccessDenied,
153 #[serde(rename = "SERVER_ERROR")]
155 ServerError,
156 #[serde(rename = "REDIRECT_ERROR")]
158 RedirectError,
159 #[serde(rename = "ACCESS_FORBIDDEN")]
161 AccessForbidden,
162 #[serde(rename = "BLOCKED_4XX")]
164 Blocked4xx,
165 #[serde(rename = "INTERNAL_CRAWL_ERROR")]
167 InternalCrawlError,
168 #[serde(rename = "INVALID_URL")]
170 InvalidUrl,
171}
172
173#[derive(Debug, Serialize, Deserialize, Clone)]
175pub enum CrawlUserAgent {
176 #[serde(rename = "CRAWLING_USER_AGENT_UNSPECIFIED")]
178 CrawlingUserAgentUnspecified,
179 DESKTOP,
181 MOBILE,
183}
184
185#[derive(Debug, Serialize, Deserialize, Clone)]
187pub struct AmpInspectionResult {
188 pub issues: Option<Vec<AmpIssue>>,
190 pub verdict: Option<Verdict>,
192 #[serde(rename = "ampUrl")]
194 pub amp_url: Option<String>,
195 #[serde(rename = "robotsTxtState")]
197 pub robots_txt_state: Option<RobotsTxtState>,
198 #[serde(rename = "indexingState")]
200 pub indexing_state: Option<AmpIndexingState>,
201 #[serde(rename = "ampIndexStatusVerdict")]
203 pub amp_index_status_verdict: Option<Verdict>,
204 #[serde(rename = "lastCrawlTime")]
206 pub last_crawl_time: Option<String>,
207 #[serde(rename = "pageFetchState")]
209 pub page_fetch_state: Option<PageFetchState>,
210}
211
212#[derive(Debug, Serialize, Deserialize, Clone)]
214pub enum AmpIndexingState {
215 #[serde(rename = "AMP_INDEXING_STATE_UNSPECIFIED")]
217 AmpIndexingStateUnspecified,
218 #[serde(rename = "AMP_INDEXING_ALLOWED")]
220 AmpIndexingAllowed,
221 #[serde(rename = "BLOCKED_DUE_TO_NOINDEX")]
223 BlockedDueToNoindex,
224 #[serde(rename = "BLOCKED_DUE_TO_EXPIRED_UNAVAILABLE_AFTER")]
226 BlockedDueToExpiredUnavailableAfter,
227}
228
229#[derive(Debug, Serialize, Deserialize, Clone)]
231pub struct AmpIssue {
232 #[serde(rename = "issueMessage")]
234 pub issue_message: Option<String>,
235 pub severity: Option<Severity>,
237}
238
239#[derive(Debug, Serialize, Deserialize, Clone)]
241pub enum Severity {
242 #[serde(rename = "SEVERITY_UNSPECIFIED")]
244 SeverityUnspecified,
245 WARNING,
247 ERROR,
249}
250
251#[derive(Debug, Serialize, Deserialize, Clone)]
253pub struct MobileUsabilityInspectionResult {
254 pub issues: Option<Vec<MobileUsabilityIssue>>,
256 pub verdict: Option<Verdict>,
258}
259
260#[derive(Debug, Serialize, Deserialize, Clone)]
262pub struct MobileUsabilityIssue {
263 #[serde(rename = "issueType")]
265 pub issue_type: Option<MobileUsabilityIssueType>,
266 pub severity: Option<Severity>,
268 pub message: Option<String>,
270}
271
272#[derive(Debug, Serialize, Deserialize, Clone)]
274pub enum MobileUsabilityIssueType {
275 #[serde(rename = "MOBILE_USABILITY_ISSUE_TYPE_UNSPECIFIED")]
277 MobileUsabilityIssueTypeUnspecified,
278 #[serde(rename = "USES_INCOMPATIBLE_PLUGINS")]
280 UsesIncompatiblePlugins,
281 #[serde(rename = "CONFIGURE_VIEWPORT")]
283 ConfigureViewport,
284 #[serde(rename = "FixedWidthViewport")]
286 FixedWidthViewport,
287 #[serde(rename = "SizeContentToViewport")]
289 SizeContentToViewport,
290 #[serde(rename = "UseLegibleFontSizes")]
292 UseLegibleFontSizes,
293 #[serde(rename = "TapTargetsTooClose")]
295 TapTargetsTooClose,
296}
297
298#[derive(Debug, Serialize, Deserialize, Clone)]
300pub struct RichResultsInspectionResult {
301 #[serde(rename = "detectedItems")]
303 pub detected_items: Option<Vec<DetectedItems>>,
304 pub verdict: Option<Verdict>,
306}
307
308#[derive(Debug, Serialize, Deserialize, Clone)]
310pub struct DetectedItems {
311 pub items: Option<Vec<DetectedItemsItem>>,
313 #[serde(rename = "richResultType")]
315 pub rich_result_type: Option<String>,
316}
317
318#[derive(Debug, Serialize, Deserialize, Clone)]
320pub struct DetectedItemsItem {
321 pub issues: Option<Vec<RichResultsIssue>>,
323 pub name: Option<String>,
325}
326
327#[derive(Debug, Serialize, Deserialize, Clone)]
329pub struct RichResultsIssue {
330 #[serde(rename = "issueMessage")]
332 pub issue_message: Option<String>,
333 pub severity: Option<Severity>,
335}