{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hydrafetch-com/json-schema/hydrafetch-com-map-request-dto-schema.json",
  "title": "MapRequestDto",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hydrafetch-com-openapi.json#/components/schemas/MapRequestDto",
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The site whose URLs you want to enumerate. Must be http(s)."
    },
    "includeLinks": {
      "type": "boolean",
      "description": "Also include same-site links found on the starting page, not just the site's page list."
    },
    "limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 5000,
      "description": "Maximum number of URLs to return."
    },
    "search": {
      "type": "string",
      "maxLength": 200,
      "description": "Keep only discovered URLs containing this term."
    },
    "sitemap": {
      "type": "string",
      "enum": [
        "skip",
        "include",
        "only"
      ],
      "description": "Whether to use the site's published page list: skip it, include it alongside discovered links, or use it only."
    },
    "sitemapInclude": {
      "type": "string",
      "maxLength": 200,
      "description": "On sitemap-index sites, only descend into sub-sitemaps whose URL contains one of these comma-separated terms (case-insensitive). E.g. \"post\" to target article sitemaps."
    },
    "sitemapExclude": {
      "type": "string",
      "maxLength": 200,
      "description": "Skip sub-sitemaps whose URL contains any of these comma-separated terms (case-insensitive). Compose with sitemapInclude — e.g. include \"post\" + exclude \"tag,category,author\" avoids WordPress taxonomy sitemaps (post_tag-sitemap, …-taxonomies-post_tag-*) that also contain \"post\"."
    },
    "order": {
      "type": "string",
      "enum": [
        "newest",
        "oldest",
        "sitemap"
      ],
      "default": "newest",
      "description": "Sort order by sitemap lastmod. \"newest\" (default) returns the most recent URLs first — the wanted end of a large archive under the limit. URLs without a lastmod sort last."
    },
    "before": {
      "type": "string",
      "description": "Cursor for paging a large archive newest→oldest: return only URLs with lastmod at or before this ISO timestamp. Page by passing the oldest lastmod from the previous page; dedupe by url across pages."
    },
    "offset": {
      "type": "number",
      "minimum": 0,
      "maximum": 100000,
      "description": "Skip the first N results (in the sorted order) then return the next `limit`. Pagination for sources with no lastmod (WordPress-core), where the date cursor can't apply. Page sequentially (0, limit, 2·limit, …) so the sub-sitemap cache keeps deep pages fast."
    },
    "includeSubdomains": {
      "type": "boolean",
      "description": "Also include URLs on subdomains of the site. Default off."
    },
    "ignoreQueryParameters": {
      "type": "boolean",
      "description": "Treat URLs that differ only by query string as one. Default off."
    }
  },
  "required": [
    "url"
  ]
}