use chrono::{DateTime, NaiveDate, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use typed_builder::TypedBuilder;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct UserResponse {
pub user_id: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct HostsResponse {
pub hosts: Vec<HostInfo>,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum HostDataStatus {
NotIndexed,
NotLoaded,
Ok,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct HostInfo {
pub host_id: String,
pub ascii_host_url: String,
pub unicode_host_url: String,
pub verified: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub main_mirror: Option<Box<HostInfo>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct FullHostInfo {
pub host_id: String,
pub ascii_host_url: String,
pub unicode_host_url: String,
pub verified: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub main_mirror: Option<Box<HostInfo>>,
pub host_data_status: Option<HostDataStatus>,
pub host_display_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct AddHostResponse {
pub host_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct FailInfo {
pub message: String,
pub reason: VerificationFailReason,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct HostVerificationStatusResponse {
pub verification_state: VerificationState,
pub verification_type: VerificationType,
pub verification_uin: String,
pub applicable_verifiers: Vec<ExplicitVerificationType>,
pub latest_verification_time: Option<DateTime<Utc>>,
pub fail_info: Option<FailInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct HostVerificationResponse {
pub verification_state: VerificationState,
pub verification_type: VerificationType,
pub verification_uin: String,
pub applicable_verifiers: Vec<ExplicitVerificationType>,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum VerificationState {
None,
Verified,
InProgress,
VerificationFailed,
InternalError,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ExplicitVerificationType {
Dns,
MetaTag,
HtmlFile,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum VerificationType {
Auto,
Delegated,
Pdd,
TxtFile,
Dns,
MetaTag,
HtmlFile,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum VerificationFailReason {
DelegationCancelled,
DnsRecordNotFound,
MetaTagNotFound,
WrongHtmlPageContent,
PddVerificationCancelled,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct OwnersResponse {
pub users: Vec<Owner>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Owner {
pub user_login: String,
pub verification_uin: String,
pub verification_type: VerificationType,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification_date: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct HostSummaryResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub sqi: Option<f64>,
#[serde(default)]
pub searchable_pages_count: i64,
#[serde(default)]
pub excluded_pages_count: i64,
#[serde(default)]
pub site_problems: HashMap<SiteProblemSeverityEnum, i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ExcludedPagesStatistics {
pub statuses: HashMap<ApiExcludedUrlStatus, i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct SqiHistoryRequest {
pub date_from: Option<DateTime<Utc>>,
pub date_to: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SqiHistoryResponse {
pub points: Vec<SqiPoint>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SqiPoint {
pub date: DateTime<Utc>,
pub value: f64,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiQueryOrderField {
TotalShows,
TotalClicks,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiQueryIndicator {
TotalShows,
TotalClicks,
AvgShowPosition,
AvgClickPosition,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiDeviceTypeIndicator {
#[default]
All,
Desktop,
MobileAndTablet,
Mobile,
Tablet,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, TypedBuilder)]
pub struct PopularQueriesRequest {
pub order_by: ApiQueryOrderField,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub query_indicator: Option<ApiQueryIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub device_type_indicator: Option<ApiDeviceTypeIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub date_from: Option<NaiveDate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub date_to: Option<NaiveDate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PopularQueriesResponse {
pub queries: Vec<PopularQuery>,
pub date_from: NaiveDate,
pub date_to: NaiveDate,
pub count: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PopularQuery {
pub query_id: String,
pub query_text: String,
pub indicators: std::collections::HashMap<ApiQueryIndicator, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, TypedBuilder)]
pub struct QueryAnalyticsRequest {
pub query_indicator: Vec<ApiQueryIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub device_type_indicator: Option<ApiDeviceTypeIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub date_from: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub date_to: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct QueryAnalyticsResponse {
pub indicators: std::collections::HashMap<ApiQueryIndicator, Vec<IndicatorPoint>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct IndicatorPoint {
pub date: DateTime<Utc>,
pub value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, TypedBuilder)]
pub struct QueryHistoryRequest {
pub query_indicator: Vec<ApiQueryIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub device_type_indicator: Option<ApiDeviceTypeIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub date_from: Option<NaiveDate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(into, strip_option))]
pub date_to: Option<NaiveDate>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct QueryHistoryResponse {
pub query_id: String,
pub query_text: String,
pub indicators: std::collections::HashMap<ApiQueryIndicator, Vec<IndicatorPoint>>,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiSitemapSource {
RobotsTxt,
Webmaster,
IndexSitemap,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiSitemapType {
Sitemap,
IndexSitemap,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct GetSitemapsRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SitemapsResponse {
pub sitemaps: Vec<SitemapInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SitemapInfo {
pub sitemap_id: String,
pub sitemap_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_access_date: Option<DateTime<Utc>>,
pub errors_count: i32,
pub urls_count: i64,
pub children_count: i32,
pub sources: Vec<ApiSitemapSource>,
pub sitemap_type: ApiSitemapType,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct GetUserSitemapsRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct UserSitemapsResponse {
pub sitemaps: Vec<UserSitemapInfo>,
pub count: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct UserSitemapInfo {
pub sitemap_id: String,
pub sitemap_url: String,
pub added_date: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct AddSitemapResponse {
pub sitemap_id: String,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum IndexingStatusEnum {
#[serde(rename = "HTTP_2XX")]
Http2xx,
#[serde(rename = "HTTP_3XX")]
Http3xx,
#[serde(rename = "HTTP_4XX")]
Http4xx,
#[serde(rename = "HTTP_5XX")]
Http5xx,
Other,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SiteProblemSeverityEnum {
Fatal,
Critical,
PossibleProblem,
Recommendation,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiExcludedUrlStatus {
NothingFound,
HostError,
RedirectNotsearchable,
HttpError,
NotCanonical,
NotMainMirror,
ParserError,
RobotsHostError,
RobotsUrlError,
Duplicate,
CleanParams,
NoIndex,
ForbiddenByRobotsTxt,
UrlNotAllowed,
ContainsNoindexMetaTag,
ContainsNoindexXRobotsTagHeader,
SitemapForbidden,
SitemapNotAllowed,
LowQuality,
AlternativeDuplicate,
UserDuplicate,
CanonicalDuplicate,
RedirectDuplicate,
MovedPermanently,
MovedTemporarily,
MalwareDetected,
PhishingDetected,
AdultContent,
Other,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiImportantUrlChangeIndicator {
IndexingHttpCode,
SearchStatus,
Title,
Description,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct IndexingHistoryRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub date_from: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_to: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct IndexingHistoryResponse {
pub indicators: HashMap<IndexingStatusEnum, Vec<IndexingHistoryPoint>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct IndexingHistoryPoint {
pub date: DateTime<Utc>,
pub value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct GetIndexingSamplesRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct IndexingSamplesResponse {
pub samples: Vec<IndexingSample>,
pub count: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct IndexingSample {
pub url: String,
pub http_code: i32,
pub access_date: DateTime<Utc>,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiSearchEventEnum {
AppearedInSearch,
RemovedFromSearch,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SearchUrlsHistoryResponse {
pub history: Vec<SearchUrlsHistoryPoint>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchUrlsHistoryPoint {
pub date: DateTime<Utc>,
pub value: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct GetSearchUrlsSamplesRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchUrlsSamplesResponse {
pub count: i32,
pub samples: Vec<SearchUrlsSample>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchUrlsSample {
pub url: String,
pub last_access: DateTime<Utc>,
pub title: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SearchEventsHistoryResponse {
pub indicators: HashMap<ApiSearchEventEnum, Vec<SearchUrlsHistoryPoint>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct GetSearchEventsSamplesRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchEventsSamplesResponse {
pub count: i32,
pub samples: Vec<SearchEventsSample>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchEventsSample {
pub url: String,
pub title: String,
pub event_date: DateTime<Utc>,
pub last_access: DateTime<Utc>,
pub event: ApiSearchEventEnum,
#[serde(skip_serializing_if = "Option::is_none")]
pub excluded_url_status: Option<ApiExcludedUrlStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bad_http_status: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct RecrawlResponse {
pub task_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct GetRecrawlTasksRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_from: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_to: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct RecrawlTasksResponse {
pub tasks: Vec<RecrawlTask>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct RecrawlTask {
pub task_id: String,
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub added_time: Option<DateTime<Utc>>,
pub state: RecrawlTaskState,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum RecrawlTaskState {
InProgress,
Done,
Failed,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct RecrawlQuotaResponse {
pub daily_quota: i32,
pub quota_remainder: i32,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiInternalLinksBrokenIndicator {
SiteError,
DisallowedByUser,
UnsupportedByRobot,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct BrokenLinksRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub indicator: Option<Vec<ApiInternalLinksBrokenIndicator>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct BrokenLinksResponse {
pub count: i32,
pub links: Vec<BrokenLink>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct BrokenLink {
pub source_url: String,
pub destination_url: String,
pub discovery_date: NaiveDate,
pub source_last_access_date: NaiveDate,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct BrokenLinkHistoryRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub date_from: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_to: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct BrokenLinkHistoryPoint {
pub date: DateTime<Utc>,
pub value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct BrokenLinkHistoryResponse {
pub indicators: HashMap<ApiInternalLinksBrokenIndicator, Vec<BrokenLinkHistoryPoint>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default, TypedBuilder)]
#[builder(field_defaults(default, setter(into)))]
pub struct ExternalLinksRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ExternalLinksResponse {
pub count: i32,
pub links: Vec<ExternalLink>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ExternalLink {
pub source_url: String,
pub destination_url: String,
pub discovery_date: NaiveDate,
pub source_last_access_date: NaiveDate,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiExternalLinksIndicator {
LinksTotalCount,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ExternalLinksHistoryResponse {
pub indicators: HashMap<ApiExternalLinksIndicator, Vec<ExternalLinksHistoryPoint>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ExternalLinksHistoryPoint {
pub date: DateTime<Utc>,
pub value: f64,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiSiteProblemTypeEnum {
ConnectFailed,
DisallowedInRobots,
DnsError,
MainPageError,
Threats,
InsignificantCgiParameter,
SlowAvgResponseTime,
SslCertificateError,
#[serde(rename = "URL_ALERT_4XX")]
UrlAlert4xx,
#[serde(rename = "URL_ALERT_5XX")]
UrlAlert5xx,
DisallowedUrlsAlert,
DocumentsMissingDescription,
DocumentsMissingTitle,
DuplicateContentAttrs,
DuplicatePages,
ErrorInRobotsTxt,
ErrorsInSitemaps,
FaviconError,
MainMirrorIsNotHttps,
MainPageRedirects,
NoMetrikaCounterBinding,
NoMetrikaCounterCrawlEnabled,
NoRobotsTxt,
NoSitemaps,
NoSitemapModifications,
NonWorkingVideo,
#[serde(rename = "SOFT_404")]
Soft404,
TooManyDomainsOnSearch,
VideohostOfferFailed,
VideohostOfferIsNeeded,
VideohostOfferNeedPaper,
BigFaviconAbsent,
FaviconProblem,
NoMetrikaCounter,
NoRegions,
NotInSprav,
NotMobileFriendly,
VygodaPossibleActivation,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ApiSiteProblemState {
Present,
Absent,
Undefined,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct DiagnosticsResponse {
pub problems: HashMap<ApiSiteProblemTypeEnum, SiteProblemInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SiteProblemInfo {
pub severity: SiteProblemSeverityEnum,
pub state: ApiSiteProblemState,
pub last_state_update: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ImportantUrlsResponse {
pub urls: Vec<ImportantUrl>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ImportantUrl {
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_date: Option<DateTime<Utc>>,
#[serde(default)]
pub change_indicators: Vec<ApiImportantUrlChangeIndicator>,
#[serde(skip_serializing_if = "Option::is_none")]
pub indexing_status: Option<IndexingStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search_status: Option<SearchStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct IndexingStatus {
pub status: IndexingStatusEnum,
#[serde(skip_serializing_if = "Option::is_none")]
pub http_code: Option<i32>,
pub access_date: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchStatus {
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub last_access: DateTime<Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub excluded_url_status: Option<ApiExcludedUrlStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bad_http_status: Option<i32>,
pub searchable: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ImportantUrlHistoryResponse {
pub history: Vec<ImportantUrl>,
}