1use crate::entity::{
2 BacklinksApiAnchor, BacklinksApiBacklinks, BacklinksApiBulkBacklinks,
3 BacklinksApiBulkNewLostBacklinks, BacklinksApiBulkNewLostReferringDomains,
4 BacklinksApiBulkPagesSummary, BacklinksApiBulkRanks, BacklinksApiBulkReferringDomains,
5 BacklinksApiBulkSpamScore, BacklinksApiCompetitors, BacklinksApiDomainIntersection,
6 BacklinksApiDomainPages, BacklinksApiDomainPagesSummary, BacklinksApiError,
7 BacklinksApiHistory, BacklinksApiIdListItem, BacklinksApiIndex, BacklinksApiPageIntersection,
8 BacklinksApiReferringDomains, BacklinksApiReferringNetworks, BacklinksApiSummary,
9 BacklinksApiTimeseriesNewLostSummary, BacklinksApiTimeseriesSummary,
10};
11use crate::{DataForSeoApiResponse, DataForSeoClient};
12use serde::{Deserialize, Serialize};
13use serde_json::Value;
14
15pub struct BacklinksApi<'a> {
18 client: &'a DataForSeoClient,
19}
20
21impl DataForSeoClient {
22 pub fn backlinks(&self) -> BacklinksApi<'_> {
24 BacklinksApi { client: self }
25 }
26}
27
28impl BacklinksApi<'_> {
29 pub async fn index(&self) -> DataForSeoApiResponse<BacklinksApiIndex> {
32 self.client.http_get("/v3/backlinks/index").await
33 }
34
35 pub async fn available_filters(&self) -> DataForSeoApiResponse<Value> {
38 self.client
39 .http_get("/v3/backlinks/available_filters")
40 .await
41 }
42
43 pub async fn summary(
46 &self,
47 data: Vec<BacklinksApiSummaryPost>,
48 ) -> DataForSeoApiResponse<BacklinksApiSummary> {
49 self.client
50 .http_post("/v3/backlinks/summary/live", &data)
51 .await
52 }
53
54 pub async fn history(
57 &self,
58 data: Vec<BacklinksApiHistoryPost>,
59 ) -> DataForSeoApiResponse<BacklinksApiHistory> {
60 self.client
61 .http_post("/v3/backlinks/history/live", &data)
62 .await
63 }
64
65 pub async fn backlinks(
68 &self,
69 data: Vec<BacklinksApiBacklinksPost>,
70 ) -> DataForSeoApiResponse<BacklinksApiBacklinks> {
71 self.client
72 .http_post("/v3/backlinks/backlinks/live", &data)
73 .await
74 }
75
76 pub async fn anchor(
79 &self,
80 data: Vec<BacklinksApiAnchorPost>,
81 ) -> DataForSeoApiResponse<BacklinksApiAnchor> {
82 self.client
83 .http_post("/v3/backlinks/anchors/live", &data)
84 .await
85 }
86
87 pub async fn domain_pages(
90 &self,
91 data: Vec<BacklinksApiDomainPagesPost>,
92 ) -> DataForSeoApiResponse<BacklinksApiDomainPages> {
93 self.client
94 .http_post("/v3/backlinks/domain_pages/live", &data)
95 .await
96 }
97
98 pub async fn domain_pages_summary(
101 &self,
102 data: Vec<BacklinksApiDomainPagesSummaryPost>,
103 ) -> DataForSeoApiResponse<BacklinksApiDomainPagesSummary> {
104 self.client
105 .http_post("/v3/backlinks/domain_pages_summary/live", &data)
106 .await
107 }
108
109 pub async fn referring_domains(
112 &self,
113 data: Vec<BacklinksApiReferringDomainsPost>,
114 ) -> DataForSeoApiResponse<BacklinksApiReferringDomains> {
115 self.client
116 .http_post("/v3/backlinks/referring_domains/live", &data)
117 .await
118 }
119
120 pub async fn referring_networks(
123 &self,
124 data: Vec<BacklinksApiReferringNetworksPost>,
125 ) -> DataForSeoApiResponse<BacklinksApiReferringNetworks> {
126 self.client
127 .http_post("/v3/backlinks/referring_networks/live", &data)
128 .await
129 }
130
131 pub async fn competitors(
134 &self,
135 data: Vec<BacklinksApiCompetitorsPost>,
136 ) -> DataForSeoApiResponse<BacklinksApiCompetitors> {
137 self.client
138 .http_post("/v3/backlinks/competitors/live", &data)
139 .await
140 }
141
142 pub async fn domain_intersection(
145 &self,
146 data: Vec<BacklinksApiDomainIntersectionPost>,
147 ) -> DataForSeoApiResponse<BacklinksApiDomainIntersection> {
148 self.client
149 .http_post("/v3/backlinks/domain_intersection/live", &data)
150 .await
151 }
152
153 pub async fn page_intersection(
156 &self,
157 data: Vec<BacklinksApiPageIntersectionPost>,
158 ) -> DataForSeoApiResponse<BacklinksApiPageIntersection> {
159 self.client
160 .http_post("/v3/backlinks/page_intersection/live", &data)
161 .await
162 }
163
164 pub async fn timeseries_summary(
167 &self,
168 data: Vec<BacklinksApiTimeseriesSummaryPost>,
169 ) -> DataForSeoApiResponse<BacklinksApiTimeseriesSummary> {
170 self.client
171 .http_post("/v3/backlinks/timeseries_summary/live", &data)
172 .await
173 }
174
175 pub async fn timeseries_new_lost_summary(
178 &self,
179 data: Vec<BacklinksApiTimeseriesNewLostSummaryPost>,
180 ) -> DataForSeoApiResponse<BacklinksApiTimeseriesNewLostSummary> {
181 self.client
182 .http_post("/v3/backlinks/timeseries_new_lost_summary/live", &data)
183 .await
184 }
185
186 pub async fn bulk_ranks(
189 &self,
190 data: Vec<BacklinksApiBulkRanksPost>,
191 ) -> DataForSeoApiResponse<BacklinksApiBulkRanks> {
192 self.client
193 .http_post("/v3/backlinks/bulk_ranks/live", &data)
194 .await
195 }
196
197 pub async fn bulk_backlinks(
200 &self,
201 data: Vec<BacklinksApiBulkBacklinksPost>,
202 ) -> DataForSeoApiResponse<BacklinksApiBulkBacklinks> {
203 self.client
204 .http_post("/v3/backlinks/bulk_backlinks/live", &data)
205 .await
206 }
207
208 pub async fn bulk_spam_score(
211 &self,
212 data: Vec<BacklinksApiBulkSpamScorePost>,
213 ) -> DataForSeoApiResponse<BacklinksApiBulkSpamScore> {
214 self.client
215 .http_post("/v3/backlinks/bulk_spam_score/live", &data)
216 .await
217 }
218
219 pub async fn bulk_new_lost_backlinks(
222 &self,
223 data: Vec<BacklinksApiBulkNewLostBacklinksPost>,
224 ) -> DataForSeoApiResponse<BacklinksApiBulkNewLostBacklinks> {
225 self.client
226 .http_post("/v3/backlinks/bulk_new_lost_backlinks/live", &data)
227 .await
228 }
229
230 pub async fn bulk_new_lost_referring_domains(
233 &self,
234 data: Vec<BacklinksApiBulkNewLostReferringDomainsPost>,
235 ) -> DataForSeoApiResponse<BacklinksApiBulkNewLostReferringDomains> {
236 self.client
237 .http_post("/v3/backlinks/bulk_new_lost_referring_domains/live", &data)
238 .await
239 }
240
241 pub async fn bulk_referring_domains(
244 &self,
245 data: Vec<BacklinksApiBulkReferringDomainsPost>,
246 ) -> DataForSeoApiResponse<BacklinksApiBulkReferringDomains> {
247 self.client
248 .http_post("/v3/backlinks/bulk_referring_domains/live", &data)
249 .await
250 }
251
252 pub async fn bulk_pages_summary(
255 &self,
256 data: Vec<BacklinksApiBulkPagesSummaryPost>,
257 ) -> DataForSeoApiResponse<BacklinksApiBulkPagesSummary> {
258 self.client
259 .http_post("/v3/backlinks/bulk_pages_summary/live", &data)
260 .await
261 }
262
263 pub async fn errors(
266 &self,
267 data: Vec<BacklinksApiErrorsPost>,
268 ) -> DataForSeoApiResponse<BacklinksApiError> {
269 self.client.http_post("/v3/backlinks/errors", &data).await
270 }
271
272 pub async fn id_list(
275 &self,
276 data: Vec<BacklinksApiIdListPost>,
277 ) -> DataForSeoApiResponse<BacklinksApiIdListItem> {
278 self.client.http_post("/v3/backlinks/id_list", &data).await
279 }
280}
281
282#[derive(Debug, Default, Serialize, Deserialize, Clone)]
284pub struct BacklinksApiSummaryPost {
285 pub target: String,
287 #[serde(skip_serializing_if = "Option::is_none")]
289 pub include_subdomains: Option<bool>,
290 #[serde(skip_serializing_if = "Option::is_none")]
292 pub include_indirect_links: Option<bool>,
293 #[serde(skip_serializing_if = "Option::is_none")]
295 pub exclude_internal_backlinks: Option<bool>,
296 #[serde(skip_serializing_if = "Option::is_none")]
298 pub internal_list_limit: Option<i32>,
299 #[serde(skip_serializing_if = "Option::is_none")]
301 pub backlinks_status_type: Option<String>,
302 #[serde(skip_serializing_if = "Option::is_none")]
304 pub backlinks_filters: Option<Vec<Value>>,
305 #[serde(skip_serializing_if = "Option::is_none")]
307 pub rank_scale: Option<String>,
308 #[serde(skip_serializing_if = "Option::is_none")]
310 pub tag: Option<String>,
311}
312
313impl BacklinksApiSummaryPost {
314 pub fn new(target: &str) -> BacklinksApiSummaryPost {
316 BacklinksApiSummaryPost {
317 target: target.to_string(),
318 ..Default::default()
319 }
320 }
321}
322
323#[derive(Debug, Default, Serialize, Deserialize, Clone)]
325pub struct BacklinksApiHistoryPost {
326 pub target: String,
328 #[serde(skip_serializing_if = "Option::is_none")]
330 pub date_from: Option<String>,
331 #[serde(skip_serializing_if = "Option::is_none")]
333 pub date_to: Option<String>,
334 #[serde(skip_serializing_if = "Option::is_none")]
336 pub rank_scale: Option<String>,
337 #[serde(skip_serializing_if = "Option::is_none")]
339 pub tag: Option<String>,
340}
341
342impl BacklinksApiHistoryPost {
343 pub fn new(target: &str) -> BacklinksApiHistoryPost {
345 BacklinksApiHistoryPost {
346 target: target.to_string(),
347 ..Default::default()
348 }
349 }
350}
351
352#[derive(Debug, Default, Serialize, Deserialize, Clone)]
354pub struct BacklinksApiBacklinksPost {
355 pub target: String,
357 #[serde(skip_serializing_if = "Option::is_none")]
359 pub mode: Option<String>,
360 #[serde(skip_serializing_if = "Option::is_none")]
362 pub custom_mode: Option<Value>,
363 #[serde(skip_serializing_if = "Option::is_none")]
365 pub filters: Option<Vec<Value>>,
366 #[serde(skip_serializing_if = "Option::is_none")]
368 pub order_by: Option<Vec<String>>,
369 #[serde(skip_serializing_if = "Option::is_none")]
371 pub offset: Option<i32>,
372 #[serde(skip_serializing_if = "Option::is_none")]
374 pub search_after_token: Option<String>,
375 #[serde(skip_serializing_if = "Option::is_none")]
377 pub limit: Option<i32>,
378 #[serde(skip_serializing_if = "Option::is_none")]
380 pub backlinks_status_type: Option<String>,
381 #[serde(skip_serializing_if = "Option::is_none")]
383 pub include_subdomains: Option<bool>,
384 #[serde(skip_serializing_if = "Option::is_none")]
386 pub include_indirect_links: Option<bool>,
387 #[serde(skip_serializing_if = "Option::is_none")]
389 pub exclude_internal_backlinks: Option<bool>,
390 #[serde(skip_serializing_if = "Option::is_none")]
392 pub rank_scale: Option<String>,
393 #[serde(skip_serializing_if = "Option::is_none")]
395 pub tag: Option<String>,
396}
397
398impl BacklinksApiBacklinksPost {
399 pub fn new(target: &str) -> BacklinksApiBacklinksPost {
401 BacklinksApiBacklinksPost {
402 target: target.to_string(),
403 ..Default::default()
404 }
405 }
406}
407
408#[derive(Debug, Default, Serialize, Deserialize, Clone)]
410pub struct BacklinksApiAnchorPost {
411 pub target: String,
413 #[serde(skip_serializing_if = "Option::is_none")]
415 pub limit: Option<i32>,
416 #[serde(skip_serializing_if = "Option::is_none")]
418 pub offset: Option<i32>,
419 #[serde(skip_serializing_if = "Option::is_none")]
421 pub internal_list_limit: Option<i32>,
422 #[serde(skip_serializing_if = "Option::is_none")]
424 pub backlinks_status_type: Option<String>,
425 #[serde(skip_serializing_if = "Option::is_none")]
427 pub filters: Option<Vec<Value>>,
428 #[serde(skip_serializing_if = "Option::is_none")]
430 pub order_by: Option<Vec<String>>,
431 #[serde(skip_serializing_if = "Option::is_none")]
433 pub backlinks_filters: Option<Vec<Value>>,
434 #[serde(skip_serializing_if = "Option::is_none")]
436 pub include_subdomains: Option<bool>,
437 #[serde(skip_serializing_if = "Option::is_none")]
439 pub include_indirect_links: Option<bool>,
440 #[serde(skip_serializing_if = "Option::is_none")]
442 pub exclude_internal_backlinks: Option<bool>,
443 #[serde(skip_serializing_if = "Option::is_none")]
445 pub rank_scale: Option<String>,
446 #[serde(skip_serializing_if = "Option::is_none")]
448 pub tag: Option<String>,
449}
450
451impl BacklinksApiAnchorPost {
452 pub fn new(target: &str) -> BacklinksApiAnchorPost {
454 BacklinksApiAnchorPost {
455 target: target.to_string(),
456 ..Default::default()
457 }
458 }
459}
460
461#[derive(Debug, Default, Serialize, Deserialize, Clone)]
463pub struct BacklinksApiDomainPagesPost {
464 pub target: String,
466 #[serde(skip_serializing_if = "Option::is_none")]
468 pub limit: Option<i32>,
469 #[serde(skip_serializing_if = "Option::is_none")]
471 pub offset: Option<i32>,
472 #[serde(skip_serializing_if = "Option::is_none")]
474 pub internal_list_limit: Option<i32>,
475 #[serde(skip_serializing_if = "Option::is_none")]
477 pub backlinks_status_type: Option<String>,
478 #[serde(skip_serializing_if = "Option::is_none")]
480 pub filters: Option<Vec<Value>>,
481 #[serde(skip_serializing_if = "Option::is_none")]
483 pub order_by: Option<Vec<String>>,
484 #[serde(skip_serializing_if = "Option::is_none")]
486 pub backlinks_filters: Option<Vec<Value>>,
487 #[serde(skip_serializing_if = "Option::is_none")]
489 pub include_subdomains: Option<bool>,
490 #[serde(skip_serializing_if = "Option::is_none")]
492 pub exclude_internal_backlinks: Option<bool>,
493 #[serde(skip_serializing_if = "Option::is_none")]
495 pub rank_scale: Option<String>,
496 #[serde(skip_serializing_if = "Option::is_none")]
498 pub tag: Option<String>,
499}
500
501impl BacklinksApiDomainPagesPost {
502 pub fn new(target: &str) -> BacklinksApiDomainPagesPost {
504 BacklinksApiDomainPagesPost {
505 target: target.to_string(),
506 ..Default::default()
507 }
508 }
509}
510
511#[derive(Debug, Default, Serialize, Deserialize, Clone)]
513pub struct BacklinksApiDomainPagesSummaryPost {
514 pub target: String,
516 #[serde(skip_serializing_if = "Option::is_none")]
518 pub limit: Option<i32>,
519 #[serde(skip_serializing_if = "Option::is_none")]
521 pub offset: Option<i32>,
522 #[serde(skip_serializing_if = "Option::is_none")]
524 pub internal_list_limit: Option<i32>,
525 #[serde(skip_serializing_if = "Option::is_none")]
527 pub backlinks_status_type: Option<String>,
528 #[serde(skip_serializing_if = "Option::is_none")]
530 pub filters: Option<Vec<Value>>,
531 #[serde(skip_serializing_if = "Option::is_none")]
533 pub order_by: Option<Vec<String>>,
534 #[serde(skip_serializing_if = "Option::is_none")]
536 pub backlinks_filters: Option<Vec<Value>>,
537 #[serde(skip_serializing_if = "Option::is_none")]
539 pub include_subdomains: Option<bool>,
540 #[serde(skip_serializing_if = "Option::is_none")]
542 pub include_indirect_links: Option<bool>,
543 #[serde(skip_serializing_if = "Option::is_none")]
545 pub exclude_internal_backlinks: Option<bool>,
546 #[serde(skip_serializing_if = "Option::is_none")]
548 pub rank_scale: Option<String>,
549 #[serde(skip_serializing_if = "Option::is_none")]
551 pub tag: Option<String>,
552}
553
554impl BacklinksApiDomainPagesSummaryPost {
555 pub fn new(target: &str) -> BacklinksApiDomainPagesSummaryPost {
557 BacklinksApiDomainPagesSummaryPost {
558 target: target.to_string(),
559 ..Default::default()
560 }
561 }
562}
563
564#[derive(Debug, Default, Serialize, Deserialize, Clone)]
566pub struct BacklinksApiReferringDomainsPost {
567 pub target: String,
569 #[serde(skip_serializing_if = "Option::is_none")]
571 pub limit: Option<i32>,
572 #[serde(skip_serializing_if = "Option::is_none")]
574 pub offset: Option<i32>,
575 #[serde(skip_serializing_if = "Option::is_none")]
577 pub internal_list_limit: Option<i32>,
578 #[serde(skip_serializing_if = "Option::is_none")]
580 pub backlinks_status_type: Option<String>,
581 #[serde(skip_serializing_if = "Option::is_none")]
583 pub filters: Option<Vec<Value>>,
584 #[serde(skip_serializing_if = "Option::is_none")]
586 pub order_by: Option<Vec<String>>,
587 #[serde(skip_serializing_if = "Option::is_none")]
589 pub backlinks_filters: Option<Vec<Value>>,
590 #[serde(skip_serializing_if = "Option::is_none")]
592 pub include_subdomains: Option<bool>,
593 #[serde(skip_serializing_if = "Option::is_none")]
595 pub include_indirect_links: Option<bool>,
596 #[serde(skip_serializing_if = "Option::is_none")]
598 pub exclude_internal_backlinks: Option<bool>,
599 #[serde(skip_serializing_if = "Option::is_none")]
601 pub rank_scale: Option<String>,
602 #[serde(skip_serializing_if = "Option::is_none")]
604 pub tag: Option<String>,
605}
606
607impl BacklinksApiReferringDomainsPost {
608 pub fn new(target: &str) -> BacklinksApiReferringDomainsPost {
610 BacklinksApiReferringDomainsPost {
611 target: target.to_string(),
612 ..Default::default()
613 }
614 }
615}
616
617#[derive(Debug, Default, Serialize, Deserialize, Clone)]
619pub struct BacklinksApiReferringNetworksPost {
620 pub target: String,
622 #[serde(skip_serializing_if = "Option::is_none")]
624 pub network_address_type: 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 internal_list_limit: Option<i32>,
634 #[serde(skip_serializing_if = "Option::is_none")]
636 pub backlinks_status_type: Option<String>,
637 #[serde(skip_serializing_if = "Option::is_none")]
639 pub filters: Option<Vec<Value>>,
640 #[serde(skip_serializing_if = "Option::is_none")]
642 pub order_by: Option<Vec<String>>,
643 #[serde(skip_serializing_if = "Option::is_none")]
645 pub backlinks_filters: Option<Vec<Value>>,
646 #[serde(skip_serializing_if = "Option::is_none")]
648 pub include_subdomains: Option<bool>,
649 #[serde(skip_serializing_if = "Option::is_none")]
651 pub include_indirect_links: Option<bool>,
652 #[serde(skip_serializing_if = "Option::is_none")]
654 pub exclude_internal_backlinks: Option<bool>,
655 #[serde(skip_serializing_if = "Option::is_none")]
657 pub rank_scale: Option<String>,
658 #[serde(skip_serializing_if = "Option::is_none")]
660 pub tag: Option<String>,
661}
662
663impl BacklinksApiReferringNetworksPost {
664 pub fn new(target: &str) -> BacklinksApiReferringNetworksPost {
666 BacklinksApiReferringNetworksPost {
667 target: target.to_string(),
668 ..Default::default()
669 }
670 }
671}
672
673#[derive(Debug, Default, Serialize, Deserialize, Clone)]
675pub struct BacklinksApiCompetitorsPost {
676 pub target: String,
678 #[serde(skip_serializing_if = "Option::is_none")]
680 pub limit: Option<i32>,
681 #[serde(skip_serializing_if = "Option::is_none")]
683 pub offset: Option<i32>,
684 #[serde(skip_serializing_if = "Option::is_none")]
686 pub filters: Option<Vec<Value>>,
687 #[serde(skip_serializing_if = "Option::is_none")]
689 pub order_by: Option<Vec<String>>,
690 #[serde(skip_serializing_if = "Option::is_none")]
692 pub main_domain: Option<bool>,
693 #[serde(skip_serializing_if = "Option::is_none")]
695 pub exclude_large_domains: Option<bool>,
696 #[serde(skip_serializing_if = "Option::is_none")]
698 pub exclude_internal_backlinks: Option<bool>,
699 #[serde(skip_serializing_if = "Option::is_none")]
701 pub rank_scale: Option<String>,
702 #[serde(skip_serializing_if = "Option::is_none")]
704 pub tag: Option<String>,
705}
706
707impl BacklinksApiCompetitorsPost {
708 pub fn new(target: &str) -> BacklinksApiCompetitorsPost {
710 BacklinksApiCompetitorsPost {
711 target: target.to_string(),
712 ..Default::default()
713 }
714 }
715}
716
717#[derive(Debug, Default, Serialize, Deserialize, Clone)]
719pub struct BacklinksApiDomainIntersectionPost {
720 pub targets: Value,
722 #[serde(skip_serializing_if = "Option::is_none")]
724 pub exclude_targets: Option<Vec<String>>,
725 #[serde(skip_serializing_if = "Option::is_none")]
727 pub filters: Option<Vec<Value>>,
728 #[serde(skip_serializing_if = "Option::is_none")]
730 pub order_by: Option<Vec<String>>,
731 #[serde(skip_serializing_if = "Option::is_none")]
733 pub offset: Option<i32>,
734 #[serde(skip_serializing_if = "Option::is_none")]
736 pub limit: Option<i32>,
737 #[serde(skip_serializing_if = "Option::is_none")]
739 pub internal_list_limit: Option<i32>,
740 #[serde(skip_serializing_if = "Option::is_none")]
742 pub backlinks_status_type: Option<String>,
743 #[serde(skip_serializing_if = "Option::is_none")]
745 pub backlinks_filters: Option<Vec<Value>>,
746 #[serde(skip_serializing_if = "Option::is_none")]
748 pub include_subdomains: Option<bool>,
749 #[serde(skip_serializing_if = "Option::is_none")]
751 pub include_indirect_links: Option<bool>,
752 #[serde(skip_serializing_if = "Option::is_none")]
754 pub exclude_internal_backlinks: Option<bool>,
755 #[serde(skip_serializing_if = "Option::is_none")]
757 pub intersection_mode: Option<String>,
758 #[serde(skip_serializing_if = "Option::is_none")]
760 pub rank_scale: Option<String>,
761 #[serde(skip_serializing_if = "Option::is_none")]
763 pub tag: Option<String>,
764}
765
766impl BacklinksApiDomainIntersectionPost {
767 pub fn new(targets: Value) -> BacklinksApiDomainIntersectionPost {
769 BacklinksApiDomainIntersectionPost {
770 targets,
771 ..Default::default()
772 }
773 }
774}
775
776#[derive(Debug, Default, Serialize, Deserialize, Clone)]
778pub struct BacklinksApiPageIntersectionPost {
779 pub targets: Value,
781 #[serde(skip_serializing_if = "Option::is_none")]
783 pub exclude_targets: Option<Vec<String>>,
784 #[serde(skip_serializing_if = "Option::is_none")]
786 pub backlinks_status_type: Option<String>,
787 #[serde(skip_serializing_if = "Option::is_none")]
789 pub filters: Option<Vec<Value>>,
790 #[serde(skip_serializing_if = "Option::is_none")]
792 pub order_by: Option<Vec<String>>,
793 #[serde(skip_serializing_if = "Option::is_none")]
795 pub offset: Option<i32>,
796 #[serde(skip_serializing_if = "Option::is_none")]
798 pub limit: Option<i32>,
799 #[serde(skip_serializing_if = "Option::is_none")]
801 pub internal_list_limit: Option<i32>,
802 #[serde(skip_serializing_if = "Option::is_none")]
804 pub include_subdomains: Option<bool>,
805 #[serde(skip_serializing_if = "Option::is_none")]
807 pub include_indirect_links: Option<bool>,
808 #[serde(skip_serializing_if = "Option::is_none")]
810 pub exclude_internal_backlinks: Option<bool>,
811 #[serde(skip_serializing_if = "Option::is_none")]
813 pub intersection_mode: Option<String>,
814 #[serde(skip_serializing_if = "Option::is_none")]
816 pub rank_scale: Option<String>,
817 #[serde(skip_serializing_if = "Option::is_none")]
819 pub tag: Option<String>,
820}
821
822impl BacklinksApiPageIntersectionPost {
823 pub fn new(targets: Value) -> BacklinksApiPageIntersectionPost {
825 BacklinksApiPageIntersectionPost {
826 targets,
827 ..Default::default()
828 }
829 }
830}
831
832#[derive(Debug, Default, Serialize, Deserialize, Clone)]
834pub struct BacklinksApiTimeseriesSummaryPost {
835 pub target: String,
837 #[serde(skip_serializing_if = "Option::is_none")]
839 pub date_from: Option<String>,
840 #[serde(skip_serializing_if = "Option::is_none")]
842 pub date_to: Option<String>,
843 #[serde(skip_serializing_if = "Option::is_none")]
845 pub group_range: Option<String>,
846 #[serde(skip_serializing_if = "Option::is_none")]
848 pub include_subdomains: Option<bool>,
849 #[serde(skip_serializing_if = "Option::is_none")]
851 pub rank_scale: Option<String>,
852 #[serde(skip_serializing_if = "Option::is_none")]
854 pub tag: Option<String>,
855}
856
857impl BacklinksApiTimeseriesSummaryPost {
858 pub fn new(target: &str) -> BacklinksApiTimeseriesSummaryPost {
860 BacklinksApiTimeseriesSummaryPost {
861 target: target.to_string(),
862 ..Default::default()
863 }
864 }
865}
866
867#[derive(Debug, Default, Serialize, Deserialize, Clone)]
869pub struct BacklinksApiTimeseriesNewLostSummaryPost {
870 pub target: String,
872 #[serde(skip_serializing_if = "Option::is_none")]
874 pub date_from: Option<String>,
875 #[serde(skip_serializing_if = "Option::is_none")]
877 pub date_to: Option<String>,
878 #[serde(skip_serializing_if = "Option::is_none")]
880 pub group_range: Option<String>,
881 #[serde(skip_serializing_if = "Option::is_none")]
883 pub include_subdomains: Option<bool>,
884 #[serde(skip_serializing_if = "Option::is_none")]
886 pub tag: Option<String>,
887}
888
889impl BacklinksApiTimeseriesNewLostSummaryPost {
890 pub fn new(target: &str) -> BacklinksApiTimeseriesNewLostSummaryPost {
892 BacklinksApiTimeseriesNewLostSummaryPost {
893 target: target.to_string(),
894 ..Default::default()
895 }
896 }
897}
898
899#[derive(Debug, Default, Serialize, Deserialize, Clone)]
901pub struct BacklinksApiBulkRanksPost {
902 pub targets: Vec<String>,
904 #[serde(skip_serializing_if = "Option::is_none")]
906 pub rank_scale: Option<String>,
907 #[serde(skip_serializing_if = "Option::is_none")]
909 pub tag: Option<String>,
910}
911
912impl BacklinksApiBulkRanksPost {
913 pub fn new(targets: Vec<String>) -> BacklinksApiBulkRanksPost {
915 BacklinksApiBulkRanksPost {
916 targets,
917 ..Default::default()
918 }
919 }
920}
921
922#[derive(Debug, Default, Serialize, Deserialize, Clone)]
924pub struct BacklinksApiBulkBacklinksPost {
925 pub targets: Vec<String>,
927 #[serde(skip_serializing_if = "Option::is_none")]
929 pub tag: Option<String>,
930}
931
932impl BacklinksApiBulkBacklinksPost {
933 pub fn new(targets: Vec<String>) -> BacklinksApiBulkBacklinksPost {
935 BacklinksApiBulkBacklinksPost {
936 targets,
937 ..Default::default()
938 }
939 }
940}
941
942#[derive(Debug, Default, Serialize, Deserialize, Clone)]
944pub struct BacklinksApiBulkSpamScorePost {
945 pub targets: Vec<String>,
947 #[serde(skip_serializing_if = "Option::is_none")]
949 pub tag: Option<String>,
950}
951
952impl BacklinksApiBulkSpamScorePost {
953 pub fn new(targets: Vec<String>) -> BacklinksApiBulkSpamScorePost {
955 BacklinksApiBulkSpamScorePost {
956 targets,
957 ..Default::default()
958 }
959 }
960}
961
962#[derive(Debug, Default, Serialize, Deserialize, Clone)]
964pub struct BacklinksApiBulkNewLostBacklinksPost {
965 pub targets: Vec<String>,
967 #[serde(skip_serializing_if = "Option::is_none")]
969 pub date_from: Option<String>,
970 #[serde(skip_serializing_if = "Option::is_none")]
972 pub tag: Option<String>,
973}
974
975impl BacklinksApiBulkNewLostBacklinksPost {
976 pub fn new(targets: Vec<String>) -> BacklinksApiBulkNewLostBacklinksPost {
978 BacklinksApiBulkNewLostBacklinksPost {
979 targets,
980 ..Default::default()
981 }
982 }
983}
984
985#[derive(Debug, Default, Serialize, Deserialize, Clone)]
987pub struct BacklinksApiBulkNewLostReferringDomainsPost {
988 pub targets: Vec<String>,
990 #[serde(skip_serializing_if = "Option::is_none")]
992 pub date_from: Option<String>,
993 #[serde(skip_serializing_if = "Option::is_none")]
995 pub tag: Option<String>,
996}
997
998impl BacklinksApiBulkNewLostReferringDomainsPost {
999 pub fn new(targets: Vec<String>) -> BacklinksApiBulkNewLostReferringDomainsPost {
1001 BacklinksApiBulkNewLostReferringDomainsPost {
1002 targets,
1003 ..Default::default()
1004 }
1005 }
1006}
1007
1008#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1010pub struct BacklinksApiBulkReferringDomainsPost {
1011 pub targets: Vec<String>,
1013 #[serde(skip_serializing_if = "Option::is_none")]
1015 pub tag: Option<String>,
1016}
1017
1018impl BacklinksApiBulkReferringDomainsPost {
1019 pub fn new(targets: Vec<String>) -> BacklinksApiBulkReferringDomainsPost {
1021 BacklinksApiBulkReferringDomainsPost {
1022 targets,
1023 ..Default::default()
1024 }
1025 }
1026}
1027
1028#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1030pub struct BacklinksApiBulkPagesSummaryPost {
1031 pub targets: Vec<String>,
1033 #[serde(skip_serializing_if = "Option::is_none")]
1035 pub include_subdomains: Option<bool>,
1036 #[serde(skip_serializing_if = "Option::is_none")]
1038 pub rank_scale: Option<String>,
1039 #[serde(skip_serializing_if = "Option::is_none")]
1041 pub tag: Option<String>,
1042}
1043
1044impl BacklinksApiBulkPagesSummaryPost {
1045 pub fn new(targets: Vec<String>) -> BacklinksApiBulkPagesSummaryPost {
1047 BacklinksApiBulkPagesSummaryPost {
1048 targets,
1049 ..Default::default()
1050 }
1051 }
1052}
1053
1054#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1056pub struct BacklinksApiErrorsPost {
1057 #[serde(skip_serializing_if = "Option::is_none")]
1059 pub limit: Option<i32>,
1060 #[serde(skip_serializing_if = "Option::is_none")]
1062 pub offset: Option<i32>,
1063 #[serde(skip_serializing_if = "Option::is_none")]
1065 pub filtered_function: Option<String>,
1066 #[serde(skip_serializing_if = "Option::is_none")]
1068 pub datetime_from: Option<String>,
1069 #[serde(skip_serializing_if = "Option::is_none")]
1071 pub datetime_to: Option<String>,
1072}
1073
1074impl BacklinksApiErrorsPost {
1075 pub fn new() -> BacklinksApiErrorsPost {
1077 BacklinksApiErrorsPost::default()
1078 }
1079}
1080
1081#[derive(Debug, Default, Serialize, Deserialize, Clone)]
1083pub struct BacklinksApiIdListPost {
1084 pub datetime_from: String,
1086 pub datetime_to: String,
1088 #[serde(skip_serializing_if = "Option::is_none")]
1090 pub limit: Option<i32>,
1091 #[serde(skip_serializing_if = "Option::is_none")]
1093 pub offset: Option<i32>,
1094 #[serde(skip_serializing_if = "Option::is_none")]
1096 pub sort: Option<String>,
1097 #[serde(skip_serializing_if = "Option::is_none")]
1099 pub include_metadata: Option<bool>,
1100}
1101
1102impl BacklinksApiIdListPost {
1103 pub fn new(datetime_from: &str, datetime_to: &str) -> BacklinksApiIdListPost {
1105 BacklinksApiIdListPost {
1106 datetime_from: datetime_from.to_string(),
1107 datetime_to: datetime_to.to_string(),
1108 ..Default::default()
1109 }
1110 }
1111}