1use crate::entity::{
2 OnPageDataApiContentParsing, OnPageDataApiDuplicateContent, OnPageDataApiDuplicateTags,
3 OnPageDataApiError, OnPageDataApiIdList, OnPageDataApiInstantPages,
4 OnPageDataApiKeywordDensity, OnPageDataApiLighthouseTaskGet, OnPageDataApiLighthouseTasksReady,
5 OnPageDataApiLinks, OnPageDataApiMicrodata, OnPageDataApiNonIndexable, OnPageDataApiPage,
6 OnPageDataApiPageScreensShot, OnPageDataApiRawHtml, OnPageDataApiRedirectChains,
7 OnPageDataApiResources, OnPageDataApiSummary, OnPageDataApiTasksReady, OnPageDataApiWaterfall,
8};
9use crate::{DataForSeoApiResponse, DataForSeoClient};
10use serde::{Deserialize, Serialize};
11use serde_json::Value;
12
13pub struct OnPageApi<'a> {
16 client: &'a DataForSeoClient,
17}
18
19impl DataForSeoClient {
20 pub fn on_page(&self) -> OnPageApi<'_> {
22 OnPageApi { client: self }
23 }
24}
25
26impl OnPageApi<'_> {
27 pub async fn task_post(&self, data: Vec<OnPageApiTaskPost>) -> DataForSeoApiResponse<Value> {
30 self.client.http_post("/v3/on_page/task_post", &data).await
31 }
32
33 pub async fn tasks_ready(&self) -> DataForSeoApiResponse<OnPageDataApiTasksReady> {
36 self.client.http_get("/v3/on_page/tasks_ready").await
37 }
38
39 pub async fn force_stop(
42 &self,
43 data: Vec<OnPageApiForceStopPost>,
44 ) -> DataForSeoApiResponse<Value> {
45 self.client.http_post("/v3/on_page/force_stop", &data).await
46 }
47
48 pub async fn summary(&self, id: &str) -> DataForSeoApiResponse<OnPageDataApiSummary> {
51 self.client
52 .http_get(format!("/v3/on_page/summary/{id}").as_str())
53 .await
54 }
55
56 pub async fn pages(
59 &self,
60 data: Vec<OnPageApiPagesPost>,
61 ) -> DataForSeoApiResponse<OnPageDataApiPage> {
62 self.client.http_post("/v3/on_page/pages", &data).await
63 }
64
65 pub async fn pages_by_resource(
68 &self,
69 data: Vec<OnPageApiPagesByResourcePost>,
70 ) -> DataForSeoApiResponse<OnPageDataApiPage> {
71 self.client
72 .http_post("/v3/on_page/pages_by_resource", &data)
73 .await
74 }
75
76 pub async fn resources(
79 &self,
80 data: Vec<OnPageApiResourcesPost>,
81 ) -> DataForSeoApiResponse<OnPageDataApiResources> {
82 self.client.http_post("/v3/on_page/resources", &data).await
83 }
84
85 pub async fn duplicate_tags(
88 &self,
89 data: Vec<OnPageApiDuplicateTagsPost>,
90 ) -> DataForSeoApiResponse<OnPageDataApiDuplicateTags> {
91 self.client
92 .http_post("/v3/on_page/duplicate_tags", &data)
93 .await
94 }
95
96 pub async fn duplicate_content(
99 &self,
100 data: Vec<OnPageApiDuplicateContentPost>,
101 ) -> DataForSeoApiResponse<OnPageDataApiDuplicateContent> {
102 self.client
103 .http_post("/v3/on_page/duplicate_content", &data)
104 .await
105 }
106
107 pub async fn links(
110 &self,
111 data: Vec<OnPageApiLinksPost>,
112 ) -> DataForSeoApiResponse<OnPageDataApiLinks> {
113 self.client.http_post("/v3/on_page/links", &data).await
114 }
115
116 pub async fn redirect_chains(
119 &self,
120 data: Vec<OnPageApiRedirectChainsPost>,
121 ) -> DataForSeoApiResponse<OnPageDataApiRedirectChains> {
122 self.client
123 .http_post("/v3/on_page/redirect_chains", &data)
124 .await
125 }
126
127 pub async fn non_indexable(
130 &self,
131 data: Vec<OnPageApiNonIndexablePost>,
132 ) -> DataForSeoApiResponse<OnPageDataApiNonIndexable> {
133 self.client
134 .http_post("/v3/on_page/non_indexable", &data)
135 .await
136 }
137
138 pub async fn waterfall(
141 &self,
142 data: Vec<OnPageApiWaterfallPost>,
143 ) -> DataForSeoApiResponse<OnPageDataApiWaterfall> {
144 self.client.http_post("/v3/on_page/waterfall", &data).await
145 }
146
147 pub async fn keyword_density(
150 &self,
151 data: Vec<OnPageApiKeywordDensityPost>,
152 ) -> DataForSeoApiResponse<OnPageDataApiKeywordDensity> {
153 self.client
154 .http_post("/v3/on_page/keyword_density", &data)
155 .await
156 }
157
158 pub async fn microdata(
161 &self,
162 data: Vec<OnPageApiMicrodataPost>,
163 ) -> DataForSeoApiResponse<OnPageDataApiMicrodata> {
164 self.client.http_post("/v3/on_page/microdata", &data).await
165 }
166
167 pub async fn raw_html(
170 &self,
171 data: Vec<OnPageApiRawHtmlPost>,
172 ) -> DataForSeoApiResponse<OnPageDataApiRawHtml> {
173 self.client.http_post("/v3/on_page/raw_html", &data).await
174 }
175
176 pub async fn page_screenshot(
179 &self,
180 data: Vec<OnPageApiPageScreenshotPost>,
181 ) -> DataForSeoApiResponse<OnPageDataApiPageScreensShot> {
182 self.client
183 .http_post("/v3/on_page/page_screenshot", &data)
184 .await
185 }
186
187 pub async fn content_parsing(
190 &self,
191 data: Vec<OnPageApiContentParsingPost>,
192 ) -> DataForSeoApiResponse<OnPageDataApiContentParsing> {
193 self.client
194 .http_post("/v3/on_page/content_parsing", &data)
195 .await
196 }
197
198 pub async fn content_parsing_live(
201 &self,
202 data: Vec<OnPageApiContentParsingLivePost>,
203 ) -> DataForSeoApiResponse<OnPageDataApiContentParsing> {
204 self.client
205 .http_post("/v3/on_page/content_parsing/live", &data)
206 .await
207 }
208
209 pub async fn instant_pages(
212 &self,
213 data: Vec<OnPageApiInstantPagesPost>,
214 ) -> DataForSeoApiResponse<OnPageDataApiInstantPages> {
215 self.client
216 .http_post("/v3/on_page/instant_pages", &data)
217 .await
218 }
219
220 pub async fn id_list(
223 &self,
224 data: Vec<OnPageApiIdListPost>,
225 ) -> DataForSeoApiResponse<OnPageDataApiIdList> {
226 self.client.http_post("/v3/on_page/id_list", &data).await
227 }
228
229 pub async fn errors(
232 &self,
233 data: Vec<OnPageApiErrorsPost>,
234 ) -> DataForSeoApiResponse<OnPageDataApiError> {
235 self.client.http_post("/v3/on_page/errors", &data).await
236 }
237
238 pub async fn available_filters(&self) -> DataForSeoApiResponse<Value> {
241 self.client.http_get("/v3/on_page/available_filters").await
242 }
243
244 pub async fn lighthouse_task_post(
247 &self,
248 data: Vec<OnPageApiLighthouseTaskPost>,
249 ) -> DataForSeoApiResponse<Value> {
250 self.client
251 .http_post("/v3/on_page/lighthouse/task_post", &data)
252 .await
253 }
254
255 pub async fn lighthouse_tasks_ready(
258 &self,
259 ) -> DataForSeoApiResponse<OnPageDataApiLighthouseTasksReady> {
260 self.client
261 .http_get("/v3/on_page/lighthouse/tasks_ready")
262 .await
263 }
264
265 pub async fn lighthouse_task_get(
268 &self,
269 id: &str,
270 ) -> DataForSeoApiResponse<OnPageDataApiLighthouseTaskGet> {
271 self.client
272 .http_get(format!("/v3/on_page/lighthouse/task_get/json/{id}").as_str())
273 .await
274 }
275
276 pub async fn lighthouse_live(
279 &self,
280 data: Vec<OnPageApiLighthouseLivePost>,
281 ) -> DataForSeoApiResponse<OnPageDataApiLighthouseTaskGet> {
282 self.client
283 .http_post("/v3/on_page/lighthouse/live/json", &data)
284 .await
285 }
286}
287
288#[derive(Debug, Default, Serialize, Deserialize, Clone)]
291pub struct OnPageApiTaskPost {
292 pub target: String,
294 pub max_crawl_pages: i32,
296 #[serde(skip_serializing_if = "Option::is_none")]
298 pub start_url: Option<String>,
299 #[serde(skip_serializing_if = "Option::is_none")]
301 pub force_sitewide_checks: Option<bool>,
302 #[serde(skip_serializing_if = "Option::is_none")]
304 pub priority_urls: Option<Vec<String>>,
305 #[serde(skip_serializing_if = "Option::is_none")]
307 pub max_crawl_depth: Option<i32>,
308 #[serde(skip_serializing_if = "Option::is_none")]
310 pub crawl_delay: Option<i32>,
311 #[serde(skip_serializing_if = "Option::is_none")]
313 pub store_raw_html: Option<bool>,
314 #[serde(skip_serializing_if = "Option::is_none")]
316 pub enable_content_parsing: Option<bool>,
317 #[serde(skip_serializing_if = "Option::is_none")]
319 pub support_cookies: Option<bool>,
320 #[serde(skip_serializing_if = "Option::is_none")]
322 pub accept_language: Option<String>,
323 #[serde(skip_serializing_if = "Option::is_none")]
325 pub custom_robots_txt: Option<String>,
326 #[serde(skip_serializing_if = "Option::is_none")]
328 pub robots_txt_merge_mode: Option<String>,
329 #[serde(skip_serializing_if = "Option::is_none")]
331 pub custom_user_agent: Option<String>,
332 #[serde(skip_serializing_if = "Option::is_none")]
334 pub browser_preset: Option<String>,
335 #[serde(skip_serializing_if = "Option::is_none")]
337 pub browser_screen_width: Option<i32>,
338 #[serde(skip_serializing_if = "Option::is_none")]
340 pub browser_screen_height: Option<i32>,
341 #[serde(skip_serializing_if = "Option::is_none")]
343 pub browser_screen_scale_factor: Option<f64>,
344 #[serde(skip_serializing_if = "Option::is_none")]
346 pub respect_sitemap: Option<bool>,
347 #[serde(skip_serializing_if = "Option::is_none")]
349 pub custom_sitemap: Option<String>,
350 #[serde(skip_serializing_if = "Option::is_none")]
352 pub crawl_sitemap_only: Option<bool>,
353 #[serde(skip_serializing_if = "Option::is_none")]
355 pub load_resources: Option<bool>,
356 #[serde(skip_serializing_if = "Option::is_none")]
358 pub enable_www_redirect_check: Option<bool>,
359 #[serde(skip_serializing_if = "Option::is_none")]
361 pub enable_javascript: Option<bool>,
362 #[serde(skip_serializing_if = "Option::is_none")]
364 pub enable_xhr: Option<bool>,
365 #[serde(skip_serializing_if = "Option::is_none")]
367 pub enable_browser_rendering: Option<bool>,
368 #[serde(skip_serializing_if = "Option::is_none")]
370 pub disable_cookie_popup: Option<bool>,
371 #[serde(skip_serializing_if = "Option::is_none")]
373 pub custom_js: Option<String>,
374 #[serde(skip_serializing_if = "Option::is_none")]
376 pub validate_micromarkup: Option<bool>,
377 #[serde(skip_serializing_if = "Option::is_none")]
379 pub allow_subdomains: Option<bool>,
380 #[serde(skip_serializing_if = "Option::is_none")]
382 pub allowed_subdomains: Option<Vec<String>>,
383 #[serde(skip_serializing_if = "Option::is_none")]
385 pub disallowed_subdomains: Option<Vec<String>>,
386 #[serde(skip_serializing_if = "Option::is_none")]
388 pub check_spell: Option<bool>,
389 #[serde(skip_serializing_if = "Option::is_none")]
391 pub check_spell_language: Option<String>,
392 #[serde(skip_serializing_if = "Option::is_none")]
394 pub check_spell_exceptions: Option<Vec<String>>,
395 #[serde(skip_serializing_if = "Option::is_none")]
397 pub calculate_keyword_density: Option<bool>,
398 #[serde(skip_serializing_if = "Option::is_none")]
400 pub checks_threshold: Option<Value>,
401 #[serde(skip_serializing_if = "Option::is_none")]
403 pub disable_sitewide_checks: Option<Vec<String>>,
404 #[serde(skip_serializing_if = "Option::is_none")]
406 pub disable_page_checks: Option<Vec<String>>,
407 #[serde(skip_serializing_if = "Option::is_none")]
409 pub switch_pool: Option<bool>,
410 #[serde(skip_serializing_if = "Option::is_none")]
412 pub return_despite_timeout: Option<bool>,
413 #[serde(skip_serializing_if = "Option::is_none")]
415 pub tag: Option<String>,
416 #[serde(skip_serializing_if = "Option::is_none")]
418 pub pingback_url: Option<String>,
419}
420
421impl OnPageApiTaskPost {
422 pub fn new(target: String, max_crawl_pages: i32) -> Self {
424 OnPageApiTaskPost {
425 target,
426 max_crawl_pages,
427 ..OnPageApiTaskPost::default()
428 }
429 }
430}
431
432#[derive(Debug, Default, Serialize, Deserialize, Clone)]
435pub struct OnPageApiPagesPost {
436 pub id: String,
438 #[serde(skip_serializing_if = "Option::is_none")]
440 pub limit: Option<i32>,
441 #[serde(skip_serializing_if = "Option::is_none")]
443 pub offset: Option<i32>,
444 #[serde(skip_serializing_if = "Option::is_none")]
446 pub filters: Option<Vec<Vec<String>>>,
447 #[serde(skip_serializing_if = "Option::is_none")]
449 pub order_by: Option<Vec<String>>,
450 #[serde(skip_serializing_if = "Option::is_none")]
452 pub search_after_token: Option<String>,
453 #[serde(skip_serializing_if = "Option::is_none")]
455 pub tag: Option<String>,
456}
457
458impl OnPageApiPagesPost {
459 pub fn new(id: String) -> Self {
461 OnPageApiPagesPost {
462 id,
463 ..OnPageApiPagesPost::default()
464 }
465 }
466}
467
468#[derive(Debug, Default, Serialize, Deserialize, Clone)]
471pub struct OnPageApiPagesByResourcePost {
472 pub id: String,
474 pub url: String,
476 #[serde(skip_serializing_if = "Option::is_none")]
478 pub limit: Option<i32>,
479 #[serde(skip_serializing_if = "Option::is_none")]
481 pub offset: Option<i32>,
482 #[serde(skip_serializing_if = "Option::is_none")]
484 pub filters: Option<Vec<Vec<String>>>,
485 #[serde(skip_serializing_if = "Option::is_none")]
487 pub order_by: Option<Vec<String>>,
488 #[serde(skip_serializing_if = "Option::is_none")]
490 pub tag: Option<String>,
491}
492
493impl OnPageApiPagesByResourcePost {
494 pub fn new(id: String, url: String) -> Self {
496 OnPageApiPagesByResourcePost {
497 id,
498 url,
499 ..OnPageApiPagesByResourcePost::default()
500 }
501 }
502}
503
504#[derive(Debug, Default, Serialize, Deserialize, Clone)]
507pub struct OnPageApiResourcesPost {
508 pub id: String,
510 #[serde(skip_serializing_if = "Option::is_none")]
512 pub url: Option<String>,
513 #[serde(skip_serializing_if = "Option::is_none")]
515 pub limit: Option<i32>,
516 #[serde(skip_serializing_if = "Option::is_none")]
518 pub offset: Option<i32>,
519 #[serde(skip_serializing_if = "Option::is_none")]
521 pub filters: Option<Vec<Value>>,
522 #[serde(skip_serializing_if = "Option::is_none")]
524 pub relevant_pages_filters: Option<Vec<Value>>,
525 #[serde(skip_serializing_if = "Option::is_none")]
527 pub order_by: Option<Vec<String>>,
528 #[serde(skip_serializing_if = "Option::is_none")]
530 pub search_after_token: Option<String>,
531 #[serde(skip_serializing_if = "Option::is_none")]
533 pub tag: Option<String>,
534}
535
536impl OnPageApiResourcesPost {
537 pub fn new(id: String) -> Self {
539 OnPageApiResourcesPost {
540 id,
541 ..OnPageApiResourcesPost::default()
542 }
543 }
544}
545
546#[derive(Debug, Default, Serialize, Deserialize, Clone)]
549pub struct OnPageApiDuplicateTagsPost {
550 pub id: String,
552 #[serde(rename = "type")]
554 pub duplicate_type: String,
555 #[serde(skip_serializing_if = "Option::is_none")]
557 pub accumulator: Option<String>,
558 #[serde(skip_serializing_if = "Option::is_none")]
560 pub limit: Option<i32>,
561 #[serde(skip_serializing_if = "Option::is_none")]
563 pub offset: Option<i32>,
564 #[serde(skip_serializing_if = "Option::is_none")]
566 pub tag: Option<String>,
567}
568
569impl OnPageApiDuplicateTagsPost {
570 pub fn new(id: String, duplicate_type: String) -> Self {
572 OnPageApiDuplicateTagsPost {
573 id,
574 duplicate_type,
575 ..OnPageApiDuplicateTagsPost::default()
576 }
577 }
578}
579
580#[derive(Debug, Default, Serialize, Deserialize, Clone)]
583pub struct OnPageApiDuplicateContentPost {
584 pub id: String,
586 pub url: String,
588 #[serde(skip_serializing_if = "Option::is_none")]
590 pub similarity: Option<i32>,
591 #[serde(skip_serializing_if = "Option::is_none")]
593 pub limit: Option<i32>,
594 #[serde(skip_serializing_if = "Option::is_none")]
596 pub offset: Option<i32>,
597 #[serde(skip_serializing_if = "Option::is_none")]
599 pub tag: Option<String>,
600}
601
602impl OnPageApiDuplicateContentPost {
603 pub fn new(id: String, url: String) -> Self {
605 OnPageApiDuplicateContentPost {
606 id,
607 url,
608 ..OnPageApiDuplicateContentPost::default()
609 }
610 }
611}
612
613#[derive(Debug, Default, Serialize, Deserialize, Clone)]
616pub struct OnPageApiLinksPost {
617 pub id: String,
619 #[serde(skip_serializing_if = "Option::is_none")]
621 pub page_from: Option<String>,
622 #[serde(skip_serializing_if = "Option::is_none")]
624 pub page_to: Option<String>,
625 #[serde(skip_serializing_if = "Option::is_none")]
627 pub limit: Option<i32>,
628 #[serde(skip_serializing_if = "Option::is_none")]
630 pub offset: Option<i32>,
631 #[serde(skip_serializing_if = "Option::is_none")]
633 pub filters: Option<Vec<Value>>,
634 #[serde(skip_serializing_if = "Option::is_none")]
636 pub search_after_token: Option<String>,
637 #[serde(skip_serializing_if = "Option::is_none")]
639 pub tag: Option<String>,
640}
641
642impl OnPageApiLinksPost {
643 pub fn new(id: String) -> Self {
645 OnPageApiLinksPost {
646 id,
647 ..OnPageApiLinksPost::default()
648 }
649 }
650}
651
652#[derive(Debug, Default, Serialize, Deserialize, Clone)]
655pub struct OnPageApiRedirectChainsPost {
656 pub id: String,
658 #[serde(skip_serializing_if = "Option::is_none")]
660 pub url: Option<String>,
661 #[serde(skip_serializing_if = "Option::is_none")]
663 pub limit: Option<i32>,
664 #[serde(skip_serializing_if = "Option::is_none")]
666 pub offset: Option<i32>,
667 #[serde(skip_serializing_if = "Option::is_none")]
669 pub filters: Option<Vec<Value>>,
670 #[serde(skip_serializing_if = "Option::is_none")]
672 pub tag: Option<String>,
673}
674
675impl OnPageApiRedirectChainsPost {
676 pub fn new(id: String) -> Self {
678 OnPageApiRedirectChainsPost {
679 id,
680 ..OnPageApiRedirectChainsPost::default()
681 }
682 }
683}
684
685#[derive(Debug, Default, Serialize, Deserialize, Clone)]
688pub struct OnPageApiNonIndexablePost {
689 pub id: String,
691 #[serde(skip_serializing_if = "Option::is_none")]
693 pub limit: Option<i32>,
694 #[serde(skip_serializing_if = "Option::is_none")]
696 pub offset: Option<i32>,
697 #[serde(skip_serializing_if = "Option::is_none")]
699 pub filters: Option<Vec<Value>>,
700}
701
702impl OnPageApiNonIndexablePost {
703 pub fn new(id: String) -> Self {
705 OnPageApiNonIndexablePost {
706 id,
707 ..OnPageApiNonIndexablePost::default()
708 }
709 }
710}
711
712#[derive(Debug, Default, Serialize, Deserialize, Clone)]
715pub struct OnPageApiWaterfallPost {
716 pub id: String,
718 pub url: String,
720 #[serde(skip_serializing_if = "Option::is_none")]
722 pub tag: Option<String>,
723}
724
725impl OnPageApiWaterfallPost {
726 pub fn new(id: String, url: String) -> OnPageApiWaterfallPost {
728 OnPageApiWaterfallPost { id, url, tag: None }
729 }
730}
731
732#[derive(Debug, Default, Serialize, Deserialize, Clone)]
735pub struct OnPageApiKeywordDensityPost {
736 pub id: String,
738 pub keyword_length: i32,
740 #[serde(skip_serializing_if = "Option::is_none")]
742 pub url: Option<String>,
743 #[serde(skip_serializing_if = "Option::is_none")]
745 pub limit: Option<i32>,
746 #[serde(skip_serializing_if = "Option::is_none")]
748 pub offset: Option<i32>,
749 #[serde(skip_serializing_if = "Option::is_none")]
751 pub filters: Option<Vec<Vec<String>>>,
752 #[serde(skip_serializing_if = "Option::is_none")]
754 pub order_by: Option<Vec<String>>,
755 #[serde(skip_serializing_if = "Option::is_none")]
757 pub tag: Option<String>,
758}
759
760impl OnPageApiKeywordDensityPost {
761 pub fn new(id: String, keyword_length: i32) -> OnPageApiKeywordDensityPost {
763 OnPageApiKeywordDensityPost {
764 id,
765 keyword_length,
766 ..OnPageApiKeywordDensityPost::default()
767 }
768 }
769}
770
771#[derive(Debug, Default, Serialize, Deserialize, Clone)]
774pub struct OnPageApiMicrodataPost {
775 pub id: String,
777 pub url: String,
779 #[serde(skip_serializing_if = "Option::is_none")]
781 pub tag: Option<String>,
782}
783
784impl OnPageApiMicrodataPost {
785 pub fn new(id: String, url: String) -> OnPageApiMicrodataPost {
787 OnPageApiMicrodataPost { id, url, tag: None }
788 }
789}
790
791#[derive(Debug, Default, Serialize, Deserialize, Clone)]
794pub struct OnPageApiRawHtmlPost {
795 pub id: String,
797 pub url: String,
799}
800
801impl OnPageApiRawHtmlPost {
802 pub fn new(id: String, url: String) -> Self {
804 OnPageApiRawHtmlPost { id, url }
805 }
806}
807
808#[derive(Debug, Default, Serialize, Deserialize, Clone)]
811pub struct OnPageApiPageScreenshotPost {
812 pub url: String,
814 #[serde(skip_serializing_if = "Option::is_none")]
816 pub accept_language: Option<String>,
817 #[serde(skip_serializing_if = "Option::is_none")]
819 pub custom_user_agent: Option<String>,
820 #[serde(skip_serializing_if = "Option::is_none")]
822 pub browser_preset: Option<String>,
823 #[serde(skip_serializing_if = "Option::is_none")]
825 pub browser_screen_width: Option<i32>,
826 #[serde(skip_serializing_if = "Option::is_none")]
828 pub browser_screen_height: Option<i32>,
829 #[serde(skip_serializing_if = "Option::is_none")]
831 pub browser_screen_scale_factor: Option<f64>,
832 #[serde(skip_serializing_if = "Option::is_none")]
834 pub full_page_screenshot: Option<bool>,
835 #[serde(skip_serializing_if = "Option::is_none")]
837 pub disable_cookie_popup: Option<bool>,
838 #[serde(skip_serializing_if = "Option::is_none")]
840 pub switch_pool: Option<bool>,
841 #[serde(skip_serializing_if = "Option::is_none")]
843 pub ip_pool_for_scan: Option<String>,
844}
845
846impl OnPageApiPageScreenshotPost {
847 pub fn new(url: String) -> Self {
849 OnPageApiPageScreenshotPost {
850 url,
851 ..OnPageApiPageScreenshotPost::default()
852 }
853 }
854}
855
856#[derive(Debug, Default, Serialize, Deserialize, Clone)]
859pub struct OnPageApiContentParsingPost {
860 pub id: String,
862 pub url: String,
864 #[serde(skip_serializing_if = "Option::is_none")]
866 pub markdown_view: Option<bool>,
867}
868
869impl OnPageApiContentParsingPost {
870 pub fn new(id: String, url: String) -> Self {
872 OnPageApiContentParsingPost {
873 id,
874 url,
875 ..OnPageApiContentParsingPost::default()
876 }
877 }
878}
879
880#[derive(Debug, Default, Serialize, Deserialize, Clone)]
883pub struct OnPageApiContentParsingLivePost {
884 pub url: String,
886 #[serde(skip_serializing_if = "Option::is_none")]
888 pub custom_user_agent: Option<String>,
889 #[serde(skip_serializing_if = "Option::is_none")]
891 pub browser_preset: Option<String>,
892 #[serde(skip_serializing_if = "Option::is_none")]
894 pub browser_screen_width: Option<i32>,
895 #[serde(skip_serializing_if = "Option::is_none")]
897 pub browser_screen_height: Option<i32>,
898 #[serde(skip_serializing_if = "Option::is_none")]
900 pub browser_screen_scale_factor: Option<f64>,
901 #[serde(skip_serializing_if = "Option::is_none")]
903 pub store_raw_html: Option<bool>,
904 #[serde(skip_serializing_if = "Option::is_none")]
906 pub disable_cookie_popup: Option<bool>,
907 #[serde(skip_serializing_if = "Option::is_none")]
909 pub accept_language: Option<String>,
910 #[serde(skip_serializing_if = "Option::is_none")]
912 pub enable_javascript: Option<bool>,
913 #[serde(skip_serializing_if = "Option::is_none")]
915 pub enable_browser_rendering: Option<bool>,
916 #[serde(skip_serializing_if = "Option::is_none")]
918 pub enable_xhr: Option<bool>,
919 #[serde(skip_serializing_if = "Option::is_none")]
921 pub switch_pool: Option<bool>,
922 #[serde(skip_serializing_if = "Option::is_none")]
924 pub ip_pool_for_scan: Option<String>,
925 #[serde(skip_serializing_if = "Option::is_none")]
927 pub markdown_view: Option<bool>,
928}
929
930impl OnPageApiContentParsingLivePost {
931 pub fn new(url: String) -> Self {
933 OnPageApiContentParsingLivePost {
934 url,
935 ..OnPageApiContentParsingLivePost::default()
936 }
937 }
938}
939
940#[derive(Debug, Default, Serialize, Deserialize, Clone)]
943pub struct OnPageApiInstantPagesPost {
944 pub url: String,
946 #[serde(skip_serializing_if = "Option::is_none")]
948 pub custom_user_agent: Option<String>,
949 #[serde(skip_serializing_if = "Option::is_none")]
951 pub browser_preset: Option<String>,
952 #[serde(skip_serializing_if = "Option::is_none")]
954 pub browser_screen_width: Option<i32>,
955 #[serde(skip_serializing_if = "Option::is_none")]
957 pub browser_screen_height: Option<i32>,
958 #[serde(skip_serializing_if = "Option::is_none")]
960 pub browser_screen_scale_factor: Option<f64>,
961 #[serde(skip_serializing_if = "Option::is_none")]
963 pub store_raw_html: Option<bool>,
964 #[serde(skip_serializing_if = "Option::is_none")]
966 pub accept_language: Option<String>,
967 #[serde(skip_serializing_if = "Option::is_none")]
969 pub load_resources: Option<bool>,
970 #[serde(skip_serializing_if = "Option::is_none")]
972 pub enable_javascript: Option<bool>,
973 #[serde(skip_serializing_if = "Option::is_none")]
975 pub enable_browser_rendering: Option<bool>,
976 #[serde(skip_serializing_if = "Option::is_none")]
978 pub disable_cookie_popup: Option<bool>,
979 #[serde(skip_serializing_if = "Option::is_none")]
981 pub return_despite_timeout: Option<bool>,
982 #[serde(skip_serializing_if = "Option::is_none")]
984 pub enable_xhr: Option<bool>,
985 #[serde(skip_serializing_if = "Option::is_none")]
987 pub custom_js: Option<String>,
988 #[serde(skip_serializing_if = "Option::is_none")]
990 pub validate_micromarkup: Option<bool>,
991 #[serde(skip_serializing_if = "Option::is_none")]
993 pub check_spell: Option<bool>,
994 #[serde(skip_serializing_if = "Option::is_none")]
996 pub checks_threshold: Option<Value>,
997 #[serde(skip_serializing_if = "Option::is_none")]
999 pub switch_pool: Option<bool>,
1000 #[serde(skip_serializing_if = "Option::is_none")]
1002 pub ip_pool_for_scan: Option<String>,
1003}
1004
1005impl OnPageApiInstantPagesPost {
1006 pub fn new(url: String) -> Self {
1008 OnPageApiInstantPagesPost {
1009 url,
1010 ..OnPageApiInstantPagesPost::default()
1011 }
1012 }
1013}
1014
1015#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1018pub struct OnPageApiIdListPost {
1019 pub datetime_from: String,
1021 pub datetime_to: String,
1023 #[serde(skip_serializing_if = "Option::is_none")]
1025 pub limit: Option<i32>,
1026 #[serde(skip_serializing_if = "Option::is_none")]
1028 pub offset: Option<i32>,
1029 #[serde(skip_serializing_if = "Option::is_none")]
1031 pub sort: Option<String>,
1032 #[serde(skip_serializing_if = "Option::is_none")]
1034 pub include_metadata: Option<bool>,
1035}
1036
1037impl OnPageApiIdListPost {
1038 pub fn new(datetime_from: String, datetime_to: String) -> Self {
1040 OnPageApiIdListPost {
1041 datetime_from,
1042 datetime_to,
1043 ..OnPageApiIdListPost::default()
1044 }
1045 }
1046}
1047
1048#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1051pub struct OnPageApiErrorsPost {
1052 #[serde(skip_serializing_if = "Option::is_none")]
1054 pub limit: Option<i32>,
1055 #[serde(skip_serializing_if = "Option::is_none")]
1057 pub offset: Option<i32>,
1058 #[serde(skip_serializing_if = "Option::is_none")]
1060 pub filtered_function: Option<String>,
1061 #[serde(skip_serializing_if = "Option::is_none")]
1063 pub datetime_from: Option<String>,
1064 #[serde(skip_serializing_if = "Option::is_none")]
1066 pub datetime_to: Option<String>,
1067}
1068
1069#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1072pub struct OnPageApiForceStopPost {
1073 pub id: String,
1075}
1076
1077impl OnPageApiForceStopPost {
1078 pub fn new(id: String) -> Self {
1080 OnPageApiForceStopPost { id }
1081 }
1082}
1083
1084#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1087pub struct OnPageApiLighthouseTaskPost {
1088 pub url: String,
1090 #[serde(skip_serializing_if = "Option::is_none")]
1092 pub for_mobile: Option<bool>,
1093 #[serde(skip_serializing_if = "Option::is_none")]
1095 pub categories: Option<Vec<String>>,
1096 #[serde(skip_serializing_if = "Option::is_none")]
1098 pub audits: Option<Vec<String>>,
1099 #[serde(skip_serializing_if = "Option::is_none")]
1101 pub version: Option<String>,
1102 #[serde(skip_serializing_if = "Option::is_none")]
1104 pub language_name: Option<String>,
1105 #[serde(skip_serializing_if = "Option::is_none")]
1107 pub language_code: Option<String>,
1108 #[serde(skip_serializing_if = "Option::is_none")]
1110 pub tag: Option<String>,
1111 #[serde(skip_serializing_if = "Option::is_none")]
1113 pub pingback_url: Option<String>,
1114 #[serde(skip_serializing_if = "Option::is_none")]
1116 pub postback_url: Option<String>,
1117}
1118
1119impl OnPageApiLighthouseTaskPost {
1120 pub fn new(url: String) -> Self {
1122 OnPageApiLighthouseTaskPost {
1123 url,
1124 ..OnPageApiLighthouseTaskPost::default()
1125 }
1126 }
1127}
1128
1129#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1132pub struct OnPageApiLighthouseLivePost {
1133 pub url: String,
1135 #[serde(skip_serializing_if = "Option::is_none")]
1137 pub for_mobile: Option<bool>,
1138 #[serde(skip_serializing_if = "Option::is_none")]
1140 pub categories: Option<Vec<String>>,
1141 #[serde(skip_serializing_if = "Option::is_none")]
1143 pub audits: Option<Vec<String>>,
1144 #[serde(skip_serializing_if = "Option::is_none")]
1146 pub version: Option<String>,
1147 #[serde(skip_serializing_if = "Option::is_none")]
1149 pub language_name: Option<String>,
1150 #[serde(skip_serializing_if = "Option::is_none")]
1152 pub language_code: Option<String>,
1153 #[serde(skip_serializing_if = "Option::is_none")]
1155 pub custom_user_agent: Option<String>,
1156 #[serde(skip_serializing_if = "Option::is_none")]
1158 pub browser_screen_width: Option<i32>,
1159 #[serde(skip_serializing_if = "Option::is_none")]
1161 pub browser_screen_height: Option<i32>,
1162 #[serde(skip_serializing_if = "Option::is_none")]
1164 pub browser_screen_scale_factor: Option<f64>,
1165 #[serde(skip_serializing_if = "Option::is_none")]
1167 pub browser_network_throttling_method: Option<String>,
1168 #[serde(skip_serializing_if = "Option::is_none")]
1170 pub browser_cpu_throttling_multiplier: Option<f64>,
1171 #[serde(skip_serializing_if = "Option::is_none")]
1173 pub browser_network_throttling: Option<String>,
1174 #[serde(skip_serializing_if = "Option::is_none")]
1176 pub tag: Option<String>,
1177}
1178
1179impl OnPageApiLighthouseLivePost {
1180 pub fn new(url: String) -> Self {
1182 OnPageApiLighthouseLivePost {
1183 url,
1184 ..OnPageApiLighthouseLivePost::default()
1185 }
1186 }
1187}