From 2d9c82ebc8a3ff6c7bda03418c93b8824bc53bc6 Mon Sep 17 00:00:00 2001 From: "locadex-agent[bot]" <217277504+locadex-agent[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:00:58 +0000 Subject: [PATCH] docs(locadex): add translations --- .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- api-reference/endpoint/batch-scrape-get.mdx | 2 +- api-reference/endpoint/batch-scrape.mdx | 2 +- api-reference/endpoint/crawl-active.mdx | 2 +- api-reference/endpoint/crawl-delete.mdx | 2 +- api-reference/endpoint/crawl-get-errors.mdx | 2 +- api-reference/endpoint/crawl-get.mdx | 2 +- .../endpoint/crawl-params-preview.mdx | 2 +- api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 2 +- api-reference/endpoint/credit-usage.mdx | 2 +- api-reference/endpoint/extract-get.mdx | 2 +- api-reference/endpoint/extract.mdx | 2 +- api-reference/endpoint/map.mdx | 2 +- api-reference/endpoint/queue-status.mdx | 2 +- api-reference/endpoint/scrape.mdx | 2 +- api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 2 +- api-reference/endpoint/token-usage.mdx | 2 +- .../v1-endpoint/batch-scrape-delete.mdx | 2 +- .../v1-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v1-endpoint/batch-scrape-get.mdx | 2 +- api-reference/v1-endpoint/batch-scrape.mdx | 2 +- api-reference/v1-endpoint/crawl-active.mdx | 2 +- api-reference/v1-endpoint/crawl-delete.mdx | 2 +- .../v1-endpoint/crawl-get-errors.mdx | 2 +- api-reference/v1-endpoint/crawl-get.mdx | 2 +- api-reference/v1-endpoint/crawl-post.mdx | 2 +- .../v1-endpoint/credit-usage-historical.mdx | 2 +- api-reference/v1-endpoint/credit-usage.mdx | 2 +- .../v1-endpoint/deep-research-get.mdx | 2 +- api-reference/v1-endpoint/deep-research.mdx | 2 +- api-reference/v1-endpoint/extract-get.mdx | 2 +- api-reference/v1-endpoint/extract.mdx | 2 +- api-reference/v1-endpoint/llmstxt-get.mdx | 2 +- api-reference/v1-endpoint/llmstxt.mdx | 2 +- api-reference/v1-endpoint/map.mdx | 2 +- api-reference/v1-endpoint/queue-status.mdx | 2 +- api-reference/v1-endpoint/scrape.mdx | 2 +- api-reference/v1-endpoint/search.mdx | 2 +- .../v1-endpoint/token-usage-historical.mdx | 2 +- api-reference/v1-endpoint/token-usage.mdx | 2 +- es/_essentials/code.mdx | 1 - es/_essentials/markdown.mdx | 4 - es/_essentials/navigation.mdx | 1 - es/advanced-scraping-guide.mdx | 7 - es/agents/fire-1-extract.mdx | 4 - es/agents/fire-1.mdx | 1 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- es/api-reference/endpoint/batch-scrape.mdx | 2 +- es/api-reference/endpoint/crawl-active.mdx | 2 +- es/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- es/api-reference/endpoint/crawl-get.mdx | 2 +- .../endpoint/crawl-params-preview.mdx | 3 +- es/api-reference/endpoint/crawl-post.mdx | 3 +- .../endpoint/credit-usage-historical.mdx | 3 +- es/api-reference/endpoint/credit-usage.mdx | 2 +- es/api-reference/endpoint/extract-get.mdx | 2 +- es/api-reference/endpoint/extract.mdx | 2 +- es/api-reference/endpoint/map.mdx | 3 +- es/api-reference/endpoint/queue-status.mdx | 2 +- es/api-reference/endpoint/scrape.mdx | 2 +- es/api-reference/endpoint/search.mdx | 7 +- .../endpoint/token-usage-historical.mdx | 2 +- es/api-reference/endpoint/token-usage.mdx | 2 +- .../v1-endpoint/batch-scrape-delete.mdx | 2 +- .../v1-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v1-endpoint/batch-scrape-get.mdx | 2 +- es/api-reference/v1-endpoint/batch-scrape.mdx | 2 +- es/api-reference/v1-endpoint/crawl-active.mdx | 2 +- es/api-reference/v1-endpoint/crawl-delete.mdx | 2 +- .../v1-endpoint/crawl-get-errors.mdx | 2 +- es/api-reference/v1-endpoint/crawl-get.mdx | 2 +- es/api-reference/v1-endpoint/crawl-post.mdx | 2 +- .../v1-endpoint/credit-usage-historical.mdx | 3 +- es/api-reference/v1-endpoint/credit-usage.mdx | 2 +- .../v1-endpoint/deep-research-get.mdx | 2 +- .../v1-endpoint/deep-research.mdx | 2 +- es/api-reference/v1-endpoint/extract-get.mdx | 2 +- es/api-reference/v1-endpoint/extract.mdx | 2 +- es/api-reference/v1-endpoint/llmstxt-get.mdx | 3 +- es/api-reference/v1-endpoint/llmstxt.mdx | 2 +- es/api-reference/v1-endpoint/map.mdx | 2 +- es/api-reference/v1-endpoint/queue-status.mdx | 2 +- es/api-reference/v1-endpoint/scrape.mdx | 2 +- es/api-reference/v1-endpoint/search.mdx | 2 +- .../v1-endpoint/token-usage-historical.mdx | 2 +- es/api-reference/v1-endpoint/token-usage.mdx | 2 +- es/api-reference/v1-openapi.json | 3656 +++++++ es/api-reference/v2-openapi.json | 3814 ++++++++ es/contributing/guide.mdx | 6 - es/contributing/self-host.mdx | 5 - .../authenticated-scraping.mdx | 2 - es/developer-guides/common-sites/amazon.mdx | 6 - es/developer-guides/common-sites/etsy.mdx | 6 - es/developer-guides/common-sites/github.mdx | 7 - .../common-sites/wikipedia.mdx | 6 - .../ai-research-assistant-cookbook.mdx | 1 - .../llm-sdks-and-frameworks/anthropic.mdx | 3 - .../llm-sdks-and-frameworks/gemini.mdx | 3 - .../llm-sdks-and-frameworks/google-adk.mdx | 1 - .../llm-sdks-and-frameworks/langchain.mdx | 4 - .../llm-sdks-and-frameworks/langgraph.mdx | 2 - .../llm-sdks-and-frameworks/llamaindex.mdx | 1 - .../llm-sdks-and-frameworks/mastra.mdx | 1 - .../llm-sdks-and-frameworks/openai.mdx | 5 - .../llm-sdks-and-frameworks/vercel-ai-sdk.mdx | 10 - .../mcp-setup-guides/chatgpt.mdx | 124 + .../mcp-setup-guides/claude-code.mdx | 1 - .../mcp-setup-guides/cursor.mdx | 1 - .../mcp-setup-guides/factory-ai.mdx | 2 - .../mcp-setup-guides/windsurf.mdx | 1 - es/features/alpha/llmstxt-npx.mdx | 3 - es/features/change-tracking.mdx | 7 - es/features/extract.mdx | 1 - es/features/search-v0.mdx | 8 - es/integrations/camelai.mdx | 2 - es/integrations/crewai.mdx | 4 - es/mcp-server.mdx | 24 - es/v0/advanced-scraping-guide.mdx | 7 - es/v0/api-reference/endpoint/crawl-cancel.mdx | 2 +- es/v0/api-reference/endpoint/crawl.mdx | 2 +- es/v0/api-reference/endpoint/scrape.mdx | 2 +- es/v0/api-reference/endpoint/search.mdx | 2 +- es/v0/api-reference/endpoint/status.mdx | 2 +- es/v0/api-reference/introduction.mdx | 2 - es/v0/api-reference/v0-openapi.json | 947 ++ es/v0/features/crawl.mdx | 1 - es/v0/features/extract.mdx | 4 - es/v1/advanced-scraping-guide.mdx | 7 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- es/v1/api-reference/endpoint/batch-scrape.mdx | 2 +- es/v1/api-reference/endpoint/crawl-active.mdx | 2 +- es/v1/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- es/v1/api-reference/endpoint/crawl-get.mdx | 2 +- es/v1/api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 3 +- es/v1/api-reference/endpoint/credit-usage.mdx | 2 +- .../endpoint/deep-research-get.mdx | 2 +- .../api-reference/endpoint/deep-research.mdx | 2 +- es/v1/api-reference/endpoint/extract-get.mdx | 2 +- es/v1/api-reference/endpoint/extract.mdx | 2 +- es/v1/api-reference/endpoint/llmstxt-get.mdx | 3 +- es/v1/api-reference/endpoint/llmstxt.mdx | 2 +- es/v1/api-reference/endpoint/map.mdx | 2 +- es/v1/api-reference/endpoint/scrape.mdx | 2 +- es/v1/api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 2 +- es/v1/api-reference/endpoint/token-usage.mdx | 2 +- es/v1/api-reference/v1-openapi.json | 3387 +++++++ .../v2-endpoint/batch-scrape-delete.mdx | 2 +- .../v2-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v2-endpoint/batch-scrape-get.mdx | 2 +- .../v2-endpoint/batch-scrape.mdx | 2 +- .../v2-endpoint/crawl-active.mdx | 2 +- .../v2-endpoint/crawl-delete.mdx | 2 +- .../v2-endpoint/crawl-get-errors.mdx | 2 +- es/v1/api-reference/v2-endpoint/crawl-get.mdx | 2 +- .../api-reference/v2-endpoint/crawl-post.mdx | 3 +- .../v2-endpoint/credit-usage-historical.mdx | 3 +- .../v2-endpoint/credit-usage.mdx | 2 +- .../api-reference/v2-endpoint/extract-get.mdx | 2 +- es/v1/api-reference/v2-endpoint/extract.mdx | 2 +- es/v1/api-reference/v2-endpoint/map.mdx | 3 +- es/v1/api-reference/v2-endpoint/scrape.mdx | 2 +- es/v1/api-reference/v2-endpoint/search.mdx | 4 +- .../v2-endpoint/token-usage-historical.mdx | 2 +- .../api-reference/v2-endpoint/token-usage.mdx | 2 +- es/v1/api-reference/v2-openapi.json | 3261 +++++++ es/v1/features/alpha/llmstxt-npx.mdx | 3 - es/v1/features/change-tracking.mdx | 14 - es/v1/features/extract.mdx | 1 - es/v1/features/search-v0.mdx | 8 - es/webhooks/events.mdx | 10 - es/webhooks/testing.mdx | 1 - es/x402/search.mdx | 2 +- fr/_essentials/code.mdx | 1 - fr/_essentials/markdown.mdx | 4 - fr/_essentials/navigation.mdx | 1 - fr/advanced-scraping-guide.mdx | 7 - fr/agents/fire-1-extract.mdx | 4 - fr/agents/fire-1.mdx | 1 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- fr/api-reference/endpoint/batch-scrape.mdx | 2 +- fr/api-reference/endpoint/crawl-active.mdx | 2 +- fr/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- fr/api-reference/endpoint/crawl-get.mdx | 2 +- .../endpoint/crawl-params-preview.mdx | 3 +- fr/api-reference/endpoint/crawl-post.mdx | 3 +- .../endpoint/credit-usage-historical.mdx | 3 +- fr/api-reference/endpoint/credit-usage.mdx | 2 +- fr/api-reference/endpoint/extract-get.mdx | 2 +- fr/api-reference/endpoint/extract.mdx | 2 +- fr/api-reference/endpoint/map.mdx | 3 +- fr/api-reference/endpoint/queue-status.mdx | 2 +- fr/api-reference/endpoint/scrape.mdx | 2 +- fr/api-reference/endpoint/search.mdx | 7 +- .../endpoint/token-usage-historical.mdx | 2 +- fr/api-reference/endpoint/token-usage.mdx | 2 +- .../v1-endpoint/batch-scrape-delete.mdx | 2 +- .../v1-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v1-endpoint/batch-scrape-get.mdx | 2 +- fr/api-reference/v1-endpoint/batch-scrape.mdx | 2 +- fr/api-reference/v1-endpoint/crawl-active.mdx | 2 +- fr/api-reference/v1-endpoint/crawl-delete.mdx | 2 +- .../v1-endpoint/crawl-get-errors.mdx | 2 +- fr/api-reference/v1-endpoint/crawl-get.mdx | 2 +- fr/api-reference/v1-endpoint/crawl-post.mdx | 2 +- .../v1-endpoint/credit-usage-historical.mdx | 3 +- fr/api-reference/v1-endpoint/credit-usage.mdx | 2 +- .../v1-endpoint/deep-research-get.mdx | 2 +- .../v1-endpoint/deep-research.mdx | 2 +- fr/api-reference/v1-endpoint/extract-get.mdx | 2 +- fr/api-reference/v1-endpoint/extract.mdx | 2 +- fr/api-reference/v1-endpoint/llmstxt-get.mdx | 3 +- fr/api-reference/v1-endpoint/llmstxt.mdx | 2 +- fr/api-reference/v1-endpoint/map.mdx | 2 +- fr/api-reference/v1-endpoint/queue-status.mdx | 2 +- fr/api-reference/v1-endpoint/scrape.mdx | 2 +- fr/api-reference/v1-endpoint/search.mdx | 2 +- .../v1-endpoint/token-usage-historical.mdx | 2 +- fr/api-reference/v1-endpoint/token-usage.mdx | 2 +- fr/api-reference/v1-openapi.json | 3656 +++++++ fr/api-reference/v2-openapi.json | 3814 ++++++++ fr/contributing/guide.mdx | 6 - fr/contributing/self-host.mdx | 5 - .../authenticated-scraping.mdx | 2 - fr/developer-guides/common-sites/amazon.mdx | 6 - fr/developer-guides/common-sites/etsy.mdx | 6 - fr/developer-guides/common-sites/github.mdx | 7 - .../common-sites/wikipedia.mdx | 6 - .../ai-research-assistant-cookbook.mdx | 1 - .../llm-sdks-and-frameworks/anthropic.mdx | 3 - .../llm-sdks-and-frameworks/gemini.mdx | 3 - .../llm-sdks-and-frameworks/google-adk.mdx | 1 - .../llm-sdks-and-frameworks/langchain.mdx | 4 - .../llm-sdks-and-frameworks/langgraph.mdx | 2 - .../llm-sdks-and-frameworks/llamaindex.mdx | 1 - .../llm-sdks-and-frameworks/mastra.mdx | 1 - .../llm-sdks-and-frameworks/openai.mdx | 5 - .../llm-sdks-and-frameworks/vercel-ai-sdk.mdx | 10 - .../mcp-setup-guides/chatgpt.mdx | 124 + .../mcp-setup-guides/claude-code.mdx | 1 - .../mcp-setup-guides/cursor.mdx | 1 - .../mcp-setup-guides/factory-ai.mdx | 2 - .../mcp-setup-guides/windsurf.mdx | 1 - fr/features/alpha/llmstxt-npx.mdx | 3 - fr/features/change-tracking.mdx | 7 - fr/features/extract.mdx | 1 - fr/features/search-v0.mdx | 8 - fr/integrations/camelai.mdx | 2 - fr/integrations/crewai.mdx | 4 - fr/mcp-server.mdx | 24 - fr/v0/advanced-scraping-guide.mdx | 7 - fr/v0/api-reference/endpoint/crawl-cancel.mdx | 2 +- fr/v0/api-reference/endpoint/crawl.mdx | 2 +- fr/v0/api-reference/endpoint/scrape.mdx | 2 +- fr/v0/api-reference/endpoint/search.mdx | 2 +- fr/v0/api-reference/endpoint/status.mdx | 2 +- fr/v0/api-reference/introduction.mdx | 2 - fr/v0/api-reference/v0-openapi.json | 947 ++ fr/v0/features/crawl.mdx | 1 - fr/v0/features/extract.mdx | 4 - fr/v1/advanced-scraping-guide.mdx | 7 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- fr/v1/api-reference/endpoint/batch-scrape.mdx | 2 +- fr/v1/api-reference/endpoint/crawl-active.mdx | 2 +- fr/v1/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- fr/v1/api-reference/endpoint/crawl-get.mdx | 2 +- fr/v1/api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 3 +- fr/v1/api-reference/endpoint/credit-usage.mdx | 2 +- .../endpoint/deep-research-get.mdx | 2 +- .../api-reference/endpoint/deep-research.mdx | 2 +- fr/v1/api-reference/endpoint/extract-get.mdx | 2 +- fr/v1/api-reference/endpoint/extract.mdx | 2 +- fr/v1/api-reference/endpoint/llmstxt-get.mdx | 3 +- fr/v1/api-reference/endpoint/llmstxt.mdx | 2 +- fr/v1/api-reference/endpoint/map.mdx | 2 +- fr/v1/api-reference/endpoint/scrape.mdx | 2 +- fr/v1/api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 2 +- fr/v1/api-reference/endpoint/token-usage.mdx | 2 +- fr/v1/api-reference/v1-openapi.json | 3387 +++++++ .../v2-endpoint/batch-scrape-delete.mdx | 2 +- .../v2-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v2-endpoint/batch-scrape-get.mdx | 2 +- .../v2-endpoint/batch-scrape.mdx | 2 +- .../v2-endpoint/crawl-active.mdx | 2 +- .../v2-endpoint/crawl-delete.mdx | 2 +- .../v2-endpoint/crawl-get-errors.mdx | 2 +- fr/v1/api-reference/v2-endpoint/crawl-get.mdx | 2 +- .../api-reference/v2-endpoint/crawl-post.mdx | 3 +- .../v2-endpoint/credit-usage-historical.mdx | 3 +- .../v2-endpoint/credit-usage.mdx | 2 +- .../api-reference/v2-endpoint/extract-get.mdx | 2 +- fr/v1/api-reference/v2-endpoint/extract.mdx | 2 +- fr/v1/api-reference/v2-endpoint/map.mdx | 3 +- fr/v1/api-reference/v2-endpoint/scrape.mdx | 2 +- fr/v1/api-reference/v2-endpoint/search.mdx | 4 +- .../v2-endpoint/token-usage-historical.mdx | 2 +- .../api-reference/v2-endpoint/token-usage.mdx | 2 +- fr/v1/api-reference/v2-openapi.json | 3261 +++++++ fr/v1/features/alpha/llmstxt-npx.mdx | 3 - fr/v1/features/change-tracking.mdx | 14 - fr/v1/features/extract.mdx | 1 - fr/v1/features/search-v0.mdx | 8 - fr/webhooks/events.mdx | 10 - fr/webhooks/testing.mdx | 1 - fr/x402/search.mdx | 2 +- gt-lock.json | 8664 +++++++++++------ gt.config.json | 57 +- ja/_essentials/code.mdx | 1 - ja/_essentials/markdown.mdx | 4 - ja/_essentials/navigation.mdx | 1 - ja/advanced-scraping-guide.mdx | 7 - ja/agents/fire-1-extract.mdx | 4 - ja/agents/fire-1.mdx | 1 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- ja/api-reference/endpoint/batch-scrape.mdx | 2 +- ja/api-reference/endpoint/crawl-active.mdx | 2 +- ja/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- ja/api-reference/endpoint/crawl-get.mdx | 2 +- .../endpoint/crawl-params-preview.mdx | 3 +- ja/api-reference/endpoint/crawl-post.mdx | 3 +- .../endpoint/credit-usage-historical.mdx | 3 +- ja/api-reference/endpoint/credit-usage.mdx | 2 +- ja/api-reference/endpoint/extract-get.mdx | 2 +- ja/api-reference/endpoint/extract.mdx | 2 +- ja/api-reference/endpoint/map.mdx | 3 +- ja/api-reference/endpoint/queue-status.mdx | 2 +- ja/api-reference/endpoint/scrape.mdx | 2 +- ja/api-reference/endpoint/search.mdx | 7 +- .../endpoint/token-usage-historical.mdx | 2 +- ja/api-reference/endpoint/token-usage.mdx | 2 +- .../v1-endpoint/batch-scrape-delete.mdx | 2 +- .../v1-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v1-endpoint/batch-scrape-get.mdx | 2 +- ja/api-reference/v1-endpoint/batch-scrape.mdx | 2 +- ja/api-reference/v1-endpoint/crawl-active.mdx | 2 +- ja/api-reference/v1-endpoint/crawl-delete.mdx | 2 +- .../v1-endpoint/crawl-get-errors.mdx | 2 +- ja/api-reference/v1-endpoint/crawl-get.mdx | 2 +- ja/api-reference/v1-endpoint/crawl-post.mdx | 2 +- .../v1-endpoint/credit-usage-historical.mdx | 3 +- ja/api-reference/v1-endpoint/credit-usage.mdx | 2 +- .../v1-endpoint/deep-research-get.mdx | 2 +- .../v1-endpoint/deep-research.mdx | 2 +- ja/api-reference/v1-endpoint/extract-get.mdx | 2 +- ja/api-reference/v1-endpoint/extract.mdx | 2 +- ja/api-reference/v1-endpoint/llmstxt-get.mdx | 3 +- ja/api-reference/v1-endpoint/llmstxt.mdx | 2 +- ja/api-reference/v1-endpoint/map.mdx | 2 +- ja/api-reference/v1-endpoint/queue-status.mdx | 2 +- ja/api-reference/v1-endpoint/scrape.mdx | 2 +- ja/api-reference/v1-endpoint/search.mdx | 2 +- .../v1-endpoint/token-usage-historical.mdx | 2 +- ja/api-reference/v1-endpoint/token-usage.mdx | 2 +- ja/api-reference/v1-openapi.json | 3656 +++++++ ja/api-reference/v2-openapi.json | 3814 ++++++++ ja/contributing/guide.mdx | 6 - ja/contributing/self-host.mdx | 5 - .../authenticated-scraping.mdx | 2 - ja/developer-guides/common-sites/amazon.mdx | 6 - ja/developer-guides/common-sites/etsy.mdx | 6 - ja/developer-guides/common-sites/github.mdx | 7 - .../common-sites/wikipedia.mdx | 6 - .../ai-research-assistant-cookbook.mdx | 1 - .../llm-sdks-and-frameworks/anthropic.mdx | 3 - .../llm-sdks-and-frameworks/gemini.mdx | 3 - .../llm-sdks-and-frameworks/google-adk.mdx | 1 - .../llm-sdks-and-frameworks/langchain.mdx | 4 - .../llm-sdks-and-frameworks/langgraph.mdx | 2 - .../llm-sdks-and-frameworks/llamaindex.mdx | 1 - .../llm-sdks-and-frameworks/mastra.mdx | 1 - .../llm-sdks-and-frameworks/openai.mdx | 5 - .../llm-sdks-and-frameworks/vercel-ai-sdk.mdx | 10 - .../mcp-setup-guides/chatgpt.mdx | 124 + .../mcp-setup-guides/claude-code.mdx | 1 - .../mcp-setup-guides/cursor.mdx | 1 - .../mcp-setup-guides/factory-ai.mdx | 2 - .../mcp-setup-guides/windsurf.mdx | 1 - ja/features/alpha/llmstxt-npx.mdx | 3 - ja/features/change-tracking.mdx | 7 - ja/features/extract.mdx | 1 - ja/features/search-v0.mdx | 8 - ja/integrations/camelai.mdx | 2 - ja/integrations/crewai.mdx | 4 - ja/mcp-server.mdx | 24 - ja/v0/advanced-scraping-guide.mdx | 7 - ja/v0/api-reference/endpoint/crawl-cancel.mdx | 2 +- ja/v0/api-reference/endpoint/crawl.mdx | 2 +- ja/v0/api-reference/endpoint/scrape.mdx | 2 +- ja/v0/api-reference/endpoint/search.mdx | 2 +- ja/v0/api-reference/endpoint/status.mdx | 2 +- ja/v0/api-reference/introduction.mdx | 2 - ja/v0/api-reference/v0-openapi.json | 947 ++ ja/v0/features/crawl.mdx | 1 - ja/v0/features/extract.mdx | 4 - ja/v1/advanced-scraping-guide.mdx | 7 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- ja/v1/api-reference/endpoint/batch-scrape.mdx | 2 +- ja/v1/api-reference/endpoint/crawl-active.mdx | 2 +- ja/v1/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- ja/v1/api-reference/endpoint/crawl-get.mdx | 2 +- ja/v1/api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 3 +- ja/v1/api-reference/endpoint/credit-usage.mdx | 2 +- .../endpoint/deep-research-get.mdx | 2 +- .../api-reference/endpoint/deep-research.mdx | 2 +- ja/v1/api-reference/endpoint/extract-get.mdx | 2 +- ja/v1/api-reference/endpoint/extract.mdx | 2 +- ja/v1/api-reference/endpoint/llmstxt-get.mdx | 3 +- ja/v1/api-reference/endpoint/llmstxt.mdx | 2 +- ja/v1/api-reference/endpoint/map.mdx | 2 +- ja/v1/api-reference/endpoint/scrape.mdx | 2 +- ja/v1/api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 2 +- ja/v1/api-reference/endpoint/token-usage.mdx | 2 +- ja/v1/api-reference/v1-openapi.json | 3387 +++++++ .../v2-endpoint/batch-scrape-delete.mdx | 2 +- .../v2-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v2-endpoint/batch-scrape-get.mdx | 2 +- .../v2-endpoint/batch-scrape.mdx | 2 +- .../v2-endpoint/crawl-active.mdx | 2 +- .../v2-endpoint/crawl-delete.mdx | 2 +- .../v2-endpoint/crawl-get-errors.mdx | 2 +- ja/v1/api-reference/v2-endpoint/crawl-get.mdx | 2 +- .../api-reference/v2-endpoint/crawl-post.mdx | 3 +- .../v2-endpoint/credit-usage-historical.mdx | 3 +- .../v2-endpoint/credit-usage.mdx | 2 +- .../api-reference/v2-endpoint/extract-get.mdx | 2 +- ja/v1/api-reference/v2-endpoint/extract.mdx | 2 +- ja/v1/api-reference/v2-endpoint/map.mdx | 3 +- ja/v1/api-reference/v2-endpoint/scrape.mdx | 2 +- ja/v1/api-reference/v2-endpoint/search.mdx | 4 +- .../v2-endpoint/token-usage-historical.mdx | 2 +- .../api-reference/v2-endpoint/token-usage.mdx | 2 +- ja/v1/api-reference/v2-openapi.json | 3261 +++++++ ja/v1/features/alpha/llmstxt-npx.mdx | 3 - ja/v1/features/change-tracking.mdx | 14 - ja/v1/features/extract.mdx | 1 - ja/v1/features/search-v0.mdx | 8 - ja/webhooks/events.mdx | 10 - ja/webhooks/testing.mdx | 1 - ja/x402/search.mdx | 2 +- pt-BR/_essentials/code.mdx | 1 - pt-BR/_essentials/markdown.mdx | 4 - pt-BR/_essentials/navigation.mdx | 1 - pt-BR/advanced-scraping-guide.mdx | 7 - pt-BR/agents/fire-1-extract.mdx | 4 - pt-BR/agents/fire-1.mdx | 1 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- pt-BR/api-reference/endpoint/batch-scrape.mdx | 2 +- pt-BR/api-reference/endpoint/crawl-active.mdx | 2 +- pt-BR/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- pt-BR/api-reference/endpoint/crawl-get.mdx | 2 +- .../endpoint/crawl-params-preview.mdx | 3 +- pt-BR/api-reference/endpoint/crawl-post.mdx | 3 +- .../endpoint/credit-usage-historical.mdx | 3 +- pt-BR/api-reference/endpoint/credit-usage.mdx | 2 +- pt-BR/api-reference/endpoint/extract-get.mdx | 2 +- pt-BR/api-reference/endpoint/extract.mdx | 2 +- pt-BR/api-reference/endpoint/map.mdx | 3 +- pt-BR/api-reference/endpoint/queue-status.mdx | 2 +- pt-BR/api-reference/endpoint/scrape.mdx | 2 +- pt-BR/api-reference/endpoint/search.mdx | 7 +- .../endpoint/token-usage-historical.mdx | 3 +- pt-BR/api-reference/endpoint/token-usage.mdx | 2 +- .../v1-endpoint/batch-scrape-delete.mdx | 2 +- .../v1-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v1-endpoint/batch-scrape-get.mdx | 2 +- .../v1-endpoint/batch-scrape.mdx | 2 +- .../v1-endpoint/crawl-active.mdx | 2 +- .../v1-endpoint/crawl-delete.mdx | 2 +- .../v1-endpoint/crawl-get-errors.mdx | 2 +- pt-BR/api-reference/v1-endpoint/crawl-get.mdx | 2 +- .../api-reference/v1-endpoint/crawl-post.mdx | 2 +- .../v1-endpoint/credit-usage-historical.mdx | 3 +- .../v1-endpoint/credit-usage.mdx | 2 +- .../v1-endpoint/deep-research-get.mdx | 2 +- .../v1-endpoint/deep-research.mdx | 2 +- .../api-reference/v1-endpoint/extract-get.mdx | 2 +- pt-BR/api-reference/v1-endpoint/extract.mdx | 2 +- .../api-reference/v1-endpoint/llmstxt-get.mdx | 3 +- pt-BR/api-reference/v1-endpoint/llmstxt.mdx | 2 +- pt-BR/api-reference/v1-endpoint/map.mdx | 2 +- .../v1-endpoint/queue-status.mdx | 2 +- pt-BR/api-reference/v1-endpoint/scrape.mdx | 2 +- pt-BR/api-reference/v1-endpoint/search.mdx | 2 +- .../v1-endpoint/token-usage-historical.mdx | 3 +- .../api-reference/v1-endpoint/token-usage.mdx | 2 +- pt-BR/api-reference/v1-openapi.json | 3656 +++++++ pt-BR/api-reference/v2-openapi.json | 3814 ++++++++ pt-BR/contributing/guide.mdx | 6 - pt-BR/contributing/self-host.mdx | 5 - .../authenticated-scraping.mdx | 2 - .../developer-guides/common-sites/amazon.mdx | 6 - pt-BR/developer-guides/common-sites/etsy.mdx | 6 - .../developer-guides/common-sites/github.mdx | 7 - .../common-sites/wikipedia.mdx | 6 - .../ai-research-assistant-cookbook.mdx | 1 - .../llm-sdks-and-frameworks/anthropic.mdx | 3 - .../llm-sdks-and-frameworks/gemini.mdx | 3 - .../llm-sdks-and-frameworks/google-adk.mdx | 1 - .../llm-sdks-and-frameworks/langchain.mdx | 4 - .../llm-sdks-and-frameworks/langgraph.mdx | 2 - .../llm-sdks-and-frameworks/llamaindex.mdx | 1 - .../llm-sdks-and-frameworks/mastra.mdx | 1 - .../llm-sdks-and-frameworks/openai.mdx | 5 - .../llm-sdks-and-frameworks/vercel-ai-sdk.mdx | 10 - .../mcp-setup-guides/chatgpt.mdx | 124 + .../mcp-setup-guides/claude-code.mdx | 1 - .../mcp-setup-guides/cursor.mdx | 1 - .../mcp-setup-guides/factory-ai.mdx | 2 - .../mcp-setup-guides/windsurf.mdx | 1 - pt-BR/features/alpha/llmstxt-npx.mdx | 3 - pt-BR/features/change-tracking.mdx | 7 - pt-BR/features/extract.mdx | 1 - pt-BR/features/search-v0.mdx | 8 - pt-BR/integrations/camelai.mdx | 2 - pt-BR/integrations/crewai.mdx | 4 - pt-BR/mcp-server.mdx | 24 - pt-BR/v0/advanced-scraping-guide.mdx | 7 - .../api-reference/endpoint/crawl-cancel.mdx | 2 +- pt-BR/v0/api-reference/endpoint/crawl.mdx | 2 +- pt-BR/v0/api-reference/endpoint/scrape.mdx | 2 +- pt-BR/v0/api-reference/endpoint/search.mdx | 2 +- pt-BR/v0/api-reference/endpoint/status.mdx | 2 +- pt-BR/v0/api-reference/introduction.mdx | 2 - pt-BR/v0/api-reference/v0-openapi.json | 947 ++ pt-BR/v0/features/crawl.mdx | 1 - pt-BR/v0/features/extract.mdx | 4 - pt-BR/v1/advanced-scraping-guide.mdx | 7 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- .../api-reference/endpoint/batch-scrape.mdx | 2 +- .../api-reference/endpoint/crawl-active.mdx | 2 +- .../api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- pt-BR/v1/api-reference/endpoint/crawl-get.mdx | 2 +- .../v1/api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 3 +- .../api-reference/endpoint/credit-usage.mdx | 2 +- .../endpoint/deep-research-get.mdx | 2 +- .../api-reference/endpoint/deep-research.mdx | 2 +- .../v1/api-reference/endpoint/extract-get.mdx | 2 +- pt-BR/v1/api-reference/endpoint/extract.mdx | 2 +- .../v1/api-reference/endpoint/llmstxt-get.mdx | 3 +- pt-BR/v1/api-reference/endpoint/llmstxt.mdx | 2 +- pt-BR/v1/api-reference/endpoint/map.mdx | 2 +- pt-BR/v1/api-reference/endpoint/scrape.mdx | 2 +- pt-BR/v1/api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 3 +- .../v1/api-reference/endpoint/token-usage.mdx | 2 +- pt-BR/v1/api-reference/v1-openapi.json | 3387 +++++++ .../v2-endpoint/batch-scrape-delete.mdx | 2 +- .../v2-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v2-endpoint/batch-scrape-get.mdx | 2 +- .../v2-endpoint/batch-scrape.mdx | 2 +- .../v2-endpoint/crawl-active.mdx | 2 +- .../v2-endpoint/crawl-delete.mdx | 2 +- .../v2-endpoint/crawl-get-errors.mdx | 2 +- .../api-reference/v2-endpoint/crawl-get.mdx | 2 +- .../api-reference/v2-endpoint/crawl-post.mdx | 3 +- .../v2-endpoint/credit-usage-historical.mdx | 3 +- .../v2-endpoint/credit-usage.mdx | 2 +- .../api-reference/v2-endpoint/extract-get.mdx | 2 +- .../v1/api-reference/v2-endpoint/extract.mdx | 2 +- pt-BR/v1/api-reference/v2-endpoint/map.mdx | 3 +- pt-BR/v1/api-reference/v2-endpoint/scrape.mdx | 2 +- pt-BR/v1/api-reference/v2-endpoint/search.mdx | 4 +- .../v2-endpoint/token-usage-historical.mdx | 3 +- .../api-reference/v2-endpoint/token-usage.mdx | 2 +- pt-BR/v1/api-reference/v2-openapi.json | 3261 +++++++ pt-BR/v1/features/alpha/llmstxt-npx.mdx | 3 - pt-BR/v1/features/change-tracking.mdx | 14 - pt-BR/v1/features/extract.mdx | 1 - pt-BR/v1/features/search-v0.mdx | 8 - pt-BR/webhooks/events.mdx | 10 - pt-BR/webhooks/testing.mdx | 1 - pt-BR/x402/search.mdx | 2 +- v0/api-reference/endpoint/crawl-cancel.mdx | 2 +- v0/api-reference/endpoint/crawl.mdx | 2 +- v0/api-reference/endpoint/scrape.mdx | 2 +- v0/api-reference/endpoint/search.mdx | 2 +- v0/api-reference/endpoint/status.mdx | 2 +- .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- v1/api-reference/endpoint/batch-scrape.mdx | 2 +- v1/api-reference/endpoint/crawl-active.mdx | 2 +- v1/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- v1/api-reference/endpoint/crawl-get.mdx | 2 +- v1/api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 2 +- v1/api-reference/endpoint/credit-usage.mdx | 2 +- .../endpoint/deep-research-get.mdx | 2 +- v1/api-reference/endpoint/deep-research.mdx | 2 +- v1/api-reference/endpoint/extract-get.mdx | 2 +- v1/api-reference/endpoint/extract.mdx | 2 +- v1/api-reference/endpoint/llmstxt-get.mdx | 2 +- v1/api-reference/endpoint/llmstxt.mdx | 2 +- v1/api-reference/endpoint/map.mdx | 2 +- v1/api-reference/endpoint/scrape.mdx | 2 +- v1/api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 2 +- v1/api-reference/endpoint/token-usage.mdx | 2 +- .../v2-endpoint/batch-scrape-delete.mdx | 2 +- .../v2-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v2-endpoint/batch-scrape-get.mdx | 2 +- v1/api-reference/v2-endpoint/batch-scrape.mdx | 2 +- v1/api-reference/v2-endpoint/crawl-active.mdx | 2 +- v1/api-reference/v2-endpoint/crawl-delete.mdx | 2 +- .../v2-endpoint/crawl-get-errors.mdx | 2 +- v1/api-reference/v2-endpoint/crawl-get.mdx | 2 +- v1/api-reference/v2-endpoint/crawl-post.mdx | 2 +- .../v2-endpoint/credit-usage-historical.mdx | 2 +- v1/api-reference/v2-endpoint/credit-usage.mdx | 2 +- v1/api-reference/v2-endpoint/extract-get.mdx | 2 +- v1/api-reference/v2-endpoint/extract.mdx | 2 +- v1/api-reference/v2-endpoint/map.mdx | 2 +- v1/api-reference/v2-endpoint/scrape.mdx | 2 +- v1/api-reference/v2-endpoint/search.mdx | 2 +- .../v2-endpoint/token-usage-historical.mdx | 2 +- v1/api-reference/v2-endpoint/token-usage.mdx | 2 +- x402/search.mdx | 2 +- zh/_essentials/code.mdx | 1 - zh/_essentials/markdown.mdx | 4 - zh/_essentials/navigation.mdx | 1 - zh/advanced-scraping-guide.mdx | 7 - zh/agents/fire-1-extract.mdx | 4 - zh/agents/fire-1.mdx | 1 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- zh/api-reference/endpoint/batch-scrape.mdx | 2 +- zh/api-reference/endpoint/crawl-active.mdx | 2 +- zh/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- zh/api-reference/endpoint/crawl-get.mdx | 2 +- .../endpoint/crawl-params-preview.mdx | 3 +- zh/api-reference/endpoint/crawl-post.mdx | 3 +- .../endpoint/credit-usage-historical.mdx | 3 +- zh/api-reference/endpoint/credit-usage.mdx | 2 +- zh/api-reference/endpoint/extract-get.mdx | 2 +- zh/api-reference/endpoint/extract.mdx | 2 +- zh/api-reference/endpoint/map.mdx | 3 +- zh/api-reference/endpoint/queue-status.mdx | 2 +- zh/api-reference/endpoint/scrape.mdx | 2 +- zh/api-reference/endpoint/search.mdx | 7 +- .../endpoint/token-usage-historical.mdx | 2 +- zh/api-reference/endpoint/token-usage.mdx | 2 +- .../v1-endpoint/batch-scrape-delete.mdx | 2 +- .../v1-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v1-endpoint/batch-scrape-get.mdx | 2 +- zh/api-reference/v1-endpoint/batch-scrape.mdx | 2 +- zh/api-reference/v1-endpoint/crawl-active.mdx | 2 +- zh/api-reference/v1-endpoint/crawl-delete.mdx | 2 +- .../v1-endpoint/crawl-get-errors.mdx | 2 +- zh/api-reference/v1-endpoint/crawl-get.mdx | 2 +- zh/api-reference/v1-endpoint/crawl-post.mdx | 2 +- .../v1-endpoint/credit-usage-historical.mdx | 3 +- zh/api-reference/v1-endpoint/credit-usage.mdx | 2 +- .../v1-endpoint/deep-research-get.mdx | 2 +- .../v1-endpoint/deep-research.mdx | 2 +- zh/api-reference/v1-endpoint/extract-get.mdx | 2 +- zh/api-reference/v1-endpoint/extract.mdx | 2 +- zh/api-reference/v1-endpoint/llmstxt-get.mdx | 3 +- zh/api-reference/v1-endpoint/llmstxt.mdx | 2 +- zh/api-reference/v1-endpoint/map.mdx | 2 +- zh/api-reference/v1-endpoint/queue-status.mdx | 2 +- zh/api-reference/v1-endpoint/scrape.mdx | 2 +- zh/api-reference/v1-endpoint/search.mdx | 2 +- .../v1-endpoint/token-usage-historical.mdx | 2 +- zh/api-reference/v1-endpoint/token-usage.mdx | 2 +- zh/api-reference/v1-openapi.json | 3656 +++++++ zh/api-reference/v2-openapi.json | 3814 ++++++++ zh/contributing/guide.mdx | 6 - zh/contributing/self-host.mdx | 5 - .../authenticated-scraping.mdx | 2 - zh/developer-guides/common-sites/amazon.mdx | 6 - zh/developer-guides/common-sites/etsy.mdx | 6 - zh/developer-guides/common-sites/github.mdx | 7 - .../common-sites/wikipedia.mdx | 6 - .../ai-research-assistant-cookbook.mdx | 1 - .../llm-sdks-and-frameworks/anthropic.mdx | 3 - .../llm-sdks-and-frameworks/gemini.mdx | 3 - .../llm-sdks-and-frameworks/google-adk.mdx | 1 - .../llm-sdks-and-frameworks/langchain.mdx | 4 - .../llm-sdks-and-frameworks/langgraph.mdx | 2 - .../llm-sdks-and-frameworks/llamaindex.mdx | 1 - .../llm-sdks-and-frameworks/mastra.mdx | 1 - .../llm-sdks-and-frameworks/openai.mdx | 5 - .../llm-sdks-and-frameworks/vercel-ai-sdk.mdx | 10 - .../mcp-setup-guides/chatgpt.mdx | 124 + .../mcp-setup-guides/claude-code.mdx | 1 - .../mcp-setup-guides/cursor.mdx | 1 - .../mcp-setup-guides/factory-ai.mdx | 2 - .../mcp-setup-guides/windsurf.mdx | 1 - zh/features/alpha/llmstxt-npx.mdx | 3 - zh/features/change-tracking.mdx | 7 - zh/features/extract.mdx | 1 - zh/features/search-v0.mdx | 8 - zh/integrations/camelai.mdx | 2 - zh/integrations/crewai.mdx | 4 - zh/mcp-server.mdx | 24 - zh/v0/advanced-scraping-guide.mdx | 7 - zh/v0/api-reference/endpoint/crawl-cancel.mdx | 2 +- zh/v0/api-reference/endpoint/crawl.mdx | 2 +- zh/v0/api-reference/endpoint/scrape.mdx | 2 +- zh/v0/api-reference/endpoint/search.mdx | 2 +- zh/v0/api-reference/endpoint/status.mdx | 2 +- zh/v0/api-reference/introduction.mdx | 2 - zh/v0/api-reference/v0-openapi.json | 947 ++ zh/v0/features/crawl.mdx | 1 - zh/v0/features/extract.mdx | 4 - zh/v1/advanced-scraping-guide.mdx | 7 - .../endpoint/batch-scrape-delete.mdx | 2 +- .../endpoint/batch-scrape-get-errors.mdx | 2 +- .../endpoint/batch-scrape-get.mdx | 2 +- zh/v1/api-reference/endpoint/batch-scrape.mdx | 2 +- zh/v1/api-reference/endpoint/crawl-active.mdx | 2 +- zh/v1/api-reference/endpoint/crawl-delete.mdx | 2 +- .../endpoint/crawl-get-errors.mdx | 2 +- zh/v1/api-reference/endpoint/crawl-get.mdx | 2 +- zh/v1/api-reference/endpoint/crawl-post.mdx | 2 +- .../endpoint/credit-usage-historical.mdx | 3 +- zh/v1/api-reference/endpoint/credit-usage.mdx | 2 +- .../endpoint/deep-research-get.mdx | 2 +- .../api-reference/endpoint/deep-research.mdx | 2 +- zh/v1/api-reference/endpoint/extract-get.mdx | 2 +- zh/v1/api-reference/endpoint/extract.mdx | 2 +- zh/v1/api-reference/endpoint/llmstxt-get.mdx | 3 +- zh/v1/api-reference/endpoint/llmstxt.mdx | 2 +- zh/v1/api-reference/endpoint/map.mdx | 2 +- zh/v1/api-reference/endpoint/scrape.mdx | 2 +- zh/v1/api-reference/endpoint/search.mdx | 2 +- .../endpoint/token-usage-historical.mdx | 2 +- zh/v1/api-reference/endpoint/token-usage.mdx | 2 +- zh/v1/api-reference/v1-openapi.json | 3387 +++++++ .../v2-endpoint/batch-scrape-delete.mdx | 2 +- .../v2-endpoint/batch-scrape-get-errors.mdx | 2 +- .../v2-endpoint/batch-scrape-get.mdx | 2 +- .../v2-endpoint/batch-scrape.mdx | 2 +- .../v2-endpoint/crawl-active.mdx | 2 +- .../v2-endpoint/crawl-delete.mdx | 2 +- .../v2-endpoint/crawl-get-errors.mdx | 2 +- zh/v1/api-reference/v2-endpoint/crawl-get.mdx | 2 +- .../api-reference/v2-endpoint/crawl-post.mdx | 3 +- .../v2-endpoint/credit-usage-historical.mdx | 3 +- .../v2-endpoint/credit-usage.mdx | 2 +- .../api-reference/v2-endpoint/extract-get.mdx | 2 +- zh/v1/api-reference/v2-endpoint/extract.mdx | 2 +- zh/v1/api-reference/v2-endpoint/map.mdx | 3 +- zh/v1/api-reference/v2-endpoint/scrape.mdx | 2 +- zh/v1/api-reference/v2-endpoint/search.mdx | 4 +- .../v2-endpoint/token-usage-historical.mdx | 2 +- .../api-reference/v2-endpoint/token-usage.mdx | 2 +- zh/v1/api-reference/v2-openapi.json | 3261 +++++++ zh/v1/features/alpha/llmstxt-npx.mdx | 3 - zh/v1/features/change-tracking.mdx | 14 - zh/v1/features/extract.mdx | 1 - zh/v1/features/search-v0.mdx | 8 - zh/webhooks/events.mdx | 10 - zh/webhooks/testing.mdx | 1 - zh/x402/search.mdx | 2 +- 791 files changed, 82382 insertions(+), 4441 deletions(-) create mode 100644 es/api-reference/v1-openapi.json create mode 100644 es/api-reference/v2-openapi.json create mode 100644 es/developer-guides/mcp-setup-guides/chatgpt.mdx create mode 100644 es/v0/api-reference/v0-openapi.json create mode 100644 es/v1/api-reference/v1-openapi.json create mode 100644 es/v1/api-reference/v2-openapi.json create mode 100644 fr/api-reference/v1-openapi.json create mode 100644 fr/api-reference/v2-openapi.json create mode 100644 fr/developer-guides/mcp-setup-guides/chatgpt.mdx create mode 100644 fr/v0/api-reference/v0-openapi.json create mode 100644 fr/v1/api-reference/v1-openapi.json create mode 100644 fr/v1/api-reference/v2-openapi.json create mode 100644 ja/api-reference/v1-openapi.json create mode 100644 ja/api-reference/v2-openapi.json create mode 100644 ja/developer-guides/mcp-setup-guides/chatgpt.mdx create mode 100644 ja/v0/api-reference/v0-openapi.json create mode 100644 ja/v1/api-reference/v1-openapi.json create mode 100644 ja/v1/api-reference/v2-openapi.json create mode 100644 pt-BR/api-reference/v1-openapi.json create mode 100644 pt-BR/api-reference/v2-openapi.json create mode 100644 pt-BR/developer-guides/mcp-setup-guides/chatgpt.mdx create mode 100644 pt-BR/v0/api-reference/v0-openapi.json create mode 100644 pt-BR/v1/api-reference/v1-openapi.json create mode 100644 pt-BR/v1/api-reference/v2-openapi.json create mode 100644 zh/api-reference/v1-openapi.json create mode 100644 zh/api-reference/v2-openapi.json create mode 100644 zh/developer-guides/mcp-setup-guides/chatgpt.mdx create mode 100644 zh/v0/api-reference/v0-openapi.json create mode 100644 zh/v1/api-reference/v1-openapi.json create mode 100644 zh/v1/api-reference/v2-openapi.json diff --git a/api-reference/endpoint/batch-scrape-delete.mdx b/api-reference/endpoint/batch-scrape-delete.mdx index 9179d1a5..b8a9c25c 100644 --- a/api-reference/endpoint/batch-scrape-delete.mdx +++ b/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,4 +1,4 @@ --- title: 'Cancel Batch Scrape' -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- \ No newline at end of file diff --git a/api-reference/endpoint/batch-scrape-get-errors.mdx b/api-reference/endpoint/batch-scrape-get-errors.mdx index 526e55f0..b65fe697 100644 --- a/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,4 +1,4 @@ --- title: 'Get Batch Scrape Errors' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- diff --git a/api-reference/endpoint/batch-scrape-get.mdx b/api-reference/endpoint/batch-scrape-get.mdx index 36a569f1..fd290b2e 100644 --- a/api-reference/endpoint/batch-scrape-get.mdx +++ b/api-reference/endpoint/batch-scrape-get.mdx @@ -1,4 +1,4 @@ --- title: 'Get Batch Scrape Status' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- diff --git a/api-reference/endpoint/batch-scrape.mdx b/api-reference/endpoint/batch-scrape.mdx index 8f39ba7d..88d9d0db 100644 --- a/api-reference/endpoint/batch-scrape.mdx +++ b/api-reference/endpoint/batch-scrape.mdx @@ -1,4 +1,4 @@ --- title: 'Batch Scrape' -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- diff --git a/api-reference/endpoint/crawl-active.mdx b/api-reference/endpoint/crawl-active.mdx index bd4274a0..9c232df4 100644 --- a/api-reference/endpoint/crawl-active.mdx +++ b/api-reference/endpoint/crawl-active.mdx @@ -1,4 +1,4 @@ --- title: 'Get Active Crawls' -openapi: 'v2-openapi GET /crawl/active' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- diff --git a/api-reference/endpoint/crawl-delete.mdx b/api-reference/endpoint/crawl-delete.mdx index a057adda..d59195a0 100644 --- a/api-reference/endpoint/crawl-delete.mdx +++ b/api-reference/endpoint/crawl-delete.mdx @@ -1,4 +1,4 @@ --- title: 'Cancel Crawl' -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' --- diff --git a/api-reference/endpoint/crawl-get-errors.mdx b/api-reference/endpoint/crawl-get-errors.mdx index 333b689c..f3683054 100644 --- a/api-reference/endpoint/crawl-get-errors.mdx +++ b/api-reference/endpoint/crawl-get-errors.mdx @@ -1,4 +1,4 @@ --- title: 'Get Crawl Errors' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- diff --git a/api-reference/endpoint/crawl-get.mdx b/api-reference/endpoint/crawl-get.mdx index 732e6844..37e5f911 100644 --- a/api-reference/endpoint/crawl-get.mdx +++ b/api-reference/endpoint/crawl-get.mdx @@ -1,4 +1,4 @@ --- title: 'Get Crawl Status' -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- diff --git a/api-reference/endpoint/crawl-params-preview.mdx b/api-reference/endpoint/crawl-params-preview.mdx index c3d48349..b719aee5 100644 --- a/api-reference/endpoint/crawl-params-preview.mdx +++ b/api-reference/endpoint/crawl-params-preview.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl Params Preview' -openapi: 'v2-openapi POST /crawl/params-preview' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /crawl/params-preview' --- ## What's New in v2 diff --git a/api-reference/endpoint/crawl-post.mdx b/api-reference/endpoint/crawl-post.mdx index 4610e370..e563bd96 100644 --- a/api-reference/endpoint/crawl-post.mdx +++ b/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v2-openapi POST /crawl' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' --- ## What's New in v2 diff --git a/api-reference/endpoint/credit-usage-historical.mdx b/api-reference/endpoint/credit-usage-historical.mdx index 2b95543c..bdcc0374 100644 --- a/api-reference/endpoint/credit-usage-historical.mdx +++ b/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Credit Usage' -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage/historical' --- Returns historical credit usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/api-reference/endpoint/credit-usage.mdx b/api-reference/endpoint/credit-usage.mdx index 798930f1..40fb7e12 100644 --- a/api-reference/endpoint/credit-usage.mdx +++ b/api-reference/endpoint/credit-usage.mdx @@ -1,4 +1,4 @@ --- title: 'Credit Usage' -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- \ No newline at end of file diff --git a/api-reference/endpoint/extract-get.mdx b/api-reference/endpoint/extract-get.mdx index afcfdeee..2a9e82ec 100644 --- a/api-reference/endpoint/extract-get.mdx +++ b/api-reference/endpoint/extract-get.mdx @@ -1,4 +1,4 @@ --- title: 'Get Extract Status' -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' --- \ No newline at end of file diff --git a/api-reference/endpoint/extract.mdx b/api-reference/endpoint/extract.mdx index e79e3b99..e3321e68 100644 --- a/api-reference/endpoint/extract.mdx +++ b/api-reference/endpoint/extract.mdx @@ -1,4 +1,4 @@ --- title: 'Extract' -openapi: 'v2-openapi POST /extract' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /extract' --- diff --git a/api-reference/endpoint/map.mdx b/api-reference/endpoint/map.mdx index b6d27f17..0b67afec 100644 --- a/api-reference/endpoint/map.mdx +++ b/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v2-openapi POST /map' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /map' --- ## What's New in v2 diff --git a/api-reference/endpoint/queue-status.mdx b/api-reference/endpoint/queue-status.mdx index 4f21a6a0..8b94a6d9 100644 --- a/api-reference/endpoint/queue-status.mdx +++ b/api-reference/endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: 'Queue Status' -openapi: 'v2-openapi GET /team/queue-status' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/queue-status' --- Metrics about your team's scrape queue. diff --git a/api-reference/endpoint/scrape.mdx b/api-reference/endpoint/scrape.mdx index fa630855..6313068d 100644 --- a/api-reference/endpoint/scrape.mdx +++ b/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v2-openapi POST /scrape' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' --- ## What's New in v2 diff --git a/api-reference/endpoint/search.mdx b/api-reference/endpoint/search.mdx index fa938877..9a2d91ca 100644 --- a/api-reference/endpoint/search.mdx +++ b/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v2-openapi POST /search' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /search' --- ## What's New in v2 diff --git a/api-reference/endpoint/token-usage-historical.mdx b/api-reference/endpoint/token-usage-historical.mdx index dec4af02..e378bf7c 100644 --- a/api-reference/endpoint/token-usage-historical.mdx +++ b/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Token Usage' -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- Returns historical token usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/api-reference/endpoint/token-usage.mdx b/api-reference/endpoint/token-usage.mdx index 9983653f..d06b6863 100644 --- a/api-reference/endpoint/token-usage.mdx +++ b/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Token Usage' -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- We've simplified billing so that Extract now uses credits, just like all of the other endpoints. Each credit is worth 15 tokens. Reported token usage now includes usage from all endpoints. \ No newline at end of file diff --git a/api-reference/v1-endpoint/batch-scrape-delete.mdx b/api-reference/v1-endpoint/batch-scrape-delete.mdx index ebf46744..4fb9dc67 100644 --- a/api-reference/v1-endpoint/batch-scrape-delete.mdx +++ b/api-reference/v1-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancel Batch Scrape' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape-delete) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/batch-scrape-get-errors.mdx b/api-reference/v1-endpoint/batch-scrape-get-errors.mdx index 567d8087..fc970450 100644 --- a/api-reference/v1-endpoint/batch-scrape-get-errors.mdx +++ b/api-reference/v1-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Get Batch Scrape Errors' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape-get-errors) is now available with improved error reporting and debugging capabilities. diff --git a/api-reference/v1-endpoint/batch-scrape-get.mdx b/api-reference/v1-endpoint/batch-scrape-get.mdx index 5fbf1aab..88147d9b 100644 --- a/api-reference/v1-endpoint/batch-scrape-get.mdx +++ b/api-reference/v1-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Batch Scrape Status' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape-get) is now available with improved status tracking and monitoring capabilities. diff --git a/api-reference/v1-endpoint/batch-scrape.mdx b/api-reference/v1-endpoint/batch-scrape.mdx index 77cc3143..fa31aff5 100644 --- a/api-reference/v1-endpoint/batch-scrape.mdx +++ b/api-reference/v1-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Batch Scrape' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape) is now available with improved batch processing performance and reliability. diff --git a/api-reference/v1-endpoint/crawl-active.mdx b/api-reference/v1-endpoint/crawl-active.mdx index aa2368ed..6fa32745 100644 --- a/api-reference/v1-endpoint/crawl-active.mdx +++ b/api-reference/v1-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Get Active Crawls' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-active) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/crawl-delete.mdx b/api-reference/v1-endpoint/crawl-delete.mdx index 4de65dde..5d5073f1 100644 --- a/api-reference/v1-endpoint/crawl-delete.mdx +++ b/api-reference/v1-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancel Crawl' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-delete) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/crawl-get-errors.mdx b/api-reference/v1-endpoint/crawl-get-errors.mdx index 96a0c423..2428e819 100644 --- a/api-reference/v1-endpoint/crawl-get-errors.mdx +++ b/api-reference/v1-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Errors' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-get-errors) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/crawl-get.mdx b/api-reference/v1-endpoint/crawl-get.mdx index a9d9f592..86084e84 100644 --- a/api-reference/v1-endpoint/crawl-get.mdx +++ b/api-reference/v1-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Status' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-get) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/crawl-post.mdx b/api-reference/v1-endpoint/crawl-post.mdx index 0f9f4105..2c24d347 100644 --- a/api-reference/v1-endpoint/crawl-post.mdx +++ b/api-reference/v1-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-post) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/credit-usage-historical.mdx b/api-reference/v1-endpoint/credit-usage-historical.mdx index 98154a18..c482711c 100644 --- a/api-reference/v1-endpoint/credit-usage-historical.mdx +++ b/api-reference/v1-endpoint/credit-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Credit Usage' -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage/historical' --- Returns historical credit usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/api-reference/v1-endpoint/credit-usage.mdx b/api-reference/v1-endpoint/credit-usage.mdx index 25db42c0..0d4a26a4 100644 --- a/api-reference/v1-endpoint/credit-usage.mdx +++ b/api-reference/v1-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Credit Usage' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Note: A new [v2 version of this API](/api-reference/endpoint/credit-usage) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/deep-research-get.mdx b/api-reference/v1-endpoint/deep-research-get.mdx index ba050e22..11f2e7ad 100644 --- a/api-reference/v1-endpoint/deep-research-get.mdx +++ b/api-reference/v1-endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: 'Deep Research' -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- diff --git a/api-reference/v1-endpoint/deep-research.mdx b/api-reference/v1-endpoint/deep-research.mdx index 1c1ff0e4..3a74ea1e 100644 --- a/api-reference/v1-endpoint/deep-research.mdx +++ b/api-reference/v1-endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: 'Deep Research' -openapi: 'v1-openapi POST /deep-research' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- The Deep Research endpoint enables AI-powered deep research and analysis on any topic. Simply provide a research query, and Firecrawl will autonomously explore the web, gather relevant information, and synthesize findings into comprehensive insights. diff --git a/api-reference/v1-endpoint/extract-get.mdx b/api-reference/v1-endpoint/extract-get.mdx index 3d804374..0445affc 100644 --- a/api-reference/v1-endpoint/extract-get.mdx +++ b/api-reference/v1-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Extract Status' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/extract-get) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/extract.mdx b/api-reference/v1-endpoint/extract.mdx index 8ef290f0..ca4e9c1b 100644 --- a/api-reference/v1-endpoint/extract.mdx +++ b/api-reference/v1-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Note: A new [v2 version of this API](/api-reference/endpoint/extract) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/llmstxt-get.mdx b/api-reference/v1-endpoint/llmstxt-get.mdx index d0b9da44..b38fb16d 100644 --- a/api-reference/v1-endpoint/llmstxt-get.mdx +++ b/api-reference/v1-endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt Status" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Get the status and results of an LLMs.txt generation job. This endpoint allows you to check if the generation is complete and retrieve the generated content. diff --git a/api-reference/v1-endpoint/llmstxt.mdx b/api-reference/v1-endpoint/llmstxt.mdx index 1e14c798..2527b463 100644 --- a/api-reference/v1-endpoint/llmstxt.mdx +++ b/api-reference/v1-endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Generate LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- The LLMs.txt generation endpoint creates LLMs.txt and LLMs-full.txt files for any website. These files provide a structured, LLM-friendly format of the website's content, making it easier for language models to understand and process the information. diff --git a/api-reference/v1-endpoint/map.mdx b/api-reference/v1-endpoint/map.mdx index 81940a1d..8a3844fe 100644 --- a/api-reference/v1-endpoint/map.mdx +++ b/api-reference/v1-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Note: A new [v2 version of this API](/api-reference/endpoint/map) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/queue-status.mdx b/api-reference/v1-endpoint/queue-status.mdx index 11396808..956dc5b4 100644 --- a/api-reference/v1-endpoint/queue-status.mdx +++ b/api-reference/v1-endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: 'Queue Status' -openapi: 'v1-openapi GET /team/queue-status' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/queue-status' --- > Note: A new [v2 version of this API](/api-reference/endpoint/queue-status) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/scrape.mdx b/api-reference/v1-endpoint/scrape.mdx index 4e0f5338..6c17ad5a 100644 --- a/api-reference/v1-endpoint/scrape.mdx +++ b/api-reference/v1-endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Note: A new [v2 version of this API](/api-reference/endpoint/scrape) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/search.mdx b/api-reference/v1-endpoint/search.mdx index e900e757..db495226 100644 --- a/api-reference/v1-endpoint/search.mdx +++ b/api-reference/v1-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > Note: A new [v2 version of this API](/api-reference/endpoint/search) is now available with improved features and performance. diff --git a/api-reference/v1-endpoint/token-usage-historical.mdx b/api-reference/v1-endpoint/token-usage-historical.mdx index 67465ca5..6484908a 100644 --- a/api-reference/v1-endpoint/token-usage-historical.mdx +++ b/api-reference/v1-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Token Usage' -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- Returns historical token usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/api-reference/v1-endpoint/token-usage.mdx b/api-reference/v1-endpoint/token-usage.mdx index 9e192d78..c1266c8e 100644 --- a/api-reference/v1-endpoint/token-usage.mdx +++ b/api-reference/v1-endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Token Usage' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Note: A new [v2 version of this API](/api-reference/endpoint/token-usage) is now available with improved features and performance. diff --git a/es/_essentials/code.mdx b/es/_essentials/code.mdx index c09af4e2..da7714e7 100644 --- a/es/_essentials/code.mdx +++ b/es/_essentials/code.mdx @@ -18,7 +18,6 @@ Para indicar que una `palabra` o `frase` es código, enciérrala entre comillas Para indicar una `palabra` o `frase` como código, enciérrala entre acentos graves (`). ``` -
### Bloque de código
diff --git a/es/_essentials/markdown.mdx b/es/_essentials/markdown.mdx index 420fe80d..467d406e 100644 --- a/es/_essentials/markdown.mdx +++ b/es/_essentials/markdown.mdx @@ -17,7 +17,6 @@ Lo mejor para encabezados de sección. ``` -
### Subtítulos
@@ -35,7 +34,6 @@ Se usan mejor como encabezados de subsecciones. Cada **título** y **subtítulo** crea un ancla y también aparece en la tabla de contenido de la derecha. -
## Formato de texto
@@ -83,7 +81,6 @@ Para crear una cita en bloque, agrega un `>` delante de un párrafo. > Dorothy la siguió por muchas de las hermosas habitaciones de su castillo. ``` -
### Multilínea
@@ -98,7 +95,6 @@ Para crear una cita en bloque, agrega un `>` delante de un párrafo. > La bruja le ordenó limpiar las ollas y los calderos, barrer el suelo y mantener el fuego bien alimentado con leña. ``` -
### LaTeX
diff --git a/es/_essentials/navigation.mdx b/es/_essentials/navigation.mdx index ff1dc5b9..4d4b5f57 100644 --- a/es/_essentials/navigation.mdx +++ b/es/_essentials/navigation.mdx @@ -63,7 +63,6 @@ Por ejemplo, para tener una página en `https://yoursite.com/your-folder/your-pa ] ``` -
## Páginas ocultas
diff --git a/es/advanced-scraping-guide.mdx b/es/advanced-scraping-guide.mdx index c87a9e56..b99d26de 100644 --- a/es/advanced-scraping-guide.mdx +++ b/es/advanced-scraping-guide.mdx @@ -242,7 +242,6 @@ En este ejemplo, el scraper: Referencia de la API: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Extracción de JSON mediante formatos
@@ -263,7 +262,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ }' ``` -
## Endpoint /extract
@@ -338,7 +336,6 @@ Devuelve un ID { "id": "1234-5678-9101" } ``` -
### Consultar trabajo de rastreo
@@ -351,7 +348,6 @@ curl -X GET https://api.firecrawl.dev/v2/crawl/1234-5678-9101 \ -H 'Authorization: Bearer fc-TU-API-KEY' ``` -
#### Paginación/URL siguiente
@@ -374,7 +370,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl/params-preview \ }' ``` -
### Opciones del rastreador
@@ -470,7 +465,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl \ }' ``` - @@ -490,7 +484,6 @@ curl -X POST https://api.firecrawl.dev/v2/map \ }' ``` -
### Opciones de mapeo
diff --git a/es/agents/fire-1-extract.mdx b/es/agents/fire-1-extract.mdx index b481bf0f..75fc3224 100644 --- a/es/agents/fire-1-extract.mdx +++ b/es/agents/fire-1-extract.mdx @@ -52,7 +52,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ En este ejemplo, se indica al FIRE-1 (Agente) que avance por las páginas de productos antes de realizar la extracción final. -
### Uso de FIRE-1 con el punto de conexión /extract
@@ -94,7 +93,6 @@ curl -X POST https://api.firecrawl.dev/v1/extract \ Aquí, el agente se asegura de que todos los comentarios estén cargados en la página al hacer clic en el botón «Load More Comments» antes de que comience el proceso de extracción, según el esquema y el prompt proporcionados. **Nota:** El FIRE-1 (Agente) ofrece capacidades potentes, pero puede consumir más créditos según la complejidad de las instrucciones de navegación y la cantidad de páginas con las que interactúe. -
### Conoce FIRE-1: navegación e interacción inteligentes
@@ -126,7 +124,6 @@ Activar FIRE-1 es sencillo. Solo tienes que incluir un objeto `agent` en tu soli *Nota:* El campo `prompt` es obligatorio en las solicitudes de scraping y le indica a FIRE-1 con precisión cómo interactuar con la página web. -
## Ejemplo de uso con el punto de conexión /scrape
@@ -149,7 +146,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ En este escenario, FIRE-1 navega inteligentemente la paginación y recopila todos los productos. -
## Consideraciones
diff --git a/es/agents/fire-1.mdx b/es/agents/fire-1.mdx index 581451bb..f6f40ef9 100644 --- a/es/agents/fire-1.mdx +++ b/es/agents/fire-1.mdx @@ -13,7 +13,6 @@ import ExtractFire1CURL from "/snippets/es/v1/extract/agent-f1/curl.mdx"; FIRE-1 es un agente de IA que potencia las capacidades de scraping de Firecrawl. Puede controlar acciones del navegador y navegar por estructuras web complejas para permitir una extracción de datos más completa, más allá de los métodos tradicionales de scraping. -
### Qué puede hacer FIRE-1:
diff --git a/es/api-reference/endpoint/batch-scrape-delete.mdx b/es/api-reference/endpoint/batch-scrape-delete.mdx index e31cebf7..f22af7a0 100644 --- a/es/api-reference/endpoint/batch-scrape-delete.mdx +++ b/es/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,4 +1,4 @@ --- title: "Cancelar extracción en lote" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/batch-scrape-get-errors.mdx b/es/api-reference/endpoint/batch-scrape-get-errors.mdx index 8ca233a9..d043ac5d 100644 --- a/es/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/es/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,4 +1,4 @@ --- title: "Obtener errores de raspado por lotes" -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/batch-scrape-get.mdx b/es/api-reference/endpoint/batch-scrape-get.mdx index 108f6154..a2d14649 100644 --- a/es/api-reference/endpoint/batch-scrape-get.mdx +++ b/es/api-reference/endpoint/batch-scrape-get.mdx @@ -1,4 +1,4 @@ --- title: 'Obtener el estado de la captura por lotes' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/batch-scrape.mdx b/es/api-reference/endpoint/batch-scrape.mdx index 00ea855c..3ee7a5f3 100644 --- a/es/api-reference/endpoint/batch-scrape.mdx +++ b/es/api-reference/endpoint/batch-scrape.mdx @@ -1,4 +1,4 @@ --- title: 'Raspado en lote' -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/crawl-active.mdx b/es/api-reference/endpoint/crawl-active.mdx index 7b26176d..f1d3236d 100644 --- a/es/api-reference/endpoint/crawl-active.mdx +++ b/es/api-reference/endpoint/crawl-active.mdx @@ -1,4 +1,4 @@ --- title: "Obtener rastreos activos" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/crawl-delete.mdx b/es/api-reference/endpoint/crawl-delete.mdx index fb9fd582..ff3bea38 100644 --- a/es/api-reference/endpoint/crawl-delete.mdx +++ b/es/api-reference/endpoint/crawl-delete.mdx @@ -1,4 +1,4 @@ --- title: "Cancelar rastreo" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/crawl-get-errors.mdx b/es/api-reference/endpoint/crawl-get-errors.mdx index 6ae30080..2264ef97 100644 --- a/es/api-reference/endpoint/crawl-get-errors.mdx +++ b/es/api-reference/endpoint/crawl-get-errors.mdx @@ -1,4 +1,4 @@ --- title: "Obtener errores del rastreo" -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/crawl-get.mdx b/es/api-reference/endpoint/crawl-get.mdx index 5a70b4f9..30e03d34 100644 --- a/es/api-reference/endpoint/crawl-get.mdx +++ b/es/api-reference/endpoint/crawl-get.mdx @@ -1,4 +1,4 @@ --- title: 'Obtener el estado del rastreo' -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/crawl-params-preview.mdx b/es/api-reference/endpoint/crawl-params-preview.mdx index 9114d2b0..dc0889de 100644 --- a/es/api-reference/endpoint/crawl-params-preview.mdx +++ b/es/api-reference/endpoint/crawl-params-preview.mdx @@ -1,6 +1,6 @@ --- title: "Vista previa de parámetros de rastreo" -openapi: 'v2-openapi POST /crawl/params-preview' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /crawl/params-preview' ---
@@ -18,7 +18,6 @@ openapi: 'v2-openapi POST /crawl/params-preview' } ``` -
### Respuesta
diff --git a/es/api-reference/endpoint/crawl-post.mdx b/es/api-reference/endpoint/crawl-post.mdx index 75f49226..e0a48472 100644 --- a/es/api-reference/endpoint/crawl-post.mdx +++ b/es/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "Crawl" -openapi: 'v2-openapi POST /crawl' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -22,7 +22,6 @@ Describe en inglés sencillo qué deseas rastrear: Esto mapeará el prompt a un conjunto de ajustes del rastreador para ejecutar el rastreo. -
### Control mejorado del sitemap
diff --git a/es/api-reference/endpoint/credit-usage-historical.mdx b/es/api-reference/endpoint/credit-usage-historical.mdx index 1ff7a0d5..ee6b8b35 100644 --- a/es/api-reference/endpoint/credit-usage-historical.mdx +++ b/es/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de créditos' -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- Devuelve el uso histórico de créditos mes a mes. El punto de conexión también puede desglosar el uso por clave de API, de forma opcional. \ No newline at end of file diff --git a/es/api-reference/endpoint/credit-usage.mdx b/es/api-reference/endpoint/credit-usage.mdx index 22ccebab..c3905cee 100644 --- a/es/api-reference/endpoint/credit-usage.mdx +++ b/es/api-reference/endpoint/credit-usage.mdx @@ -1,4 +1,4 @@ --- title: "Uso de créditos" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/extract-get.mdx b/es/api-reference/endpoint/extract-get.mdx index 51c0a229..53aa7462 100644 --- a/es/api-reference/endpoint/extract-get.mdx +++ b/es/api-reference/endpoint/extract-get.mdx @@ -1,4 +1,4 @@ --- title: "Obtener el estado de extracción" -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/extract.mdx b/es/api-reference/endpoint/extract.mdx index 27f44fce..5cb1345c 100644 --- a/es/api-reference/endpoint/extract.mdx +++ b/es/api-reference/endpoint/extract.mdx @@ -1,4 +1,4 @@ --- title: "Extraer" -openapi: 'v2-openapi POST /extract' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /extract' --- \ No newline at end of file diff --git a/es/api-reference/endpoint/map.mdx b/es/api-reference/endpoint/map.mdx index 0dca1ee9..01f67807 100644 --- a/es/api-reference/endpoint/map.mdx +++ b/es/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Mapear" -openapi: 'v2-openapi POST /map' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ Tres formas de gestionar los sitemaps: } ``` -
### Cambió el formato de la respuesta
diff --git a/es/api-reference/endpoint/queue-status.mdx b/es/api-reference/endpoint/queue-status.mdx index c0249189..173cfc76 100644 --- a/es/api-reference/endpoint/queue-status.mdx +++ b/es/api-reference/endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "Estado de la cola" -openapi: 'v2-openapi GET /team/queue-status' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/queue-status' --- Métricas sobre la cola de scraping del equipo. \ No newline at end of file diff --git a/es/api-reference/endpoint/scrape.mdx b/es/api-reference/endpoint/scrape.mdx index 2dc6544f..1b09b1bd 100644 --- a/es/api-reference/endpoint/scrape.mdx +++ b/es/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: "Scrape" -openapi: 'v2-openapi POST /scrape' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' ---
diff --git a/es/api-reference/endpoint/search.mdx b/es/api-reference/endpoint/search.mdx index 85d9a3be..5546b5ab 100644 --- a/es/api-reference/endpoint/search.mdx +++ b/es/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Búsqueda" -openapi: 'v2-openapi POST /search' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -20,7 +20,6 @@ Busca en la web, imágenes y noticias al mismo tiempo: } ``` -
### Cambió el formato de la respuesta
@@ -38,7 +37,6 @@ v1: lista plana de resultados. v2: organizado por tipo de origen: } ``` -
### Nuevas funciones
@@ -94,7 +92,6 @@ Ejemplos: `"US"`, `"DE"`, `"FR"`, `"JP"`, `"UK"`, `"CA"`. } ``` -
## Parámetro categories
@@ -117,7 +114,6 @@ Filtra los resultados de búsqueda por categorías específicas usando el parám } ``` -
### Respuesta de categoría
@@ -146,7 +142,6 @@ Cada resultado incluye un campo `category` que indica su procedencia: } ``` - diff --git a/es/api-reference/endpoint/token-usage-historical.mdx b/es/api-reference/endpoint/token-usage-historical.mdx index 467ac906..1eb208f9 100644 --- a/es/api-reference/endpoint/token-usage-historical.mdx +++ b/es/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Uso histórico de tokens" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- Devuelve el uso histórico de tokens por mes. Este endpoint también puede desglosar el uso por clave de API de forma opcional. diff --git a/es/api-reference/endpoint/token-usage.mdx b/es/api-reference/endpoint/token-usage.mdx index 7e37cd63..d534d5b5 100644 --- a/es/api-reference/endpoint/token-usage.mdx +++ b/es/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "Uso de tokens" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- Hemos simplificado la facturación: Extract ahora utiliza créditos, al igual que los demás endpoints. Cada crédito equivale a 15 tokens. El uso de tokens informado ahora incluye el consumo de todos los endpoints. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/batch-scrape-delete.mdx b/es/api-reference/v1-endpoint/batch-scrape-delete.mdx index 9c8f8261..788ca71a 100644 --- a/es/api-reference/v1-endpoint/batch-scrape-delete.mdx +++ b/es/api-reference/v1-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar scrape por lotes' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape-delete) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/batch-scrape-get-errors.mdx b/es/api-reference/v1-endpoint/batch-scrape-get-errors.mdx index 33033620..d98ba67a 100644 --- a/es/api-reference/v1-endpoint/batch-scrape-get-errors.mdx +++ b/es/api-reference/v1-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener errores de scraping por lotes' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape-get-errors) con mejores informes de errores y capacidades de depuración. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/batch-scrape-get.mdx b/es/api-reference/v1-endpoint/batch-scrape-get.mdx index 2a95f783..d392f80c 100644 --- a/es/api-reference/v1-endpoint/batch-scrape-get.mdx +++ b/es/api-reference/v1-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: "Consultar el estado de Batch Scrape" -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape-get) con mejor seguimiento y monitoreo del estado. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/batch-scrape.mdx b/es/api-reference/v1-endpoint/batch-scrape.mdx index 25a067ec..01ad3ff5 100644 --- a/es/api-reference/v1-endpoint/batch-scrape.mdx +++ b/es/api-reference/v1-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Extracción por lotes' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape) con mejor rendimiento y mayor confiabilidad en el procesamiento por lotes. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/crawl-active.mdx b/es/api-reference/v1-endpoint/crawl-active.mdx index 176eccd7..e5243545 100644 --- a/es/api-reference/v1-endpoint/crawl-active.mdx +++ b/es/api-reference/v1-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Rastreos activos' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-active) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/crawl-delete.mdx b/es/api-reference/v1-endpoint/crawl-delete.mdx index 6e11c3b6..a819c46e 100644 --- a/es/api-reference/v1-endpoint/crawl-delete.mdx +++ b/es/api-reference/v1-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar rastreo' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-delete) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/crawl-get-errors.mdx b/es/api-reference/v1-endpoint/crawl-get-errors.mdx index ee5b37c5..cc57266c 100644 --- a/es/api-reference/v1-endpoint/crawl-get-errors.mdx +++ b/es/api-reference/v1-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener errores de rastreo' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Nota: Ya está disponible una nueva [versión v2 de esta API](/es/api-reference/endpoint/crawl-get-errors) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/crawl-get.mdx b/es/api-reference/v1-endpoint/crawl-get.mdx index 9e083c70..dcfa7f56 100644 --- a/es/api-reference/v1-endpoint/crawl-get.mdx +++ b/es/api-reference/v1-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado del rastreo' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Nota: Ya está disponible una nueva [versión v2 de esta API](/es/api-reference/endpoint/crawl-get) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/crawl-post.mdx b/es/api-reference/v1-endpoint/crawl-post.mdx index eae341d4..864f016c 100644 --- a/es/api-reference/v1-endpoint/crawl-post.mdx +++ b/es/api-reference/v1-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-post) con prestaciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/credit-usage-historical.mdx b/es/api-reference/v1-endpoint/credit-usage-historical.mdx index a53464a2..3aa86b5c 100644 --- a/es/api-reference/v1-endpoint/credit-usage-historical.mdx +++ b/es/api-reference/v1-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Uso histórico de créditos" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- Devuelve el uso histórico de créditos mes a mes. El endpoint también puede, opcionalmente, desglosar el uso por clave de API. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/credit-usage.mdx b/es/api-reference/v1-endpoint/credit-usage.mdx index ce9277ea..b3531f4a 100644 --- a/es/api-reference/v1-endpoint/credit-usage.mdx +++ b/es/api-reference/v1-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de créditos' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Nota: Ya está disponible una nueva [versión v2 de esta API](/es/api-reference/endpoint/credit-usage) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/deep-research-get.mdx b/es/api-reference/v1-endpoint/deep-research-get.mdx index 705dff42..0943b25d 100644 --- a/es/api-reference/v1-endpoint/deep-research-get.mdx +++ b/es/api-reference/v1-endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "Investigación profunda" -openapi: "v1-openapi GET /deep-research/{id}" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}" --- \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/deep-research.mdx b/es/api-reference/v1-endpoint/deep-research.mdx index 89d4903d..bf38a312 100644 --- a/es/api-reference/v1-endpoint/deep-research.mdx +++ b/es/api-reference/v1-endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Deep Research" -openapi: "v1-openapi POST /deep-research" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research" --- El punto de conexión Deep Research permite realizar investigación y análisis profundos con IA sobre cualquier tema. Solo tienes que proporcionar una consulta de investigación y Firecrawl explorará la web de forma autónoma, reunirá información relevante y sintetizará los hallazgos en conocimientos integrales. diff --git a/es/api-reference/v1-endpoint/extract-get.mdx b/es/api-reference/v1-endpoint/extract-get.mdx index badc28ad..062ab7ba 100644 --- a/es/api-reference/v1-endpoint/extract-get.mdx +++ b/es/api-reference/v1-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Consultar el estado de la extracción' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/extract-get) con mejoras de funciones y rendimiento. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/extract.mdx b/es/api-reference/v1-endpoint/extract.mdx index 0d3af864..d01dccb0 100644 --- a/es/api-reference/v1-endpoint/extract.mdx +++ b/es/api-reference/v1-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Nota: Ya está disponible una [nueva versión v2 de esta API](/es/api-reference/endpoint/extract) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/llmstxt-get.mdx b/es/api-reference/v1-endpoint/llmstxt-get.mdx index 4a83274d..4f39802c 100644 --- a/es/api-reference/v1-endpoint/llmstxt-get.mdx +++ b/es/api-reference/v1-endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "Estado de LLMs.txt" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Obtén el estado y los resultados de un trabajo de generación de LLMs.txt. Este punto de conexión te permite comprobar si la generación se completó y recuperar el contenido generado. @@ -69,7 +69,6 @@ Si el trabajo de generación falla o no se encuentra, recibirás una respuesta d } ``` -
### Recomendaciones de sondeo
diff --git a/es/api-reference/v1-endpoint/llmstxt.mdx b/es/api-reference/v1-endpoint/llmstxt.mdx index fdb61a4f..33e3aa05 100644 --- a/es/api-reference/v1-endpoint/llmstxt.mdx +++ b/es/api-reference/v1-endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Generar LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- El punto de conexión para generar LLMs.txt crea los archivos LLMs.txt y LLMs-full.txt para cualquier sitio web. Estos archivos ofrecen un formato estructurado y optimizado para LLMs del contenido del sitio, lo que facilita que los modelos de lenguaje comprendan y procesen la información. diff --git a/es/api-reference/v1-endpoint/map.mdx b/es/api-reference/v1-endpoint/map.mdx index cd073bb1..22521d29 100644 --- a/es/api-reference/v1-endpoint/map.mdx +++ b/es/api-reference/v1-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Mapa' -openapi: 'v1-openapi POST /map' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Nota: Ya está disponible una [nueva versión v2 de esta API](/es/api-reference/endpoint/map) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/queue-status.mdx b/es/api-reference/v1-endpoint/queue-status.mdx index 403a9aa8..624dcb05 100644 --- a/es/api-reference/v1-endpoint/queue-status.mdx +++ b/es/api-reference/v1-endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: 'Estado de la cola' -openapi: 'v1-openapi GET /team/queue-status' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/queue-status' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/queue-status) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/scrape.mdx b/es/api-reference/v1-endpoint/scrape.mdx index bbfd4e40..72461111 100644 --- a/es/api-reference/v1-endpoint/scrape.mdx +++ b/es/api-reference/v1-endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/scrape) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/search.mdx b/es/api-reference/v1-endpoint/search.mdx index 882cc806..a64d8843 100644 --- a/es/api-reference/v1-endpoint/search.mdx +++ b/es/api-reference/v1-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/search) con funciones y rendimiento mejorados. diff --git a/es/api-reference/v1-endpoint/token-usage-historical.mdx b/es/api-reference/v1-endpoint/token-usage-historical.mdx index 16567c8f..d5cedea6 100644 --- a/es/api-reference/v1-endpoint/token-usage-historical.mdx +++ b/es/api-reference/v1-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Uso histórico de tokens" -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- Devuelve el uso histórico de tokens mes a mes. El punto de conexión también puede, opcionalmente, desglosar el uso por clave de API. \ No newline at end of file diff --git a/es/api-reference/v1-endpoint/token-usage.mdx b/es/api-reference/v1-endpoint/token-usage.mdx index 9d0d9414..c960051a 100644 --- a/es/api-reference/v1-endpoint/token-usage.mdx +++ b/es/api-reference/v1-endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de tokens' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/token-usage) con funcionalidades y rendimiento mejorados. \ No newline at end of file diff --git a/es/api-reference/v1-openapi.json b/es/api-reference/v1-openapi.json new file mode 100644 index 00000000..b75630a5 --- /dev/null +++ b/es/api-reference/v1-openapi.json @@ -0,0 +1,3656 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "API para interactuar con los servicios de Firecrawl y realizar tareas de scraping y rastreo web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Realiza scraping de una única URL y, opcionalmente, extrae información usando un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL que se va a rastrear" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, se habilitará la no conservación de datos para esta extracción. Para activar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Realiza scraping de varias URL y, opcionalmente, extrae información con un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "La URL que se va a rastrear" + } + }, + "webhook": { + "type": "object", + "description": "Objeto de especificación de webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que se enviará el webhook. Se activará cuando se inicie un scraping por lotes (batch_scrape.started), para cada página extraída (batch_scrape.page) y cuando el scraping por lotes haya finalizado (batch_scrape.completed o batch_scrape.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Encabezados que se envían a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook (por defecto: todos).", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes simultáneos. Este parámetro te permite establecer un límite de concurrencia para este scrape por lotes. Si no se especifica, el scrape por lotes se ajustará al límite de concurrencia de tu equipo." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si se especifican URL no válidas en el array urls, se ignorarán. En lugar de que falle toda la solicitud, se creará un scraping por lotes con las URL válidas restantes y las URL no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si es true, no se conservarán datos de esta extracción por lotes. Para habilitar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado de un trabajo de scraping por lotes", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar una tarea de extracción por lotes", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación exitosa", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Tarea de scraping por lotes no encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de un trabajo de rastreo por lotes", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de una tarea de rastreo", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar un trabajo de rastreo", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación exitosa", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de rastreo", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de un trabajo de rastreo", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear varias URL en función de opciones", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se iniciará el rastreo" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares para el pathname de la URL que excluyen del rastreo las URL que coincidan. Por ejemplo, si configuras `\"excludePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, se excluirán todos los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones regex de rutas de URL que determinan qué URLs se incluyen en el rastreo. Solo las rutas que coincidan con los patrones especificados se incluirán en la respuesta. Por ejemplo, si configuras `\"includePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, solo se incluirán los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDepth": { + "type": "integer", + "description": "Profundidad absoluta máxima de rastreo desde la base de la URL introducida. Básicamente, es el número máximo de barras diagonales (/) que puede contener el pathname de una URL rastreada.", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidad máxima de rastreo basada en el orden de descubrimiento. El sitio raíz y las páginas del mapa del sitio tienen una profundidad de descubrimiento de 0. Por ejemplo, si la configuras en 1 y habilitas ignoreSitemap, solo se rastreará la URL ingresada y todas las URL que estén enlazadas en esa página." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar el sitemap del sitio web durante el rastreo", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "No vuelvas a hacer scraping de la misma ruta con distintos parámetros de consulta (o sin parámetros)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a rastrear. El límite por defecto es 10.000.", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ EN DESUSO: Usa 'crawlEntireDomain' en su lugar. Permite que el rastreador siga enlaces internos a URL hermanas o superiores, no solo a rutas hijas.", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces internos a URLs del mismo nivel o superiores, no solo rutas hijas.\n\nfalse: Solo rastrea URLs más profundas (hijas).\n→ p. ej. /features/feature-1 → /features/feature-1/tips ✅\n→ No seguirá /pricing ni / ❌\n\ntrue: Rastrea cualquier enlace interno, incluyendo del mismo nivel y superiores.\n→ p. ej. /features/feature-1 → /pricing, /, etc. ✅\n\nUsa true para lograr una cobertura interna más amplia, más allá de rutas anidadas.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a sitios web externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a subdominios del dominio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Pausa en segundos entre scrapes. Esto ayuda a respetar los límites de tasa del sitio web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes concurrentes. Este parámetro te permite establecer un límite de concurrencia para este rastreo. Si no se especifica, el rastreo se ajusta al límite de concurrencia de tu equipo." + }, + "webhook": { + "type": "object", + "description": "Un objeto de especificación de un webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que se enviará el webhook. Este se activará cuando se inicie el rastreo (crawl.started), en cada página rastreada (crawl.page) y cuando el rastreo se complete (crawl.completed o crawl.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeceras HTTP que se enviarán a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook (valor predeterminado: todos).", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, no se conservarán datos de este rastreo. Para activar esta función, ponte en contacto con help@firecrawl.dev." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Pago requerido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear varias URL en función de las opciones", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se iniciará el rastreo" + }, + "search": { + "type": "string", + "description": "Consulta de búsqueda que se utilizará para el mapeo. Durante la fase alfa, la parte «inteligente» de la funcionalidad de búsqueda está limitada a 500 resultados. Sin embargo, si map encuentra más resultados, no se impone ningún límite." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar el mapa del sitio web al rastrear.", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "Devuelve únicamente los enlaces encontrados en el mapa del sitio web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdominios del sitio web", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de enlaces que se devolverán", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos. No hay tiempo de espera por defecto." + }, + "location": { + "type": "object", + "description": "Configuración de ubicación de la solicitud. Si se especifica, usará un proxy adecuado si está disponible y emulará la configuración de idioma y zona horaria correspondientes. De forma predeterminada, se usa 'US' si no se especifica.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (por ejemplo, \"US\", \"AU\", \"DE\", \"JP\")", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas y configuraciones regionales preferidos de la solicitud, en orden de prioridad. Por defecto, se usa el idioma de la ubicación especificada. Consulta https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas peticiones", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extrae datos estructurados de páginas web usando LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Las URL de las que se va a extraer datos. Las URL deben estar en formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt que guía el proceso de extracción" + }, + "schema": { + "type": "object", + "description": "Esquema para definir la estructura de los datos extraídos. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Cuando está establecido en true, la extracción utilizará la búsqueda web para encontrar datos adicionales", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Si se establece en true, se ignorarán los archivos sitemap.xml durante el rastreo del sitio web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Si es true, también se escanearán los subdominios de las URL proporcionadas", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Si es `true`, las fuentes utilizadas para extraer los datos se incluirán en la respuesta en la clave `sources`.", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si se especifican URLs no válidas en el array urls, se ignorarán. En lugar de hacer que falle toda la solicitud, se realizará una extracción con las URLs válidas restantes y las URLs no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extracción exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitud no válida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de extracción", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Consultar el estado de una tarea de extracción", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obtener todos los rastreos activos para el equipo autenticado", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "El identificador único de la rastreada" + }, + "teamId": { + "type": "string", + "description": "El ID del equipo al que pertenece el rastreo" + }, + "url": { + "type": "string", + "format": "uri", + "description": "URL de origen del rastreo" + }, + "options": { + "type": "object", + "description": "Opciones del rastreador utilizadas en este rastreo", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "Iniciar una operación de investigación profunda sobre una consulta", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Consulta para investigar" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "Profundidad máxima de iteraciones de investigación" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "Límite de tiempo en segundos" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "Número máximo de URL a analizar" + }, + "analysisPrompt": { + "type": "string", + "description": "El prompt que se utilizará para el análisis final. Útil para formatear el markdown del análisis final de una forma específica." + }, + "systemPrompt": { + "type": "string", + "description": "El prompt de sistema que se usará para el agente de investigación. Útil para orientar al agente de investigación en una dirección concreta." + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "Opciones de salida JSON", + "properties": { + "schema": { + "type": "object", + "description": "El esquema que se utilizará para la salida en formato JSON. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "El prompt del sistema que se debe usar para la salida en formato JSON" + }, + "prompt": { + "type": "string", + "description": "El prompt que se usará para la salida en formato JSON" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Tarea de investigación iniciada correctamente", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tarea de investigación" + } + } + } + } + } + }, + "400": { + "description": "Parámetros de solicitud no válidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID del trabajo de investigación", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado y los resultados de una operación de investigación profunda", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "Se muestra cuando se usa el formato JSON", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página, puede ser una cadena de texto o un array de cadenas" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página, puede ser un string o un array de strings" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de investigación", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obtener los créditos restantes del equipo autenticado", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "Número de créditos restantes del equipo", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "Número de créditos del plan. Esto no incluye créditos por cupones, paquetes de créditos ni créditos de recarga automática.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Fecha de finalización del periodo de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró información sobre el uso de créditos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtén el historial de uso de créditos del equipo autenticado", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el uso histórico de créditos por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del periodo de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API usada durante el período de facturación. null si byApiKey es false (valor predeterminado)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos utilizados en el periodo de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obtener los tokens restantes para el equipo autenticado (solo Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "Cantidad de tokens restantes del equipo", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "Número de tokens incluidos en el plan. No incluye los tokens de cupones.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró información sobre el uso de tokens", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtener el uso histórico de tokens del equipo autenticado (solo Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el historial de uso de tokens por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API utilizada para el período de facturación. null si byApiKey es false (valor predeterminado)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados en el periodo de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "Métricas sobre la cola de scraping de tu equipo", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "Número de trabajos que hay actualmente en tu cola" + }, + "activeJobsInQueue": { + "type": "number", + "description": "Número de trabajos activos en este momento" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "Número de tareas en espera actualmente" + }, + "maxConcurrency": { + "type": "number", + "description": "Número máximo de tareas activas simultáneas según tu plan" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "Marca de tiempo del último trabajo exitoso", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Buscar y, opcionalmente, hacer scraping de los resultados de búsqueda", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Consulta de búsqueda" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados que se devolverán", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "Parámetro de búsqueda temporal. Admite intervalos de tiempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) y rangos de fechas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Parámetro de ubicación para los resultados de búsqueda" + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Excluye de los resultados de búsqueda las URLs que no son válidas para otros endpoints de Firecrawl. Esto ayuda a reducir errores si canalizas datos de la búsqueda hacia otros endpoints de la API de Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "Opciones para extraer resultados de búsqueda", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del resultado de la búsqueda" + }, + "description": { + "type": "string", + "description": "Descripción del resultado de la búsqueda" + }, + "url": { + "type": "string", + "description": "URL del resultado de la búsqueda" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenido en formato Markdown si se solicitó scraping" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenido HTML si se solicita en los formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar si se solicita en los formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Enlaces encontrados si se solicitan en los formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la captura de pantalla si se ha solicitado en formatos. Las capturas de pantalla caducan después de 24 horas y dejan de estar disponibles para su descarga." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página; puede ser una cadena o una matriz de cadenas" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página; puede ser una cadena o una matriz de cadenas" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensaje de advertencia si ocurre algún problema" + } + } + } + } + } + }, + "408": { + "description": "Tiempo de espera de la solicitud excedido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "Generar el archivo LLMs.txt para un sitio web", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL a partir de la cual generar LLMs.txt" + }, + "maxUrls": { + "type": "integer", + "description": "Número máximo de URL a analizar", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "Incluye el texto completo en la respuesta", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "El trabajo de generación de LLMs.txt se ha iniciado correctamente", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tarea de generación de LLMs.txt" + } + } + } + } + } + }, + "400": { + "description": "Parámetros de la solicitud no válidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de generación de LLMs.txt", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado y los resultados de una tarea de generación de LLMs.txt", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "El contenido generado del archivo LLMs.txt" + }, + "llmsfulltxt": { + "type": "string", + "description": "El contenido de texto completo cuando showFullText es true" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Cuándo vence el contenido generado" + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de generación de LLMs.txt", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve únicamente el contenido principal de la página, excluyendo encabezados, elementos de navegación, pies de página, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se deben incluir en la salida." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se excluirán de la salida." + }, + "maxAge": { + "type": "integer", + "description": "Devuelve una versión en caché de la página si su antigüedad es menor que este valor, en milisegundos. Si la versión en caché de la página es más antigua que este valor, la página se volverá a scrapear. Si no necesitas datos extremadamente recientes, activar esta opción puede acelerar tus procesos de scraping hasta un 500 %. El valor predeterminado es 0, lo que desactiva la caché.", + "default": 0 + }, + "headers": { + "type": "object", + "description": "Cabeceras que se enviarán con la solicitud. Pueden usarse para enviar cookies, user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Especifica un retraso, en milisegundos, antes de obtener el contenido, permitiendo que la página tenga tiempo suficiente para cargarse.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Configúralo en `true` si quieres emular el scraping desde un dispositivo móvil. Es útil para probar páginas responsive y tomar capturas de pantalla en dispositivos móviles.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Omitir la verificación del certificado TLS al realizar solicitudes", + "default": false + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera de la solicitud en milisegundos", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "Controla cómo se procesan los archivos PDF durante el scraping. Cuando es true, el contenido del PDF se extrae y se convierte al formato Markdown, y la facturación se basa en el número de páginas (1 crédito por página). Cuando es false, el archivo PDF se devuelve codificado en base64 con una tarifa plana total de 1 crédito.", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "Objeto de opciones JSON", + "properties": { + "schema": { + "type": "object", + "description": "El esquema que se utilizará para la extracción (opcional). Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "El prompt del sistema que se usará para la extracción (opcional)" + }, + "prompt": { + "type": "string", + "description": "El prompt que se utilizará para la extracción sin esquema (opcional)" + } + } + }, + "actions": { + "type": "array", + "description": "Acciones que se ejecutarán en la página antes de extraer el contenido", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Espera una cantidad de milisegundos especificada" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milisegundos que se debe esperar" + }, + "selector": { + "type": "string", + "description": "Selector de búsqueda para encontrar el elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Haz una captura de pantalla. Los enlaces estarán en el array `actions.screenshots` de la respuesta." + }, + "fullPage": { + "type": "boolean", + "description": "Indica si se debe capturar una captura de pantalla de toda la página o solo del viewport actual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La calidad de la captura de pantalla, de 1 a 100; 100 es la máxima calidad." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Haz clic en un elemento" + }, + "selector": { + "type": "string", + "description": "Selector de consulta para buscar el elemento por", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Hace clic en todos los elementos que coinciden con el selector, no solo en el primero. No genera un error si ningún elemento coincide con el selector.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Escribe texto en un campo de entrada, área de texto o elemento contenteditable. Nota: primero debes poner el foco en el elemento usando una acción de «clic» antes de escribir. El texto se tecleará carácter por carácter para simular la entrada por teclado." + }, + "text": { + "type": "string", + "description": "Texto a escribir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pulsa una tecla en esta página. Consulta https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para ver los códigos de teclado.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pulsa una tecla en la página" + }, + "key": { + "type": "string", + "description": "Tecla a pulsar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Desplazar la página o un elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Dirección de desplazamiento", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Selector (query selector) del elemento que se desplazará", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrae el contenido de la página actual y devuelve la URL y el HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Ejecutar código JavaScript en la página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ejecutar", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Genera un PDF de la página actual. El PDF se devolverá en el array `actions.pdfs` de la respuesta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "El tamaño de la página del PDF resultante", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Indica si se debe generar el PDF en orientación horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "El factor de escala del PDF resultante", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configuración de ubicación de la solicitud. Cuando se especifique, usará un proxy adecuado si está disponible y emulará la configuración de idioma y zona horaria correspondientes. Si no se especifica, el valor predeterminado es 'US'.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (por ejemplo, «US», «AU», «DE», «JP»)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas y configuraciones regionales preferidos para la solicitud, en orden de prioridad. De forma predeterminada, se usa el idioma de la ubicación especificada. Más información en https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Elimina todas las imágenes en formato base64 de la salida, que pueden hacerla excesivamente larga. El texto alternativo de la imagen se conserva en la salida, pero la URL se reemplaza por un marcador de posición.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita el bloqueo de anuncios y ventanas emergentes de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica el tipo de proxy que se va a usar.\n\n - **basic**: Proxies para hacer scraping de sitios sin o con soluciones anti-bot básicas. Rápido y suele funcionar.\n - **stealth**: Proxies stealth para hacer scraping de sitios con soluciones anti-bot avanzadas. Más lento, pero más fiable en ciertos sitios. Cuesta hasta 5 créditos por solicitud.\n - **auto**: Firecrawl reintentará automáticamente el scraping con proxies stealth si el proxy basic falla. Si el reintento con stealth tiene éxito, se cobrarán 5 créditos por el scraping. Si el primer intento con basic tiene éxito, solo se cobrará el costo normal.\n\nSi no especificas un proxy, Firecrawl usará basic de forma predeterminada." + }, + "storeInCache": { + "type": "boolean", + "description": "Si es true, la página se almacenará en el índice y la caché de Firecrawl. Establecerlo en false es útil si tu actividad de scraping puede implicar problemas de protección de datos. El uso de algunos parámetros asociados con scraping sensible (acciones, headers) hará que este parámetro tenga que ser false.", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "Formatos que se incluirán en el resultado.", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "Opciones de seguimiento de cambios (Beta). Solo aplicable cuando 'changeTracking' está incluido en los formatos. El formato 'markdown' también debe especificarse al usar el seguimiento de cambios.", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "El modo que se utilizará para el seguimiento de cambios. 'git-diff' proporciona un diff detallado y 'json' compara los datos JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema para la extracción en modo `json`. Define la estructura de los datos que se van a extraer y comparar. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt que se usará para el seguimiento de cambios cuando se utilice el modo «json». Si no se especifica, se utilizará el prompt predeterminado." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Etiqueta que se usará para el seguimiento de cambios. Las etiquetas pueden separar el historial de seguimiento de cambios en «ramas» independientes, donde el seguimiento de cambios con una etiqueta específica solo se comparará con extracciones (scrapes) realizadas con la misma etiqueta. Si no se proporciona, se usará la etiqueta predeterminada (null)." + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `html` se encuentra en `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar de la página si `rawHtml` se incluye en `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `screenshot` está incluido en `formats`. Las capturas de pantalla caducan después de 24 horas y ya no se pueden descargar." + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces en la página si `links` está incluido en `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados de las acciones especificadas en el parámetro `actions`. Solo se incluye si se proporcionó el parámetro `actions` en la solicitud", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs de las capturas de pantalla, en el mismo orden que las acciones de captura de pantalla proporcionadas. Las capturas de pantalla caducan después de 24 horas y dejan de estar disponibles para su descarga.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extrae los contenidos en el mismo orden que las acciones de scrape proporcionadas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores devueltos por JavaScript, en el mismo orden que las acciones executeJavascript proporcionadas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "Archivos PDF generados, en el mismo orden que las acciones de PDF proporcionadas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palabras clave extraídas de la página; puede ser una cadena o un array de cadenas" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Idiomas alternativos para la página" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Se muestra cuando se utiliza LLM Extraction. Datos extraídos de la página siguiendo el esquema definido.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Puede mostrarse al usar la extracción con LLM. El mensaje de advertencia te avisará de cualquier problema en la extracción." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Información de seguimiento de cambios cuando `changeTracking` está incluido en `formats`. Solo se muestra cuando se solicita el formato `changeTracking`.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "La marca de tiempo del rastreo anterior con la que se compara la página actual. Nulo si no existe un rastreo anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "El resultado de la comparación entre las dos versiones de la página. \"new\" indica que esta página no existía antes, \"same\" indica que el contenido no ha cambiado, \"changed\" indica que el contenido ha cambiado y \"removed\" indica que la página se eliminó." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilidad de la página o URL actual. ‘visible’ significa que la URL se encontró mediante una ruta orgánica (enlaces o mapa del sitio), ‘hidden’ significa que la URL se encontró usando la memoria de rastreos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff al estilo Git de los cambios al usar el modo 'git-diff'. Solo se muestra cuando el modo está configurado en 'git-diff'." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados de comparación en formato JSON al usar el modo `json`. Solo está presente cuando el modo se establece en `json`. Esto generará una lista de todas las claves y sus valores de las extracciones `previous` y `current` según el tipo definido en el `schema`. Ejemplo [aquí](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del rastreo. Puede ser `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas que se intentó rastrear." + }, + "completed": { + "type": "integer", + "description": "Número de páginas que se han rastreado correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "El número de créditos usados en el rastreo." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y hora en que expirará el rastreo." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para obtener los siguientes 10 MB de datos. Se devuelve si el rastreo no se ha completado o si la respuesta supera los 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos del rastreo.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `includeHtml` es `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces de la página si `includeLinks` es verdadero" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página, puede ser una cadena o un array de cadenas" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página; puede ser una cadena de texto o un array de cadenas de texto" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído de la página; puede ser una cadena o un array de cadenas" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palabras clave extraídas de la página, pueden ser una cadena o un array de cadenas" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Idiomas alternativos para la página" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Otros metadatos extraídos del HTML; pueden ser una cadena o un array de cadenas" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Tareas de scraping con errores y detalles asociados", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Marca de tiempo ISO del error" + }, + "url": { + "type": "string", + "description": "URL extraída" + }, + "error": { + "type": "string", + "description": "Mensaje de error" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs que se intentaron rastrear pero fueron bloqueadas por robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del scraping por lotes. Puede ser `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "Número total de páginas para las que se intentó extraer contenido." + }, + "completed": { + "type": "integer", + "description": "El número de páginas que se han extraído correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "Número de créditos utilizados para el scraping por lotes." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y hora en que expirará el scraping por lotes." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para obtener los siguientes 10 MB de datos. Se devuelve si el scrape por lotes no se ha completado o si la respuesta es superior a 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos del scraping por lotes.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido en la página si `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces de la página si `includeLinks` es `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página, puede ser una cadena de texto o un array de cadenas de texto" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página; puede ser una cadena o un array de cadenas" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído de la página; puede ser una cadena o un array de cadenas" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palabras clave extraídas de la página, pueden ser una cadena o un array de cadenas" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Configuraciones de idioma y región alternativas para la página" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Otros metadatos extraídos del HTML, pueden ser una cadena o un array de cadenas" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contendrá las URLs no válidas que se especificaron en la solicitud. Si no hubo URLs no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, será un array que contiene las URL no válidas especificadas en la solicitud. Si no hay URL no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "El estado actual del trabajo de extracción" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/es/api-reference/v2-openapi.json b/es/api-reference/v2-openapi.json new file mode 100644 index 00000000..08b335a3 --- /dev/null +++ b/es/api-reference/v2-openapi.json @@ -0,0 +1,3814 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "API para interactuar con los servicios de Firecrawl y realizar tareas de scraping y rastreo web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Extraer datos de una sola URL y, opcionalmente, extraer información con un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL que se va a scrapear" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, se habilitará la no retención de datos para este scraping. Para activar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Scrapear varias URL y, opcionalmente, extraer información mediante un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "La URL que se va a extraer" + } + }, + "webhook": { + "type": "object", + "description": "Un objeto de especificación de un webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que se enviará el webhook. Se activará cuando se inicie un scraping por lotes (batch_scrape.started), en cada página extraída (batch_scrape.page) y cuando el scraping por lotes se complete (batch_scrape.completed o batch_scrape.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Encabezados que se enviarán a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook (valor predeterminado: todos).", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes simultáneos. Este parámetro te permite establecer un límite de concurrencia para este scrape por lotes. Si no se especifica, el scrape por lotes usa el límite de concurrencia definido para tu equipo." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si se especifican URLs no válidas en el array urls, se ignorarán. En lugar de hacer que falle toda la solicitud, se creará un scraping por lotes con las URLs válidas restantes y las URLs no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si es true, se desactivará la retención de datos para este scraping por lotes. Para habilitar esta función, comunícate con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El identificador del trabajo de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de un trabajo de scraping por lotes", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar un trabajo de rastreo por lotes", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación completada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de scraping por lotes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de un trabajo de scraping por lotes", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de un trabajo de rastreo", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar un proceso de rastreo", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación completada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de rastreo", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID del trabajo de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de una tarea de rastreo", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear varias URL en función de las opciones", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se iniciará el rastreo" + }, + "prompt": { + "type": "string", + "description": "Un prompt que se usa para generar las opciones del crawler (todos los parámetros que se indican a continuación) a partir de lenguaje natural. Los parámetros establecidos explícitamente tendrán prioridad sobre los equivalentes generados." + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares para las rutas (pathname) de URL que excluyen del rastreo las URLs que coincidan con ellos. Por ejemplo, si configuras `\"excludePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, se excluirán todos los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares para rutas de URL (pathname) que se usan para incluir URLs coincidentes en el rastreo. Solo las rutas que coincidan con los patrones especificados se incluirán en la respuesta. Por ejemplo, si configuras `\"includePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, solo se incluirán los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidad máxima de rastreo basada en el orden de descubrimiento. El sitio raíz y las páginas incluidas en el sitemap tienen una profundidad de descubrimiento de 0. Por ejemplo, si la estableces en 1 y configuras `sitemap: 'skip'`, solo se rastreará la URL introducida y todas las URL que estén enlazadas en esa página." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Modo sitemap al rastrear. Si lo estableces en “skip”, el rastreador ignorará el sitemap del sitio web y solo rastreará la URL proporcionada y descubrirá páginas a partir de ahí.", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "No vuelvas a scrapear la misma ruta con distintos parámetros de consulta (o sin parámetros)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a rastrear. El límite por defecto es 10.000.", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que el crawler siga enlaces internos a URLs hermanas o padre, no solo rutas hijas.\n\nfalse: Solo rastrea URLs más profundas (hijas).\n→ p. ej. /features/feature-1 → /features/feature-1/tips ✅\n→ No seguirá /pricing ni / ❌\n\ntrue: Rastrea cualquier enlace interno, incluidos hermanos y padres.\n→ p. ej. /features/feature-1 → /pricing, /, etc. ✅\n\nUsa true para lograr una cobertura interna más amplia, más allá de las rutas anidadas.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a sitios web externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a subdominios del dominio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalo en segundos entre scrapes. Esto ayuda a respetar los límites de velocidad de los sitios web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes simultáneos. Este parámetro te permite establecer un límite de concurrencia para este rastreo. Si no se especifica, el rastreo respeta el límite de concurrencia de tu equipo." + }, + "webhook": { + "type": "object", + "description": "Un objeto de especificación de webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que se enviará el webhook. Se activará al iniciarse el rastreo (crawl.started), en cada página rastreada (crawl.page) y cuando el rastreo se complete (crawl.completed o crawl.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeceras que se enviarán a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook (valor predeterminado: todos).", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, se desactivará la retención de datos para este rastreo. Para habilitar esta función, póngase en contacto con help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/params-preview": { + "post": { + "summary": "Vista previa de los parámetros de rastreo generados a partir de una instrucción en lenguaje natural", + "operationId": "crawlParamsPreview", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL a rastrear" + }, + "prompt": { + "type": "string", + "maxLength": 10000, + "description": "Prompt en lenguaje natural que describe qué quieres rastrear" + } + }, + "required": [ + "url", + "prompt" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria con parámetros de rastreo generados", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL que se va a rastrear" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de URL a incluir" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de URL para excluir" + }, + "maxDepth": { + "type": "integer", + "description": "Profundidad máxima de rastreo" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidad máxima de exploración" + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Indica si se debe rastrear todo el dominio" + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Si se permiten enlaces externos" + }, + "allowSubdomains": { + "type": "boolean", + "description": "Si se permiten subdominios" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Estrategia de manejo de sitemaps" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ignorar los parámetros de consulta" + }, + "deduplicateSimilarURLs": { + "type": "boolean", + "description": "Si se deben eliminar las URL similares duplicadas" + }, + "delay": { + "type": "number", + "description": "Intervalo entre solicitudes en milisegundos" + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a rastrear" + } + } + } + } + } + } + } + }, + "400": { + "description": "Solicitud incorrecta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid request parameters" + } + } + } + } + } + }, + "401": { + "description": "No autorizado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Unauthorized" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Failed to process natural language prompt" + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear varias URL en función de las opciones", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que comenzar el rastreo" + }, + "search": { + "type": "string", + "description": "Especifica una consulta de búsqueda para ordenar los resultados según su relevancia. Ejemplo: \"blog\" devolverá las URL que contengan la palabra \"blog\" en la URL, ordenadas por relevancia." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "Modo de uso del sitemap al mapear. Si lo configuras en `skip`, el sitemap no se usará para encontrar URL. Si lo configuras en `only`, solo se devolverán las URL que estén en el sitemap. De forma predeterminada (`include`), el sitemap y otros métodos se usarán conjuntamente para encontrar URL.", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdominios del sitio web", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "No devuelvas direcciones URL con parámetros de consulta", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de enlaces que se devolverán", + "default": 5000, + "maximum": 100000 + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos. De forma predeterminada, no hay tiempo de espera." + }, + "location": { + "type": "object", + "description": "Configuración de ubicación de la solicitud. Cuando se especifica, se utilizará un proxy adecuado si está disponible y se emularán la configuración de idioma y la zona horaria correspondientes. De manera predeterminada se usa 'US' si no se especifica.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (p. ej., «US», «AU», «DE», «JP»)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas y configuraciones regionales preferidos para la solicitud, en orden de prioridad. De forma predeterminada, se utiliza el idioma de la ubicación especificada. Consulta https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extrae datos estructurados de páginas web con LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Las URL de las que se extraerán datos. Deben estar en formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt para orientar el proceso de extracción" + }, + "schema": { + "type": "object", + "description": "Esquema que define la estructura de los datos extraídos. Debe cumplir con [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Si es true, la extracción utilizará la búsqueda web para encontrar datos adicionales", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Si es true, se ignorarán los archivos sitemap.xml durante el escaneo del sitio web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Si se establece en true, también se escanearán los subdominios de las URL proporcionadas", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Cuando se establece en `true`, las fuentes utilizadas para extraer los datos se incluirán en la respuesta bajo la clave `sources`.", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si se especifican URLs no válidas en el array urls, se ignorarán. En lugar de provocar el fallo de toda la solicitud, se realizará una extracción con las URLs válidas restantes, y las URLs no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extracción exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitud no válida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de extracción", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado de un trabajo de extracción", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obtener todos los rastreos activos del equipo autenticado", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "El identificador único del rastreo" + }, + "teamId": { + "type": "string", + "description": "ID del equipo propietario del rastreo" + }, + "url": { + "type": "string", + "format": "uri", + "description": "La URL de inicio del rastreo" + }, + "options": { + "type": "object", + "description": "Opciones del rastreador utilizadas en este rastreo", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obtener los créditos restantes para el equipo autenticado", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "Créditos restantes del equipo", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "Número de créditos del plan. Esto no incluye créditos provenientes de cupones, paquetes de créditos ni créditos de recarga automática.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación. null si utilizas el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Fecha de final del período de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró información sobre el uso de créditos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtén el historial de uso de créditos del equipo autenticado", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el historial de uso de créditos por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API usada en el período de facturación. null si byApiKey es false (predeterminado)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos consumidos durante el periodo de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obtener los tokens restantes para el equipo autenticado (solo Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "Número de tokens restantes del equipo", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "Número de tokens del plan. No incluye los tokens de cupones.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación. null si utilizas el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación. null si se usa el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró información sobre el uso de tokens", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtén el historial de uso de tokens para el equipo autenticado (solo Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el historial de uso de tokens por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de final del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API usada durante el periodo de facturación. null si byApiKey es false (valor predeterminado)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados en el período de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "Métricas de la cola de rastreo de tu equipo", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "Número de trabajos en tu cola actualmente" + }, + "activeJobsInQueue": { + "type": "number", + "description": "Número de trabajos activos actualmente" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "Número de trabajos en espera" + }, + "maxConcurrency": { + "type": "number", + "description": "Número máximo de trabajos activos simultáneos según tu plan" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "Marca de tiempo del trabajo exitoso más reciente", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Buscar y, opcionalmente, scrapear los resultados de búsqueda", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Consulta de búsqueda" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados que se devolverán", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Parámetro de búsqueda por tiempo. Admite rangos de tiempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) y rangos de fechas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Parámetro de ubicación para los resultados de búsqueda" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Fuentes que se van a buscar. Determinan los arrays disponibles en la respuesta.", + "default": [ + "web" + ] + }, + "categories": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "GitHub", + "properties": { + "type": { + "type": "string", + "enum": [ + "github" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Research", + "properties": { + "type": { + "type": "string", + "enum": [ + "research" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Categorías para filtrar los resultados" + }, + "tbs": { + "type": "string", + "description": "Parámetro de búsqueda temporal. Admite intervalos de tiempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) y rangos de fechas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parámetro de ubicación para los resultados de la búsqueda (por ejemplo, `San Francisco,California,United States`). Para obtener mejores resultados, configura tanto este parámetro como el parámetro `country`." + }, + "country": { + "type": "string", + "description": "Código de país ISO para la segmentación geográfica de los resultados de búsqueda (por ejemplo, `US`). Para obtener mejores resultados, establece tanto este parámetro como el parámetro `location`.", + "default": "US" + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Excluye de los resultados de búsqueda las URLs que no son válidas para otros endpoints de Firecrawl. Esto ayuda a reducir errores si estás enviando datos desde la búsqueda a otros endpoints de la API de Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "Opciones para scrapear resultados de búsqueda", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del resultado de la búsqueda" + }, + "description": { + "type": "string", + "description": "Descripción del resultado de la búsqueda" + }, + "url": { + "type": "string", + "description": "URL del resultado de la búsqueda" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenido en formato Markdown si se solicitó scraping" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenido HTML si se solicita en los formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar cuando se solicite en formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Enlaces encontrados si se solicitan en los formatos correspondientes" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la captura de pantalla si se solicita en los formatos. Las capturas de pantalla caducan después de 24 horas y después ya no se pueden descargar." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del resultado de la búsqueda" + }, + "imageUrl": { + "type": "string", + "description": "URL de la imagen" + }, + "imageWidth": { + "type": "integer", + "description": "Ancho de la imagen" + }, + "imageHeight": { + "type": "integer", + "description": "Altura de la imagen" + }, + "url": { + "type": "string", + "description": "URL del resultado de la búsqueda" + }, + "position": { + "type": "integer", + "description": "Posición del resultado de la búsqueda" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del artículo" + }, + "snippet": { + "type": "string", + "description": "Extracto del artículo" + }, + "url": { + "type": "string", + "description": "URL del artículo" + }, + "date": { + "type": "string", + "description": "Fecha del artículo" + }, + "imageUrl": { + "type": "string", + "description": "URL de la imagen del artículo" + }, + "position": { + "type": "integer", + "description": "Posición del artículo" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenido en Markdown si se solicitó scraping" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenido HTML si se solicita en los formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar si se solicita en los formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Enlaces encontrados si se solicitan en los formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la captura de pantalla si se solicita en los formatos. Las capturas de pantalla caducan después de 24 horas y dejan de estar disponibles para su descarga." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "Los resultados de la búsqueda. Los arrays disponibles dependerán de las fuentes que especifiques en la solicitud. De forma predeterminada, se devolverá el array `web`." + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensaje de advertencia si ocurre algún problema" + } + } + } + } + } + }, + "408": { + "description": "Tiempo de espera de la solicitud agotado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "Indica si se debe realizar una captura de pantalla de la página completa o solo del área visible actual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La calidad de la captura de pantalla, del 1 al 100. 100 es la calidad más alta." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "El ancho del viewport en píxeles" + }, + "height": { + "type": "integer", + "description": "Altura del viewport en píxeles" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "El esquema que se utilizará para la salida en formato JSON. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "El prompt que se utilizará para la salida en formato JSON" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "El modo que se usará para el seguimiento de cambios. 'git-diff' proporciona un diff detallado y 'json' compara los datos JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema JSON para la extracción cuando se usa el modo `json`. Define la estructura de los datos que se van a extraer y comparar. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt que se usará para el seguimiento de cambios cuando se utilice el modo `json`. Si no se proporciona, se usará el prompt predeterminado." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Etiqueta que se utilizará para el seguimiento de cambios. Las etiquetas pueden separar el historial de seguimiento de cambios en “ramas” independientes, donde el seguimiento de cambios con una etiqueta específica solo se comparará con extracciones realizadas con la misma etiqueta. Si no se proporciona, se usará la etiqueta predeterminada (null)." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Branding", + "properties": { + "type": { + "type": "string", + "enum": [ + "branding" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Formatos de salida que se incluirán en la respuesta. Puedes especificar uno o varios formatos, ya sea como cadenas (p. ej., `'markdown'`) o como objetos con opciones adicionales (p. ej., `{ type: 'json', schema: {...} }`). Algunos formatos requieren configurar opciones específicas. Ejemplo: `['markdown', { type: 'json', schema: {...} }]`.", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve solo el contenido principal de la página, sin incluir encabezados, navegación, pies de página, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se incluirán en la salida." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se excluirán de la salida." + }, + "maxAge": { + "type": "integer", + "description": "Devuelve una versión en caché de la página si su antigüedad es menor que este valor en milisegundos. Si la versión en caché de la página es más antigua que este valor, se hará scraping de la página. Si no necesitas datos extremadamente recientes, habilitar esto puede acelerar tus procesos de scraping hasta un 500 %. El valor predeterminado es de 2 días.", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "Encabezados que se enviarán en la solicitud. Pueden usarse para enviar cookies, user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Especifica un tiempo de espera en milisegundos antes de obtener el contenido, dando a la página tiempo suficiente para cargarse. Este tiempo de espera es adicional a la función de espera inteligente de Firecrawl.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Defínelo en true si quieres emular el scraping desde un dispositivo móvil. Útil para probar páginas responsive y tomar capturas de pantalla móviles.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Omitir la verificación de certificados TLS al realizar solicitudes", + "default": true + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera de la solicitud en milisegundos." + }, + "parsers": { + "type": "array", + "description": "Controla cómo se procesan los archivos durante el scraping. Cuando se incluye \"pdf\" (valor por defecto), el contenido del PDF se extrae y se convierte al formato Markdown, y la facturación se basa en el número de páginas (1 crédito por página). Cuando se pasa un array vacío, el archivo PDF se devuelve codificado en base64 con una tarifa fija de 1 crédito en total.", + "items": { + "oneOf": [ + { + "type": "string", + "enum": [ + "pdf" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "maxPages": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "description": "Número máximo de páginas a procesar del PDF. Debe ser un entero positivo de hasta 10 000." + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "Acciones que se realizarán en la página antes de extraer el contenido", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Espera durante el número de milisegundos especificado" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milisegundos de espera" + }, + "selector": { + "type": "string", + "description": "Selector de consulta para localizar el elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Realiza una captura de pantalla. Los enlaces estarán en la matriz `actions.screenshots` de la respuesta." + }, + "fullPage": { + "type": "boolean", + "description": "Indica si se debe crear una captura de pantalla de toda la página o solo del viewport actual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La calidad de la captura de pantalla, de 1 a 100. 100 es la máxima calidad." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "El ancho del viewport en píxeles" + }, + "height": { + "type": "integer", + "description": "Altura del viewport en píxeles" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Haz clic en un elemento" + }, + "selector": { + "type": "string", + "description": "Selector de consulta para localizar el elemento mediante", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Hace clic en todos los elementos que coinciden con el selector, no solo en el primero. No genera un error si ningún elemento coincide con el selector.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Escribe texto en un campo de texto, área de texto o elemento contenteditable. Nota: primero debes enfocar el elemento usando una acción de “hacer clic” antes de escribir. El texto se escribirá carácter por carácter para simular la entrada por teclado." + }, + "text": { + "type": "string", + "description": "Texto a teclear", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pulsa una tecla en la página. Consulta https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para obtener los códigos de teclas.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pulsa una tecla en la página" + }, + "key": { + "type": "string", + "description": "Tecla que hay que pulsar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Desplazar la página o un elemento concreto" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sentido de desplazamiento", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Selector del elemento al que se hará scroll", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrae el contenido de la página actual y devuelve la URL y el HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Ejecutar código JavaScript en la página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ejecutar", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Genera un PDF de la página actual. El PDF se devolverá en el array `actions.pdfs` de la respuesta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "El tamaño de la página del PDF resultante", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Indica si se debe generar el PDF en orientación horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "El factor de escala del PDF resultante", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configuración de ubicación para la solicitud. Cuando se especifica, se utilizará un proxy adecuado si está disponible y se emularán la configuración de idioma y la zona horaria correspondientes. De manera predeterminada será \"US\" si no se especifica.", + "properties": { + "country": { + "type": "string", + "description": "Código de país alfa-2 según ISO 3166-1 (p. ej., 'US', 'AU', 'DE', 'JP')", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas y configuraciones regionales preferidos para la solicitud, en orden de prioridad. De forma predeterminada, se utiliza el idioma de la ubicación especificada. Consulta https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Elimina todas las imágenes codificadas en base64 de la salida, que pueden ser excesivamente largas. El texto alternativo (alt) de la imagen se mantiene en la salida, pero la URL se reemplaza por un marcador de posición.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita el bloqueo de anuncios y de ventanas emergentes de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica el tipo de proxy que se va a usar.\n\n - **basic**: Proxies para hacer scraping de sitios con soluciones anti‑bot inexistentes o básicas. Son rápidos y suelen funcionar.\n - **stealth**: Proxies stealth para hacer scraping de sitios con soluciones anti‑bot avanzadas. Son más lentos, pero más fiables en ciertos sitios. Pueden costar hasta 5 créditos por petición.\n - **auto**: Firecrawl reintentará automáticamente el scraping con proxies stealth si el proxy basic falla. Si el reintento con stealth tiene éxito, se cobrarán 5 créditos por el scraping. Si el primer intento con basic tiene éxito, solo se cobrará el coste normal.\n\nSi no especificas un proxy, Firecrawl usará auto por defecto.", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "Si es true, la página se almacenará en el índice y la caché de Firecrawl. Establecerlo en false es útil si tu actividad de scraping puede plantear problemas de protección de datos. Usar algunos parámetros asociados con scraping de datos sensibles (acciones, headers) forzará que este parámetro sea false.", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "Resumen de la página si `summary` se incluye en `formats`" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `html` se incluye en `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar de la página si `rawHtml` se incluye en `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `screenshot` está incluido en `formats`. Las capturas de pantalla caducan después de 24 horas y ya no podrán descargarse." + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces de la página si `links` está incluido en `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados de las acciones especificadas en el parámetro `actions`. Solo aparece si se proporcionó el parámetro `actions` en la solicitud", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs de las capturas de pantalla, en el mismo orden que las acciones de captura de pantalla indicadas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extrae el contenido en el mismo orden que las acciones de scraping proporcionadas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores de retorno de JavaScript, en el mismo orden que las acciones de executeJavascript proporcionadas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "Archivos PDF generados en el mismo orden que las acciones de PDF proporcionadas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página, puede ser una cadena de texto o un array de cadenas de texto" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página, puede ser una cadena de texto o un array de cadenas" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído de la página; puede ser una cadena de texto o un array de cadenas de texto" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palabras clave extraídas de la página; puede ser una cadena o un array de cadenas" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Locales alternativos de la página" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Otros metadatos extraídos del HTML, pueden ser una cadena o un array de cadenas" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Puede mostrarse al usar LLM Extraction. El mensaje de advertencia te informará de cualquier problema con la extracción." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Información de seguimiento de cambios cuando `changeTracking` está en `formats`. Solo está presente cuando se solicita el formato `changeTracking`.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "La marca de tiempo del rastreo anterior con la que se compara la página actual. Es null si no existe un rastreo anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "El resultado de la comparación entre las dos versiones de la página. \"new\" indica que esta página no existía antes, \"same\" indica que el contenido no ha cambiado, \"changed\" indica que el contenido ha cambiado y \"removed\" indica que la página fue eliminada." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilidad de la página o URL actual. \"visible\" significa que la URL se descubrió por una ruta orgánica (enlaces o sitemap), y \"hidden\" significa que la URL se descubrió a partir de la memoria de rastreos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff de los cambios al estilo Git cuando se usa el modo `git-diff`. Solo está presente cuando el modo está configurado en `git-diff`." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados de comparación en JSON cuando se usa el modo `json`. Solo aparece cuando el modo está configurado en `json`. Genera una lista de todas las claves y sus valores de los scrapes `previous` y `current`, según el tipo definido en el `schema`. Ejemplo [aquí](/features/change-tracking)" + } + } + }, + "branding": { + "type": "object", + "nullable": true, + "description": "Información de marca extraída de la página si `branding` está incluido en `formatos`. Incluye colores, fuentes, tipografía, espaciado, componentes y más." + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del rastreo. Puede tomar los valores `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas que se intentó rastrear." + }, + "completed": { + "type": "integer", + "description": "El número de páginas que se han rastreado con éxito." + }, + "creditsUsed": { + "type": "integer", + "description": "El número de créditos utilizados para el rastreo." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y la hora en que expirará el rastreo." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para obtener los siguientes 10 MB de datos. Se devuelve si el rastreo aún no ha finalizado o si la respuesta supera los 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos del rastreo.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces de la página si `includeLinks` es true" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página, puede ser una cadena de texto o un array de cadenas" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página; puede ser una cadena de texto o un array de cadenas" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído de la página, puede ser una cadena o una matriz de cadenas" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palabras clave extraídas de la página, pueden ser una cadena o un array de cadenas" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Configuraciones regionales alternativas de la página" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Tareas de scraping con errores y detalles de los errores", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Marca de tiempo ISO de la falla" + }, + "url": { + "type": "string", + "description": "URL procesada" + }, + "error": { + "type": "string", + "description": "Mensaje de error" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URL que se intentó scrapear pero fueron bloqueadas por robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del proceso de scraping por lotes. Puede ser `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas de las que se intentó hacer scraping." + }, + "completed": { + "type": "integer", + "description": "El número de páginas que se han raspado correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "Número de créditos utilizados para el scraping por lotes." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y hora en que expirará el proceso de scraping por lotes." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para obtener los siguientes 10 MB de datos. Se devuelve si la extracción por lotes no ha finalizado o si la respuesta es mayor de 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos de la extracción por lotes.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces en la página si `includeLinks` es verdadero" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es verdadero" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído de la página; puede ser una cadena o un array de cadenas" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descripción extraída de la página; puede ser una cadena o un array de cadenas" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído de la página, puede ser una cadena de texto o un array de cadenas" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palabras clave extraídas de la página; pueden ser una cadena de texto o un array de cadenas de texto" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Configuraciones regionales alternativas para la página" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contiene las URL no válidas que se especificaron en la solicitud. Si no hubo URL no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string", + "description": "El título de la página, si está disponible." + }, + "description": { + "type": "string", + "description": "Una descripción de la página, si está disponible." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contendrá las URL no válidas que se especificaron en la solicitud. Si no hubo URL no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "Estado actual del trabajo de extracción" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "Número de tokens usados por la tarea de extracción. Solo disponible si la tarea se ha completado." + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/es/contributing/guide.mdx b/es/contributing/guide.mdx index 2975383b..e83d1f56 100644 --- a/es/contributing/guide.mdx +++ b/es/contributing/guide.mdx @@ -77,7 +77,6 @@ POSTHOG_HOST= # configura si quieres enviar eventos de PostHog como registros de ``` -
### Instalación de dependencias
@@ -89,7 +88,6 @@ Primero, instala las dependencias con pnpm. pnpm install # asegúrate de tener pnpm versión 9+. ``` -
### Ejecución del proyecto
@@ -106,7 +104,6 @@ Ejecuta el comando en cualquier parte de tu proyecto redis-server ``` -
### Terminal 2 - configuración del servicio
@@ -120,7 +117,6 @@ pnpm start Esto iniciará los workers responsables de procesar las tareas de rastreo. -
### Terminal 3: enviando nuestra primera solicitud.
@@ -143,7 +139,6 @@ curl -X POST http://localhost:3002/v1/crawl \ }' ``` -
### Alternativa: usar Docker Compose
@@ -160,7 +155,6 @@ docker compose up Esto iniciará Redis, el servidor de la API y los workers automáticamente con la configuración correcta. -
## Pruebas:
diff --git a/es/contributing/self-host.mdx b/es/contributing/self-host.mdx index 0eb442c3..d579c952 100644 --- a/es/contributing/self-host.mdx +++ b/es/contributing/self-host.mdx @@ -173,7 +173,6 @@ Esto iniciará una instancia local de Firecrawl accesible en `http://localhost:3 Deberías poder ver la interfaz de Bull Queue Manager en `http://localhost:3002/admin/@/queues`. - 5. *(Opcional)* Prueba la API Si quieres probar el endpoint de crawl, puedes ejecutar lo siguiente: @@ -186,7 +185,6 @@ Si quieres probar el endpoint de crawl, puedes ejecutar lo siguiente: }' ``` -
## Solución de problemas
@@ -207,7 +205,6 @@ Esta sección ofrece soluciones a problemas comunes que puedes encontrar al conf **Explicación:** Este error ocurre porque la configuración del cliente de Supabase no está completa. Deberías poder hacer scraping y crawling sin problemas. Actualmente no es posible configurar Supabase en instancias autogestionadas. -
### Estás eludiendo la autenticación
@@ -221,7 +218,6 @@ Este error ocurre porque la configuración del cliente de Supabase no está comp **Explicación:** Este error se debe a que la configuración del cliente de Supabase no está completa. Deberías poder realizar scraping y crawling sin problemas. Por ahora, no es posible configurar Supabase en instancias autogestionadas. -
### Los contenedores de Docker no arrancan
@@ -239,7 +235,6 @@ docker logs [nombre_del_contenedor] * Asegúrate de que todas las variables de entorno necesarias estén correctamente definidas en el archivo .env. * Verifica que todos los servicios de Docker definidos en docker-compose.yml estén correctamente configurados y que las imágenes necesarias estén disponibles. -
### Problemas de conexión con Redis
diff --git a/es/developer-guides/advanced-guides/authenticated-scraping.mdx b/es/developer-guides/advanced-guides/authenticated-scraping.mdx index d546b1a1..82792aa2 100644 --- a/es/developer-guides/advanced-guides/authenticated-scraping.mdx +++ b/es/developer-guides/advanced-guides/authenticated-scraping.mdx @@ -108,7 +108,6 @@ auth-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJleGFtcGxlLXVzZXIt **Importante:** Las cookies son credenciales sensibles. Nunca las compartas públicamente ni las subas al control de versiones. Trátalas como contraseñas. -
### Paso 2: Utilizar cookies con Firecrawl
@@ -131,7 +130,6 @@ const result = await app.scrape("https://firecrawl-auth.vercel.app/dashboard", { console.log("=== Markdown ===\n" + result.markdown + "\n\n=== Screenshot URL ===\n" + result.screenshot); ``` -
## Mejores prácticas
diff --git a/es/developer-guides/common-sites/amazon.mdx b/es/developer-guides/common-sites/amazon.mdx index 36d75023..206f2477 100644 --- a/es/developer-guides/common-sites/amazon.mdx +++ b/es/developer-guides/common-sites/amazon.mdx @@ -15,7 +15,6 @@ Amazon es uno de los sitios de comercio electrónico más analizados mediante sc npm install @mendable/firecrawl-js zod ``` -
## Descripción general
@@ -64,7 +63,6 @@ console.log('✅ Datos del producto validados:'); console.log(validated); ``` - @@ -87,7 +85,6 @@ const searchResult = await firecrawl.search('gaming laptop site:amazon.com', { console.log(searchResult); ``` -
## Scrape
@@ -107,7 +104,6 @@ const result = await firecrawl.scrape('https://www.amazon.com/ASUS-ROG-Strix-Gam console.log(result); ``` -
## Map
@@ -125,7 +121,6 @@ console.log(mapResult.links); // Devuelve un array de URLs sin contenido ``` -
## Rastreo
@@ -147,7 +142,6 @@ const crawlResult = await firecrawl.crawl('https://www.amazon.com/s?k=mechanical console.log(crawlResult.data); ``` -
## Extracción por lotes
diff --git a/es/developer-guides/common-sites/etsy.mdx b/es/developer-guides/common-sites/etsy.mdx index ede36e7e..8154393c 100644 --- a/es/developer-guides/common-sites/etsy.mdx +++ b/es/developer-guides/common-sites/etsy.mdx @@ -15,7 +15,6 @@ Etsy es un marketplace global de artículos únicos y creativos. Esta guía te m npm install @mendable/firecrawl-js zod ``` -
## Descripción general
@@ -63,7 +62,6 @@ console.log('✅ Datos del listado validados:'); console.log(validated); ``` - @@ -86,7 +84,6 @@ const searchResult = await firecrawl.search('handmade jewelry site:etsy.com', { console.log(searchResult); ``` -
## Extracción
@@ -106,7 +103,6 @@ const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/h console.log(result); ``` -
## Mapear
@@ -124,7 +120,6 @@ console.log(mapResult.links); // Devuelve un array de URLs sin contenido ``` -
## Rastreo
@@ -146,7 +141,6 @@ const crawlResult = await firecrawl.crawl('https://www.etsy.com/c/jewelry', { console.log(crawlResult.data); ``` -
## Rastreo por lotes
diff --git a/es/developer-guides/common-sites/github.mdx b/es/developer-guides/common-sites/github.mdx index d19b4c59..1b97a71f 100644 --- a/es/developer-guides/common-sites/github.mdx +++ b/es/developer-guides/common-sites/github.mdx @@ -13,7 +13,6 @@ Aprende a usar las funciones principales de Firecrawl para hacer scraping de rep npm install @mendable/firecrawl-js zod ``` -
## Extraer con modo JSON
@@ -43,7 +42,6 @@ const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', console.log(result.json); ``` - @@ -66,7 +64,6 @@ const searchResult = await firecrawl.search('machine learning site:github.com', console.log(searchResult); ``` -
## Scrape
@@ -85,7 +82,6 @@ const result = await firecrawl.scrape('https://github.com/mendableai/firecrawl', console.log(result); ``` -
## Map
@@ -103,7 +99,6 @@ console.log(mapResult.links); // Devuelve un array de URLs sin contenido ``` -
## Rastreo
@@ -125,7 +120,6 @@ const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wik console.log(crawlResult.data); ``` -
## Extracción por lotes
@@ -157,7 +151,6 @@ console.log(job.status, job.completed, job.total); console.log(job); ``` -
## Rastreo por lotes con modo JSON
diff --git a/es/developer-guides/common-sites/wikipedia.mdx b/es/developer-guides/common-sites/wikipedia.mdx index 5f1f3f5f..68bbde2c 100644 --- a/es/developer-guides/common-sites/wikipedia.mdx +++ b/es/developer-guides/common-sites/wikipedia.mdx @@ -13,7 +13,6 @@ Aprende a hacer scraping de Wikipedia de forma efectiva para investigación, ext npm install @mendable/firecrawl-js zod ``` -
## Casos de uso
@@ -52,7 +51,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/JavaScript' console.log(result.json); ``` - @@ -75,7 +73,6 @@ const searchResult = await firecrawl.search('quantum computing site:en.wikipedia console.log(searchResult); ``` -
## Scrape
@@ -95,7 +92,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/Artificial_ console.log(result); ``` -
## Mapear
@@ -113,7 +109,6 @@ console.log(mapResult.links); // Devuelve un array de URLs sin contenido ``` -
## Rastreo
@@ -135,7 +130,6 @@ const crawlResult = await firecrawl.crawl('https://en.wikipedia.org/wiki/Portal: console.log(crawlResult.data); ``` -
## Extracción por lotes
diff --git a/es/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx b/es/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx index a34f92db..0e29e964 100644 --- a/es/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx +++ b/es/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx @@ -740,7 +740,6 @@ const result = streamText({ El SDK de IA es compatible con más de 20 proveedores con la misma API. Más información: [ai-sdk.dev/docs/foundations/providers-and-models](https://ai-sdk.dev/docs/foundations/providers-and-models). -
### Personaliza la UI
diff --git a/es/developer-guides/llm-sdks-and-frameworks/anthropic.mdx b/es/developer-guides/llm-sdks-and-frameworks/anthropic.mdx index 3ebea22a..25cbbdf7 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/anthropic.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/anthropic.mdx @@ -22,7 +22,6 @@ ANTHROPIC_API_KEY=tu_clave_anthropic > **Nota:** Si usas Node < 20, instala `dotenv` y añade `import 'dotenv/config'` a tu código. -
## Rastrear + Resumir
@@ -53,7 +52,6 @@ const message = await anthropic.messages.create({ console.log('Respuesta:', message); ``` -
## Uso de herramientas
@@ -108,7 +106,6 @@ if (toolUse && toolUse.type === 'tool_use') { } ``` -
## Extracción estructurada
diff --git a/es/developer-guides/llm-sdks-and-frameworks/gemini.mdx b/es/developer-guides/llm-sdks-and-frameworks/gemini.mdx index df2a9ffe..cbd894df 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/gemini.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/gemini.mdx @@ -22,7 +22,6 @@ GEMINI_API_KEY=tu_clave_gemini > **Nota:** Si usas Node < 20, instala `dotenv` y añade `import 'dotenv/config'` a tu código. -
## Extraer + resumir
@@ -50,7 +49,6 @@ const response = await ai.models.generateContent({ console.log('Resumen:', response.text); ``` -
## Análisis de contenido
@@ -87,7 +85,6 @@ const result2 = await chat.sendMessage({ console.log('Historias 4ª y 5ª:', result2.text); ``` -
## Extracción estructurada
diff --git a/es/developer-guides/llm-sdks-and-frameworks/google-adk.mdx b/es/developer-guides/llm-sdks-and-frameworks/google-adk.mdx index ea58a008..5a939892 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/google-adk.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/google-adk.mdx @@ -174,7 +174,6 @@ response = research_agent.run("¿Cuáles son las últimas características de Py print(response) ``` -
## Mejores prácticas
diff --git a/es/developer-guides/llm-sdks-and-frameworks/langchain.mdx b/es/developer-guides/llm-sdks-and-frameworks/langchain.mdx index fd9cc401..8eab8b3d 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/langchain.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/langchain.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=tu_clave_openai > **Nota:** Si usas Node < 20, instala `dotenv` y añade `import 'dotenv/config'` a tu código. -
## Extraer + Chatear
@@ -53,7 +52,6 @@ const response = await chat.invoke([ console.log('Resumen:', response.content); ``` -
## Cadenas
@@ -94,7 +92,6 @@ const result = await chain.invoke({ console.log('Resultado de la cadena:', result); ``` -
## Llamado de herramientas
@@ -137,7 +134,6 @@ console.log('Respuesta:', response.content); console.log('Llamadas a herramientas:', response.tool_calls); ``` -
## Extracción de datos estructurados
diff --git a/es/developer-guides/llm-sdks-and-frameworks/langgraph.mdx b/es/developer-guides/llm-sdks-and-frameworks/langgraph.mdx index 1a78ddc5..3bccab5e 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/langgraph.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/langgraph.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=tu_clave_openai > **Nota:** Si usas Node < 20, instala `dotenv` y añade `import 'dotenv/config'` a tu código. -
## Flujo de trabajo básico
@@ -81,7 +80,6 @@ const result = await app.invoke({ console.log(JSON.stringify(result, null, 2)); ``` -
## Flujo de trabajo multietapa
diff --git a/es/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx b/es/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx index b99468ad..d4b776e7 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=tu_clave_openai > **Nota:** Si usas Node < 20, instala `dotenv` y agrega `import 'dotenv/config'` a tu código. - diff --git a/es/developer-guides/llm-sdks-and-frameworks/mastra.mdx b/es/developer-guides/llm-sdks-and-frameworks/mastra.mdx index ea189d3f..6e0030d0 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/mastra.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/mastra.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=tu_clave_openai > **Nota:** Si usas Node < 20, instala `dotenv` y añade `import 'dotenv/config'` a tu código. -
## Flujo de trabajo de varios pasos
diff --git a/es/developer-guides/llm-sdks-and-frameworks/openai.mdx b/es/developer-guides/llm-sdks-and-frameworks/openai.mdx index 1ee92056..7e1acc48 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/openai.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/openai.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=tu_clave_openai > **Nota:** Si usas Node < 20, instala `dotenv` y añade `import 'dotenv/config'` a tu código. -
## Rastrear + Resumir
@@ -54,7 +53,6 @@ const completion = await openai.chat.completions.create({ console.log('Resumen:', completion.choices[0]?.message.content); ``` -
## Llamadas a funciones
@@ -130,7 +128,6 @@ if (message?.tool_calls && message.tool_calls.length > 0) { } ``` -
## Extracción de datos estructurados
@@ -185,7 +182,6 @@ const companyInfo = content ? CompanyInfoSchema.parse(JSON.parse(content)) : nul console.log('Información de la empresa validada:', companyInfo); ``` -
## Búsqueda + Análisis
@@ -220,7 +216,6 @@ const analysis = await openai.chat.completions.create({ console.log('Análisis:', analysis.choices[0]?.message?.content); ``` -
## API de Responses con MCP
diff --git a/es/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx b/es/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx index bdefca2e..7c9d82ee 100644 --- a/es/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx +++ b/es/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx @@ -24,7 +24,6 @@ OPENAI_API_KEY=sk-your-key Estos ejemplos usan OpenAI, pero las herramientas de Firecrawl funcionan con cualquier proveedor del SDK de IA de Vercel, incluidos Anthropic, Google, Mistral y más. Consulta la lista completa de [proveedores compatibles](https://ai-sdk.dev/providers/ai-sdk-providers). -
## Inicio rápido
@@ -41,7 +40,6 @@ const { text } = await generateText({ }); ``` -
## Herramientas disponibles
@@ -60,7 +58,6 @@ import { } from 'firecrawl-aisdk'; ``` -
## Ejemplos
@@ -83,7 +80,6 @@ const { text } = await generateText({ console.log(text); ``` - @@ -102,7 +98,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Mapa
@@ -121,7 +116,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Crawl
@@ -142,7 +136,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Scrape por lotes
@@ -163,7 +156,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Extract
@@ -184,7 +176,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Búsqueda + extracción de datos
@@ -203,7 +194,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Transmisión
diff --git a/es/developer-guides/mcp-setup-guides/chatgpt.mdx b/es/developer-guides/mcp-setup-guides/chatgpt.mdx new file mode 100644 index 00000000..acbff94d --- /dev/null +++ b/es/developer-guides/mcp-setup-guides/chatgpt.mdx @@ -0,0 +1,124 @@ +--- +title: "Búsqueda web y scraping con MCP en ChatGPT" +description: "Agrega scraping web y búsqueda a ChatGPT en 2 minutos" +--- + + +La compatibilidad con MCP en ChatGPT se encuentra actualmente en fase beta. La interfaz y la disponibilidad pueden cambiar a medida que OpenAI continúe su desarrollo. + + + +**Disponibilidad:** El modo Desarrollador con conectores MCP no está disponible en el plan Free y requiere una suscripción de pago a ChatGPT. La disponibilidad y las funciones varían según el plan y la región. Consulta la [documentación de OpenAI sobre el Modo Desarrollador](https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta) para ver la disponibilidad actual y las instrucciones de configuración. + + +Agrega capacidades de scraping web y búsqueda a ChatGPT con Firecrawl MCP. + +
+ ## Configuración rápida +
+ +
+ ### 1. Obtén tu clave de API +
+ +Regístrate en [firecrawl.dev/app/api-keys](https://www.firecrawl.dev/app/api-keys) y copia tu clave de API. + +
+ ### 2. Activa el modo desarrollador +
+ +Abre la configuración de ChatGPT haciendo clic en tu nombre de usuario en la esquina inferior izquierda, o ve directamente a [chatgpt.com/#settings](https://chatgpt.com/#settings). + +En la ventana de configuración, desplázate hasta la parte inferior y selecciona **Advanced Settings**. Activa **Developer mode**. + + + Configuración de ChatGPT que muestra Advanced Settings con el interruptor de Developer mode + + +
+ ### 3. Crear el conector +
+ +Con el modo Developer habilitado, ve a la pestaña **Apps & Connectors** en el mismo modal de configuración. + +Haz clic en el botón **Create** en la esquina superior derecha. + + + Pestaña Apps & Connectors con el botón Create resaltado + + +Completa los detalles del conector: + +- **Name:** `Firecrawl MCP` +- **Description:** `Web scraping, crawling, search, and content extraction` (opcional) +- **MCP Server URL:** `https://mcp.firecrawl.dev/YOUR_API_KEY_HERE/v2/mcp` +- **Authentication:** `None` + +Reemplaza `YOUR_API_KEY_HERE` en la URL con tu [clave de API de Firecrawl](https://www.firecrawl.dev/app/api-keys) real. + + + Formulario New Connector completado con los detalles de Firecrawl MCP + + +Marca la casilla **"I understand and want to continue"** y luego haz clic en **Create**. + +
+ ### 4. Verificar la configuración +
+ +Vuelve a la interfaz principal de ChatGPT. Deberías ver **Developer mode** en pantalla, lo que indica que los conectores MCP están activos. + +Si no ves **Developer mode**, recarga la página. Si aún no aparece, abre la configuración de nuevo y verifica que **Developer mode** esté activado en la sección **Advanced Settings**. + +
+ ### 5. Accede a las herramientas de Firecrawl +
+ +Para usar Firecrawl en una conversación, haz clic en el botón **+** en el campo de entrada del chat, luego selecciona **More** y elige **Firecrawl MCP**. + + + Campo de entrada del chat de ChatGPT que muestra el menú + expandido con el submenú More y la opción Firecrawl MCP + + +
+ ## Demostración rápida +
+ +Con Firecrawl MCP seleccionado, prueba con estos prompts: + +**Búsqueda:** + +``` +Search for the latest React Server Components updates +``` + +**Scrape:** + +``` +Scrape firecrawl.dev and tell me what it does +``` + +**Obtener documentos:** + +``` +Extrae la documentación de Vercel sobre funciones edge y resúmela +``` + + +
+ ## Confirmación de herramienta +
+ +Cuando ChatGPT use las herramientas MCP de Firecrawl, verás un mensaje de confirmación solicitando tu aprobación. + + + Diálogo de confirmación de herramienta de ChatGPT que muestra una solicitud de Firecrawl MCP + + +Puedes marcar **"Remember for this conversation"** para evitar confirmaciones repetidas durante la misma sesión de chat. Esta medida de seguridad la implementa OpenAI para garantizar que las herramientas MCP no realicen acciones no deseadas. + +Una vez confirmes, ChatGPT ejecutará la solicitud y devolverá los resultados. + + + Ejemplo de resultados de búsqueda de Firecrawl mostrados en ChatGPT + \ No newline at end of file diff --git a/es/developer-guides/mcp-setup-guides/claude-code.mdx b/es/developer-guides/mcp-setup-guides/claude-code.mdx index 549e0299..6c4addde 100644 --- a/es/developer-guides/mcp-setup-guides/claude-code.mdx +++ b/es/developer-guides/mcp-setup-guides/claude-code.mdx @@ -27,7 +27,6 @@ Reemplaza `your-api-key` por tu clave real de la API de Firecrawl. ¡Listo! Ahora puedes buscar y extraer datos de la web desde Claude Code. -
## Demostración rápida
diff --git a/es/developer-guides/mcp-setup-guides/cursor.mdx b/es/developer-guides/mcp-setup-guides/cursor.mdx index 61190f7f..0a2dacfa 100644 --- a/es/developer-guides/mcp-setup-guides/cursor.mdx +++ b/es/developer-guides/mcp-setup-guides/cursor.mdx @@ -37,7 +37,6 @@ Abre Configuración (`Cmd+,`), busca “MCP” y añade: Reemplaza `your_api_key_here` por tu clave de API real de Firecrawl. -
### 3. Reinicia Cursor
diff --git a/es/developer-guides/mcp-setup-guides/factory-ai.mdx b/es/developer-guides/mcp-setup-guides/factory-ai.mdx index 5cc467d1..359e96e3 100644 --- a/es/developer-guides/mcp-setup-guides/factory-ai.mdx +++ b/es/developer-guides/mcp-setup-guides/factory-ai.mdx @@ -33,7 +33,6 @@ curl -fsSL https://app.factory.ai/cli | sh iwr https://app.factory.ai/cli/install.ps1 -useb | iex ``` -
### 3. Añade el servidor MCP de Firecrawl
@@ -46,7 +45,6 @@ En la CLI de Factory Droid, añade Firecrawl con el comando `/mcp add`: Reemplaza `your-api-key-here` por tu clave real de la API de Firecrawl. -
### 4. ¡Listo!
diff --git a/es/developer-guides/mcp-setup-guides/windsurf.mdx b/es/developer-guides/mcp-setup-guides/windsurf.mdx index 1935126a..f226599e 100644 --- a/es/developer-guides/mcp-setup-guides/windsurf.mdx +++ b/es/developer-guides/mcp-setup-guides/windsurf.mdx @@ -37,7 +37,6 @@ Añade esto a `./codeium/windsurf/model_config.json`: Reemplaza `YOUR_API_KEY` por tu clave real de la API de Firecrawl. -
### 3. Reinicia Windsurf
diff --git a/es/features/alpha/llmstxt-npx.mdx b/es/features/alpha/llmstxt-npx.mdx index a81448f2..9f4c9aca 100644 --- a/es/features/alpha/llmstxt-npx.mdx +++ b/es/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Puedes ejecutar este paquete con NPX sin instalarlo. Hay dos maneras de proporci npx generate-llmstxt --api-key TU_API_KEY_DE_FIRECRAWL ``` -
### 2. Uso de variables de entorno
@@ -47,7 +46,6 @@ Luego ejecuta el comando sin la opción --api-key: npx generate-llmstxt ``` -
### Opciones
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## Requisitos
diff --git a/es/features/change-tracking.mdx b/es/features/change-tracking.mdx index ae20ae82..99215364 100644 --- a/es/features/change-tracking.mdx +++ b/es/features/change-tracking.mdx @@ -82,7 +82,6 @@ Respuesta de ejemplo: } ``` -
### Opciones avanzadas
@@ -170,7 +169,6 @@ if 'json' in result.change_tracking: ... ``` -
### Ejemplo de resultados de comparación en JSON:
@@ -184,7 +182,6 @@ if 'json' in result.change_tracking: } ``` -
### Modelos de datos
@@ -278,7 +275,6 @@ La representación JSON estructurada del diff incluye: * `chunks`: Secciones de cambios dentro de un archivo * `changes`: Cambios de línea individuales con tipo (add, delete, normal) -
### Modo JSON
@@ -302,7 +298,6 @@ Salida de ejemplo: Para utilizar el modo JSON, debes proporcionar un esquema que defina los campos que se deben extraer y comparar. -
## Datos importantes
@@ -353,7 +348,6 @@ Estos son algunos detalles importantes que debes conocer al usar la función de } ``` -
### Ejemplo de rastreo
@@ -368,7 +362,6 @@ Estos son algunos detalles importantes que debes conocer al usar la función de } ``` -
### Seguimiento de cambios en el precio de productos
diff --git a/es/features/extract.mdx b/es/features/extract.mdx index 0284f3f8..b3b3cf58 100644 --- a/es/features/extract.mdx +++ b/es/features/extract.mdx @@ -32,7 +32,6 @@ El endpoint `/extract` simplifica la recopilación de datos estructurados desde Hemos simplificado la facturación para que Extract ahora use créditos, igual que los demás endpoints. Cada crédito equivale a 15 tokens. -
## Uso de `/extract`
diff --git a/es/features/search-v0.mdx b/es/features/search-v0.mdx index bcb08be6..71f49417 100644 --- a/es/features/search-v0.mdx +++ b/es/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Con el SDK de Python
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### Buscar una búsqueda
@@ -94,7 +92,6 @@ result = app.search(query="¿Qué es Firecrawl?") La respuesta será similar a la que aparece en el comando curl anterior. -
### Con el SDK de JavaScript
@@ -107,7 +104,6 @@ La respuesta será similar a la que aparece en el comando curl anterior. npm install @mendable/firecrawl-js ``` - #### Buscar una consulta ```javascript @@ -122,7 +118,6 @@ const result = await app.search('¿Qué es Firecrawl?'); La respuesta será similar a la que se muestra en el comando curl anterior. -
### Con el SDK de Go
@@ -135,7 +130,6 @@ La respuesta será similar a la que se muestra en el comando curl anterior. go get github.com/mendableai/firecrawl-go ``` -
#### Buscar una búsqueda
@@ -163,7 +157,6 @@ func main() { } ``` -
### Con el SDK de Rust
@@ -186,7 +179,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### Buscar una búsqueda
diff --git a/es/integrations/camelai.mdx b/es/integrations/camelai.mdx index fcb16ea9..ef61aa07 100644 --- a/es/integrations/camelai.mdx +++ b/es/integrations/camelai.mdx @@ -14,7 +14,6 @@ pip install camel-ai ``` -
## Uso
@@ -36,7 +35,6 @@ mock_app.crawl_url.return_value = respons result = firecrawl.markdown_crawl(url) ``` -
### Uso de Firecrawl para obtener una sola página
diff --git a/es/integrations/crewai.mdx b/es/integrations/crewai.mdx index 2398d53a..94b40abd 100644 --- a/es/integrations/crewai.mdx +++ b/es/integrations/crewai.mdx @@ -22,7 +22,6 @@ Firecrawl está integrado con [CrewAI, el framework para orquestar agentes de IA pip install firecrawl-py 'crewai[tools]' ``` -
## Herramientas
@@ -43,7 +42,6 @@ from crewai_tools import FirecrawlCrawlWebsiteTool tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev') ``` -
#### Argumentos
@@ -79,7 +77,6 @@ from crewai_tools import FirecrawlScrapeWebsiteTool tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev') ``` -
#### Argumentos
@@ -111,7 +108,6 @@ from crewai_tools import FirecrawlSearchTool tool = FirecrawlSearchTool(query='¿Qué es Firecrawl?') ``` -
#### Argumentos
diff --git a/es/mcp-server.mdx b/es/mcp-server.mdx index 23de6391..44c87c53 100644 --- a/es/mcp-server.mdx +++ b/es/mcp-server.mdx @@ -32,7 +32,6 @@ Puedes usar nuestra URL alojada de forma remota o ejecutar el servidor localment https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp ``` -
### Ejecutar con npx
@@ -41,14 +40,12 @@ https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp env FIRECRAWL_API_KEY=fc-TU_API_KEY npx -y firecrawl-mcp ``` - ### Instalación manual ```bash npm install -g firecrawl-mcp ``` -
### Ejecutar en Cursor
@@ -126,7 +123,6 @@ Añade esto a tu `./codeium/windsurf/model_config.json`: } ``` -
### Ejecución con modo HTTP en streaming
@@ -139,7 +135,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-TU_CLAVE_API npx -y firecra Usa la URL: http://localhost:3000/v2/mcp o https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp -
### Instalación mediante Smithery (heredado)
@@ -150,7 +145,6 @@ Para instalar Firecrawl para Claude Desktop automáticamente a través de [Smith npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude ``` -
### Ejecución en VS Code
@@ -217,7 +211,6 @@ Consulta la referencia: [directus/directus#25906 (comment)](https://github.com/d El servidor MCP sigue funcionando correctamente cuando se invoca mediante otras extensiones, pero el problema ocurre específicamente al registrarlo directamente en la lista de servidores MCP. Planeamos agregar recomendaciones una vez que VS Code actualice su validación de esquemas. -
### Ejecutar en Claude Desktop
@@ -237,7 +230,6 @@ Añade esto al archivo de configuración de Claude: } ``` -
### Ejecución en Claude Code
@@ -248,7 +240,6 @@ Agrega el servidor MCP de Firecrawl usando la CLI de Claude Code: claude mcp add firecrawl -e FIRECRAWL_API_KEY=tu-clave-de-api -- npx -y firecrawl-mcp ``` -
### Ejecutar en n8n
@@ -280,7 +271,6 @@ env HTTP_STREAMABLE_SERVER=true \ Esto iniciará el servidor en `http://localhost:3000/v2/mcp`, que puedes usar en tu flujo de trabajo de n8n como endpoint. La variable de entorno `HTTP_STREAMABLE_SERVER=true` es necesaria porque n8n requiere transporte HTTP. -
## Configuración
@@ -355,7 +345,6 @@ export FIRECRAWL_RETRY_MAX_ATTEMPTS=10 export FIRECRAWL_RETRY_INITIAL_DELAY=500 # Comienza con reintentos más rápidos ``` -
### Configuración personalizada con Claude Desktop
@@ -384,7 +373,6 @@ Añade esto a tu `claude_desktop_config.json`: } ``` -
### Configuración del sistema
@@ -425,7 +413,6 @@ Estas configuraciones controlan: * Advertencia con 1000 créditos restantes * Alerta crítica con 100 créditos restantes -
### Limitación de tasas y procesamiento por lotes
@@ -464,7 +451,6 @@ Extrae contenido de una única URL con opciones avanzadas. } ``` -
### 2. Herramienta de scraping por lotes (`firecrawl_batch_scrape`)
@@ -498,7 +484,6 @@ La respuesta incluye el ID de la operación para comprobar el estado: } ``` -
### 3. Comprobar el estado del lote (`firecrawl_check_batch_status`)
@@ -514,7 +499,6 @@ Comprueba el estado de una operación por lotes. } ``` -
### 4. Herramienta de mapeo (`firecrawl_map`)
@@ -535,7 +519,6 @@ Mapea un sitio web para descubrir todas las URL indexadas del sitio. } ``` -
#### Opciones de la herramienta Map:
@@ -572,7 +555,6 @@ Busca en la web y, opcionalmente, extrae contenido de los resultados de búsqued } ``` -
### 6. Herramienta de rastreo (`firecrawl_crawl`)
@@ -592,7 +574,6 @@ Inicia un rastreo asíncrono con opciones avanzadas. } ``` -
### 7. Consultar el estado del rastreo (`firecrawl_check_crawl_status`)
@@ -610,7 +591,6 @@ Consulta el estado de un job de rastreo. **Devuelve:** Estado y progreso del trabajo de rastreo, incluidos los resultados si están disponibles. -
### 8. Herramienta de extracción (`firecrawl_extract`)
@@ -658,7 +638,6 @@ Ejemplo de respuesta: } ``` -
#### Opciones de la herramienta de extracción:
@@ -695,7 +674,6 @@ Ejemplos de mensajes de registro: [ERROR] Límite de solicitudes excedido, reintentando en 2 s... ``` -
## Gestión de errores
@@ -722,7 +700,6 @@ Ejemplo de respuesta de error: } ``` -
## Desarrollo
@@ -738,7 +715,6 @@ npm run build npm test ``` -
### Contribuir
diff --git a/es/v0/advanced-scraping-guide.mdx b/es/v0/advanced-scraping-guide.mdx index 67ca2be5..55df46d8 100644 --- a/es/v0/advanced-scraping-guide.mdx +++ b/es/v0/advanced-scraping-guide.mdx @@ -169,7 +169,6 @@ En este ejemplo, el scraper hará lo siguiente: Consulta la referencia de la API aquí: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Opciones del extractor
@@ -262,7 +261,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ } ``` -
## Ajustar el tiempo de espera
@@ -284,7 +282,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ }' ``` -
## Rastreo de múltiples páginas
@@ -306,7 +303,6 @@ Devuelve un jobId { "jobId": "1234-5678-9101" } ``` -
### Consultar trabajo de rastreo
@@ -319,7 +315,6 @@ curl -X GET https://api.firecrawl.dev/v0/crawl/status/1234-5678-9101 \ -H 'Authorization: Bearer YOUR_API_KEY' ``` -
### Opciones del rastreador
@@ -405,7 +400,6 @@ En este ejemplo, el rastreador: * Usará el modo de rastreo rápido. * Rastreará un máximo de 1000 páginas. -
## Opciones de página + Opciones del rastreador
@@ -446,7 +440,6 @@ En este ejemplo, el rastreador: * Rastreará hasta una profundidad máxima de 2. * Usará el modo de rastreo rápido. -
## Opciones del extractor + Opciones del rastreador
diff --git a/es/v0/api-reference/endpoint/crawl-cancel.mdx b/es/v0/api-reference/endpoint/crawl-cancel.mdx index 4b7e4741..ed0cfc78 100644 --- a/es/v0/api-reference/endpoint/crawl-cancel.mdx +++ b/es/v0/api-reference/endpoint/crawl-cancel.mdx @@ -1,4 +1,4 @@ --- title: 'Cancelar tarea de rastreo' -openapi: 'v0-openapi DELETE /crawl/cancel/{jobId}' +openapi: '/es/api-reference/v1-openapi.json V0-OPENAPI DELETE /crawl/cancel/{jobId}' --- \ No newline at end of file diff --git a/es/v0/api-reference/endpoint/crawl.mdx b/es/v0/api-reference/endpoint/crawl.mdx index 7fb6619b..be89ba0d 100644 --- a/es/v0/api-reference/endpoint/crawl.mdx +++ b/es/v0/api-reference/endpoint/crawl.mdx @@ -1,4 +1,4 @@ --- title: 'Crawl' -openapi: 'v0-openapi POST /crawl' +openapi: '/es/api-reference/v1-openapi.json V0-OPENAPI POST /crawl' --- \ No newline at end of file diff --git a/es/v0/api-reference/endpoint/scrape.mdx b/es/v0/api-reference/endpoint/scrape.mdx index 617f7ca0..76970521 100644 --- a/es/v0/api-reference/endpoint/scrape.mdx +++ b/es/v0/api-reference/endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: "Scrape" -openapi: 'v0-openapi POST /scrape' +openapi: '/es/api-reference/v1-openapi.json V0-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/es/v0/api-reference/endpoint/search.mdx b/es/v0/api-reference/endpoint/search.mdx index 95f1ea3a..96850ee7 100644 --- a/es/v0/api-reference/endpoint/search.mdx +++ b/es/v0/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Search (Beta)" -openapi: 'v0-openapi POST /search' +openapi: '/es/api-reference/v1-openapi.json V0-OPENAPI POST /search' --- El punto de conexión /search combina una API de búsqueda con el poder de Firecrawl para ofrecer una experiencia de búsqueda potente para cualquier consulta. diff --git a/es/v0/api-reference/endpoint/status.mdx b/es/v0/api-reference/endpoint/status.mdx index c8f5a9f7..e29ffb5f 100644 --- a/es/v0/api-reference/endpoint/status.mdx +++ b/es/v0/api-reference/endpoint/status.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado del rastreo' -openapi: 'v0-openapi GET /crawl/status/{jobId}' +openapi: '/es/api-reference/v1-openapi.json V0-OPENAPI GET /crawl/status/{jobId}' --- Este punto de conexión obtiene el estado de un trabajo de rastreo. Si el trabajo no está completo, la respuesta incluye contenido en `partial_data`. Una vez que el trabajo se completa, el contenido está disponible en `data`. diff --git a/es/v0/api-reference/introduction.mdx b/es/v0/api-reference/introduction.mdx index 28b0b35c..a0fc2bc2 100644 --- a/es/v0/api-reference/introduction.mdx +++ b/es/v0/api-reference/introduction.mdx @@ -13,7 +13,6 @@ Todas las solicitudes usan la siguiente URL base: https://api.firecrawl.dev ``` -
## Autenticación
@@ -26,7 +25,6 @@ Authorization: Bearer fc_123456789 ​ -
## Códigos de respuesta
diff --git a/es/v0/api-reference/v0-openapi.json b/es/v0/api-reference/v0-openapi.json new file mode 100644 index 00000000..0dacdc5a --- /dev/null +++ b/es/v0/api-reference/v0-openapi.json @@ -0,0 +1,947 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v0", + "description": "API para interactuar con los servicios de Firecrawl y realizar tareas de scraping y rastreo web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v0" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Hacer scraping de una sola URL y, opcionalmente, extraer información con un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL que se va a scrapear" + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "Cabeceras que se envían con la solicitud. Pueden usarse para enviar cookies, el user-agent, etc." + }, + "includeHtml": { + "type": "boolean", + "description": "Incluye la versión HTML del contenido de la página. Devolverá una clave html en la respuesta.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Incluye el contenido HTML sin procesar de la página. Esto devolverá una clave rawHtml en la respuesta.", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Incluye únicamente las etiquetas, clases e ID de la página en el resultado final. Usa valores separados por comas. Ejemplo: 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve únicamente el contenido principal de la página, excluyendo encabezados, barras de navegación, pies de página, etc.", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas, clases e ID que se eliminarán de la página. Usa valores separados por comas. Ejemplo: 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "Reemplaza todas las rutas relativas de imágenes y enlaces por rutas absolutas", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "Incluye una captura de pantalla de la parte superior de la página que estás rastreando.", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "Incluye una captura de pantalla de página completa de la página que estás rastreando.", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "Espera x milisegundos a que cargue la página antes de obtener el contenido", + "default": 0 + } + } + }, + "extractorOptions": { + "type": "object", + "description": "Opciones para la extracción de información estructurada a partir del contenido de la página. Nota: la extracción basada en LLM no se realiza de manera predeterminada y solo se lleva a cabo cuando se configura explícitamente. El modo 'markdown' simplemente devuelve el markdown extraído y es el modo predeterminado para el scraping.", + "default": {}, + "properties": { + "mode": { + "type": "string", + "enum": [ + "markdown", + "llm-extraction", + "llm-extraction-from-raw-html", + "llm-extraction-from-markdown" + ], + "description": "El modo de extracción a utilizar. 'markdown': devuelve el contenido en formato Markdown obtenido por scraping, no realiza extracción mediante LLM. 'llm-extraction': extrae información del contenido limpiado y analizado utilizando un LLM. 'llm-extraction-from-raw-html': extrae información directamente del HTML sin procesar utilizando un LLM. 'llm-extraction-from-markdown': extrae información del contenido en Markdown utilizando un LLM." + }, + "extractionPrompt": { + "type": "string", + "description": "Un prompt que describa qué información se debe extraer de la página, aplicable a los modos de extracción con LLM." + }, + "extractionSchema": { + "type": "object", + "additionalProperties": true, + "description": "Esquema de los datos que se van a extraer, requerido únicamente para los modos de extracción con LLM.", + "required": [ + "company_mission", + "supports_sso", + "is_open_source" + ] + } + } + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera de la solicitud en milisegundos", + "default": 30000 + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear varias URL según las opciones configuradas", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se iniciará el rastreo" + }, + "crawlerOptions": { + "type": "object", + "properties": { + "includes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de URL que se deben incluir" + }, + "excludes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de URL para excluir" + }, + "generateImgAltText": { + "type": "boolean", + "description": "Generar texto alternativo para imágenes usando LLMs (requiere un plan de pago)", + "default": false + }, + "returnOnlyUrls": { + "type": "boolean", + "description": "Si es `true`, devuelve solo las URLs como una lista en el estado del rastreo. Ten en cuenta que la respuesta será una lista de URLs dentro de `data`, no una lista de documentos.", + "default": false + }, + "maxDepth": { + "type": "integer", + "description": "Profundidad máxima de rastreo respecto a la URL indicada. Un maxDepth de 0 rastrea solo la URL indicada. Un maxDepth de 1 rastrea la URL indicada y todas las páginas a un nivel de profundidad. Un maxDepth de 2 rastrea la URL indicada y todas las páginas hasta dos niveles de profundidad. Los valores más altos siguen el mismo patrón." + }, + "mode": { + "type": "string", + "enum": [ + "default", + "fast" + ], + "description": "El modo de rastreo a utilizar. El modo rápido rastrea sitios web sin sitemap 4 veces más rápido, pero puede no ser tan preciso y no debería usarse en sitios con mucho contenido renderizado con JavaScript.", + "default": "default" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar el sitemap del sitio al rastrear", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas para rastrear", + "default": 10000 + }, + "allowBackwardCrawling": { + "type": "boolean", + "description": "Permite que el rastreador navegue desde una URL específica hacia páginas enlazadas previamente. Por ejemplo, desde \"example.com/product/123\" de vuelta a \"example.com/product\".", + "default": false + }, + "allowExternalContentLinks": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a sitios web externos.", + "default": false + } + } + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "Encabezados que se enviarán con la solicitud. Se pueden usar para enviar cookies, user-agent, etc." + }, + "includeHtml": { + "type": "boolean", + "description": "Incluir la versión HTML del contenido de la página. Devolverá una clave html en la respuesta.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Incluye el contenido HTML sin procesar de la página. Devolverá una clave rawHtml en la respuesta.", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Incluye únicamente en la salida final las etiquetas, clases e IDs de la página. Usa valores separados por comas. Ejemplo: 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve únicamente el contenido principal de la página, excluyendo encabezados, elementos de navegación, pies de página, etc.", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas, clases e IDs que eliminar de la página. Usa valores separados por comas. Ejemplo: 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "Reemplazar todas las rutas relativas por rutas absolutas en imágenes y enlaces", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "Incluye una captura de pantalla de la parte superior de la página de la que estás extrayendo datos.", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "Incluye una captura de pantalla de toda la página que estás rastreando.", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "Espera x milisegundos a que cargue la página antes de extraer el contenido", + "default": 0 + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Busca una palabra clave en Google y devuelve las páginas mejor posicionadas, con el contenido de cada una en formato Markdown.", + "operationId": "searchGoogle", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "format": "uri", + "description": "La consulta de búsqueda" + }, + "pageOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve solo el contenido principal de la página, excluyendo encabezados, elementos de navegación, pies de página, etc.", + "default": false + }, + "fetchPageContent": { + "type": "boolean", + "description": "Obtiene el contenido de cada página. Si es false, se usará por defecto una API SERP básica y rápida.", + "default": true + }, + "includeHtml": { + "type": "boolean", + "description": "Incluye la versión HTML del contenido de la página. Devolverá una clave html en la respuesta.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Incluye el HTML sin procesar de la página. Generará una clave rawHtml en la respuesta.", + "default": false + } + } + }, + "searchOptions": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "Número máximo de resultados. El límite máximo es 20 durante la beta." + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/status/{jobId}": { + "get": { + "tags": [ + "Crawl" + ], + "summary": "Obtener el estado de una tarea de rastreo", + "operationId": "getCrawlStatus", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Estado del trabajo (completed, active, failed, paused)" + }, + "current": { + "type": "integer", + "description": "Número de página actual" + }, + "total": { + "type": "integer", + "description": "Número total de páginas" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "Datos devueltos por la tarea (null mientras está en ejecución)" + }, + "partial_data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "Documentos parciales devueltos mientras se rastrea (en streaming). **Esta funcionalidad se encuentra actualmente en fase alfa: espera cambios incompatibles**. Cuando una página esté lista, se añadirá al array `partial_data`, por lo que no es necesario esperar a que se rastree todo el sitio web. Cuando el rastreo termine, `partial_data` quedará vacío y el resultado estará disponible en `data`. Hay un máximo de 50 elementos en el array de respuesta. El elemento más antiguo (parte superior del array) se eliminará cuando se añada un nuevo elemento al array." + } + } + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/cancel/{jobId}": { + "delete": { + "tags": [ + "Crawl" + ], + "summary": "Cancelar un trabajo de rastreo", + "operationId": "cancelCrawlJob", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Devoluciones canceladas." + } + } + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `includeHtml` es `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Se muestra cuando se usa LLM Extraction. Datos extraídos de la página según el esquema definido.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Puede mostrarse al usar la extracción con LLM. El mensaje de advertencia indicará cualquier problema con la extracción." + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es true" + }, + "index": { + "type": "integer", + "description": "El número de la página que fue rastreada. Esto es útil para `partial_data`, ya que indica de qué página provienen los datos." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + }, + "SearchResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/es/v0/features/crawl.mdx b/es/v0/features/crawl.mdx index ed9d1eca..dabe37a1 100644 --- a/es/v0/features/crawl.mdx +++ b/es/v0/features/crawl.mdx @@ -173,7 +173,6 @@ Con cURL, /crawl siempre devolverá un jobId que puedes usar para verificar el e { "jobId": "1234-5678-9101" } ``` -
### Consultar trabajo de rastreo
diff --git a/es/v0/features/extract.mdx b/es/v0/features/extract.mdx index 8ce82160..49a4b36e 100644 --- a/es/v0/features/extract.mdx +++ b/es/v0/features/extract.mdx @@ -98,7 +98,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ ``` -
### Uso del SDK de Python
@@ -130,7 +129,6 @@ data = app.scrape_url('https://news.ycombinator.com', { print(data["llm_extraction"]) ``` -
### Con el SDK de JavaScript
@@ -166,7 +164,6 @@ const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", { console.log(scrapeResult.data["llm_extraction"]); ``` -
### Con el SDK de Go
@@ -222,7 +219,6 @@ func main() { } ``` -
### Con el SDK de Rust
diff --git a/es/v1/advanced-scraping-guide.mdx b/es/v1/advanced-scraping-guide.mdx index d176b60a..b3c94612 100644 --- a/es/v1/advanced-scraping-guide.mdx +++ b/es/v1/advanced-scraping-guide.mdx @@ -195,7 +195,6 @@ En este ejemplo, el scraper: Consulta la referencia de la API: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Opciones del extractor
@@ -296,7 +295,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ } ``` -
## Acciones
@@ -489,7 +487,6 @@ Devuelve un ID { "id": "1234-5678-9101" } ``` -
### Comprobar trabajo de rastreo
@@ -502,7 +499,6 @@ curl -X GET https://api.firecrawl.dev/v1/crawl/1234-5678-9101 \ -H 'Authorization: Bearer YOUR_API_KEY' ``` -
#### Paginación/URL siguiente
@@ -622,7 +618,6 @@ En este ejemplo, el rastreador hará lo siguiente: * Rastreará hasta una profundidad máxima de 2. * Rastreará como máximo 1000 páginas. - @@ -646,7 +641,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ Esto devolverá un objeto JSON con enlaces relacionados contextualmente con la URL. -
### Ejemplo de respuesta
@@ -668,7 +662,6 @@ Esto devolverá un objeto JSON con enlaces relacionados contextualmente con la U } ``` -
### Opciones del mapa
diff --git a/es/v1/api-reference/endpoint/batch-scrape-delete.mdx b/es/v1/api-reference/endpoint/batch-scrape-delete.mdx index d94a84f7..2ec64eeb 100644 --- a/es/v1/api-reference/endpoint/batch-scrape-delete.mdx +++ b/es/v1/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "Cancelar scraping por lotes" -openapi: "v1-openapi DELETE /batch/scrape/{id}" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}" --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape-delete) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/batch-scrape-get-errors.mdx b/es/v1/api-reference/endpoint/batch-scrape-get-errors.mdx index 33033620..d98ba67a 100644 --- a/es/v1/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/es/v1/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener errores de scraping por lotes' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape-get-errors) con mejores informes de errores y capacidades de depuración. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/batch-scrape-get.mdx b/es/v1/api-reference/endpoint/batch-scrape-get.mdx index 36568b55..e0a7a2ce 100644 --- a/es/v1/api-reference/endpoint/batch-scrape-get.mdx +++ b/es/v1/api-reference/endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado de Batch Scrape' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape-get) con seguimiento de estado y capacidades de monitorización mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/batch-scrape.mdx b/es/v1/api-reference/endpoint/batch-scrape.mdx index 3fa74c9a..d208788c 100644 --- a/es/v1/api-reference/endpoint/batch-scrape.mdx +++ b/es/v1/api-reference/endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Raspado en lote' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/batch-scrape) con mejoras en el rendimiento y la fiabilidad del procesamiento en lote. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/crawl-active.mdx b/es/v1/api-reference/endpoint/crawl-active.mdx index b63e38e6..5eb5ea7e 100644 --- a/es/v1/api-reference/endpoint/crawl-active.mdx +++ b/es/v1/api-reference/endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Ver rastreos activos' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-active) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/crawl-delete.mdx b/es/v1/api-reference/endpoint/crawl-delete.mdx index 202ebc64..8375c962 100644 --- a/es/v1/api-reference/endpoint/crawl-delete.mdx +++ b/es/v1/api-reference/endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "Cancelar rastreo" -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-delete) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/crawl-get-errors.mdx b/es/v1/api-reference/endpoint/crawl-get-errors.mdx index 3117bc57..5faa37af 100644 --- a/es/v1/api-reference/endpoint/crawl-get-errors.mdx +++ b/es/v1/api-reference/endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener errores de rastreo' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-get-errors) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/crawl-get.mdx b/es/v1/api-reference/endpoint/crawl-get.mdx index 3297af23..7b5e3b12 100644 --- a/es/v1/api-reference/endpoint/crawl-get.mdx +++ b/es/v1/api-reference/endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado del rastreo' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/crawl-get) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/crawl-post.mdx b/es/v1/api-reference/endpoint/crawl-post.mdx index 3a7604e3..391585db 100644 --- a/es/v1/api-reference/endpoint/crawl-post.mdx +++ b/es/v1/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Nota: Ya está disponible una [nueva versión v2 de esta API](/es/api-reference/endpoint/crawl-post) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/credit-usage-historical.mdx b/es/v1/api-reference/endpoint/credit-usage-historical.mdx index 5f143329..96f77ddf 100644 --- a/es/v1/api-reference/endpoint/credit-usage-historical.mdx +++ b/es/v1/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Uso histórico de créditos" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- Devuelve el uso histórico de créditos mes a mes. El punto de conexión también puede, opcionalmente, desglosar el uso por clave de API. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/credit-usage.mdx b/es/v1/api-reference/endpoint/credit-usage.mdx index a300a5b7..d614602d 100644 --- a/es/v1/api-reference/endpoint/credit-usage.mdx +++ b/es/v1/api-reference/endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de créditos' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/credit-usage) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/deep-research-get.mdx b/es/v1/api-reference/endpoint/deep-research-get.mdx index 4a8ec6f4..27102619 100644 --- a/es/v1/api-reference/endpoint/deep-research-get.mdx +++ b/es/v1/api-reference/endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "Investigación profunda" -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/deep-research.mdx b/es/v1/api-reference/endpoint/deep-research.mdx index 1f45bd4c..6a06be33 100644 --- a/es/v1/api-reference/endpoint/deep-research.mdx +++ b/es/v1/api-reference/endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Investigación profunda" -openapi: 'v1-openapi POST /deep-research' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- El punto de conexión de investigación profunda permite realizar investigación y análisis avanzados con IA sobre cualquier tema. Solo tienes que proporcionar una consulta de investigación y Firecrawl explorará la web de forma autónoma, recopilará información relevante y sintetizará los hallazgos en insights completos. diff --git a/es/v1/api-reference/endpoint/extract-get.mdx b/es/v1/api-reference/endpoint/extract-get.mdx index 6ec4f73c..db1d779b 100644 --- a/es/v1/api-reference/endpoint/extract-get.mdx +++ b/es/v1/api-reference/endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado de extracción' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/extract-get) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/extract.mdx b/es/v1/api-reference/endpoint/extract.mdx index c920a5f5..c976bb14 100644 --- a/es/v1/api-reference/endpoint/extract.mdx +++ b/es/v1/api-reference/endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/extract) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/llmstxt-get.mdx b/es/v1/api-reference/endpoint/llmstxt-get.mdx index ffcde154..722a2bff 100644 --- a/es/v1/api-reference/endpoint/llmstxt-get.mdx +++ b/es/v1/api-reference/endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "Estado de LLMs.txt" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Obtén el estado y los resultados de un trabajo de generación de LLMs.txt. Este punto de conexión te permite comprobar si la generación ya finalizó y obtener el contenido generado. @@ -69,7 +69,6 @@ Si el trabajo de generación falla o no se encuentra, recibirás una respuesta d } ``` -
### Recomendaciones para el sondeo
diff --git a/es/v1/api-reference/endpoint/llmstxt.mdx b/es/v1/api-reference/endpoint/llmstxt.mdx index 536e23be..0d718d35 100644 --- a/es/v1/api-reference/endpoint/llmstxt.mdx +++ b/es/v1/api-reference/endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Generar LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/es/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- El punto de conexión para generar LLMs.txt crea los archivos LLMs.txt y LLMs-full.txt para cualquier sitio web. Estos archivos ofrecen un formato estructurado y optimizado para LLM del contenido del sitio, lo que facilita que los modelos de lenguaje comprendan y procesen la información. diff --git a/es/v1/api-reference/endpoint/map.mdx b/es/v1/api-reference/endpoint/map.mdx index f84a1782..0ea4c983 100644 --- a/es/v1/api-reference/endpoint/map.mdx +++ b/es/v1/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/map) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/scrape.mdx b/es/v1/api-reference/endpoint/scrape.mdx index 0b8f6832..dd071874 100644 --- a/es/v1/api-reference/endpoint/scrape.mdx +++ b/es/v1/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/scrape) con funciones y un rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/search.mdx b/es/v1/api-reference/endpoint/search.mdx index c59d00f4..17c24136 100644 --- a/es/v1/api-reference/endpoint/search.mdx +++ b/es/v1/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Búsqueda' -openapi: 'v1-openapi POST /search' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/search) con funciones y rendimiento mejorados. diff --git a/es/v1/api-reference/endpoint/token-usage-historical.mdx b/es/v1/api-reference/endpoint/token-usage-historical.mdx index 648d4497..f4922342 100644 --- a/es/v1/api-reference/endpoint/token-usage-historical.mdx +++ b/es/v1/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Uso histórico de tokens' -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- Devuelve el uso histórico de tokens mes a mes. El punto de conexión también puede, opcionalmente, desglosar el uso por clave de API. \ No newline at end of file diff --git a/es/v1/api-reference/endpoint/token-usage.mdx b/es/v1/api-reference/endpoint/token-usage.mdx index 447f8d32..56e8acba 100644 --- a/es/v1/api-reference/endpoint/token-usage.mdx +++ b/es/v1/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de tokens' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Nota: Ya está disponible una [versión v2 de esta API](/es/api-reference/endpoint/token-usage) con funciones y rendimiento mejorados. \ No newline at end of file diff --git a/es/v1/api-reference/v1-openapi.json b/es/v1/api-reference/v1-openapi.json new file mode 100644 index 00000000..dd90210e --- /dev/null +++ b/es/v1/api-reference/v1-openapi.json @@ -0,0 +1,3387 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "API para interactuar con los servicios de Firecrawl y realizar tareas de scraping y rastreo web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Realiza scraping de una única URL y, opcionalmente, extrae información usando un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL a rastrear" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, se desactivará la retención de datos para esta extracción. Para habilitar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Pago requerido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Scrapea múltiples URLs y, opcionalmente, extrae información con un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "La URL de la que se extraerán datos" + } + }, + "webhook": { + "type": "object", + "description": "Un objeto de especificación de webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que enviar el webhook. Este se activará cuando se inicie un scraping por lotes (batch_scrape.started), en cada página procesada (batch_scrape.page) y cuando el scraping por lotes se complete (batch_scrape.completed o batch_scrape.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Encabezados que se deben enviar a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todas las cargas útiles de los webhooks de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que deben enviarse a la URL del webhook. (por defecto: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes concurrentes. Este parámetro te permite establecer un límite de concurrencia para este scraping por lotes. Si no se especifica, el scraping por lotes se ajusta al límite de concurrencia de tu equipo." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si se especifican URLs no válidas en el array urls, se ignorarán. En lugar de que falle toda la solicitud, se creará un scraping por lotes usando las URLs válidas restantes y las URLs no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si es true, no se conservará ningún dato de este scraping por lotes. Para habilitar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del proceso de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de una tarea de scraping por lotes", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar un trabajo de scraping por lotes", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación completada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de scraping por lotes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de una tarea de scraping por lotes", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pago requerido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de un trabajo de rastreo", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar una tarea de rastreo", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación realizada correctamente", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de rastreo", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID del trabajo de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de una tarea de rastreo", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pago requerido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear varias URL según opciones", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se iniciará el rastreo" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares (regex) para rutas de URL que excluyen del rastreo las URL que coincidan. Por ejemplo, si configuras `\"excludePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, se excluirán todos los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares para el pathname de la URL que determinan qué URLs se incluyen en el crawl. Solo las rutas que coincidan con los patrones especificados se incluirán en la respuesta. Por ejemplo, si configuras `\"includePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, solo se incluirán los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDepth": { + "type": "integer", + "description": "Profundidad absoluta máxima a rastrear desde la base de la URL indicada. Básicamente, es el número máximo de barras diagonales (/) que puede contener la ruta (pathname) de una URL rastreada.", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidad máxima de rastreo basada en el orden de descubrimiento. El sitio raíz y las páginas del sitemap tienen una profundidad de descubrimiento de 0. Por ejemplo, si lo configuras en 1 y estableces ignoreSitemap, solo se rastreará la URL introducida y todas las URL que estén enlazadas en esa página." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar el sitemap del sitio web durante el rastreo", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "No vuelvas a hacer scraping de la misma ruta con parámetros de consulta diferentes (o sin parámetros)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a rastrear. El límite predeterminado es 10.000.", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ OBSOLETO: usa 'crawlEntireDomain' en su lugar. Permite que el rastreador siga enlaces internos a URLs del mismo nivel o superiores, no solo rutas hijas.", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que el crawler siga enlaces internos a URLs hermanas o superiores (padre), no solo a rutas hijas.\n\nfalse: Solo rastrea URLs más profundas (hijas).\n→ p. ej. /features/feature-1 → /features/feature-1/tips ✅\n→ No seguirá /pricing ni / ❌\n\ntrue: Rastrea cualquier enlace interno, incluidos hermanos y padres.\n→ p. ej. /features/feature-1 → /pricing, /, etc. ✅\n\nUsa true para una cobertura interna más amplia, más allá de las rutas anidadas.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a sitios externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces hacia subdominios del dominio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalo, en segundos, entre scrapes. Esto ayuda a respetar los límites de frecuencia del sitio web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de procesos de scraping simultáneos. Este parámetro te permite establecer un límite de concurrencia para este rastreo. Si no se especifica, el rastreo se ajusta al límite de concurrencia de tu equipo." + }, + "webhook": { + "type": "object", + "description": "Objeto de especificación de un webhook.", + "properties": { + "url": { + "type": "string", + "description": "URL a la que enviar el webhook. Se activará cuando se inicie el rastreo (crawl.started), en cada página rastreada (crawl.page) y cuando el rastreo se complete (crawl.completed o crawl.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Encabezados que se enviarán a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook. (valor predeterminado: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, se habilitará la ausencia total de retención de datos para este rastreo. Para activar esta función, ponte en contacto con help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear varias URL en función de las opciones", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se comenzará a rastrear" + }, + "search": { + "type": "string", + "description": "Consulta de búsqueda que se usará para el mapeo. Durante la fase alfa, la parte «inteligente» de la funcionalidad de búsqueda está limitada a 500 resultados. Sin embargo, si map encuentra más resultados, no se impone ningún límite." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar el sitemap del sitio web al rastrear.", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "Devuelve solo los enlaces encontrados en el sitemap del sitio web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir los subdominios del sitio web", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de enlaces a devolver", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos. No hay tiempo de espera de forma predeterminada." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Pago requerido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraer datos estructurados de páginas con LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Las URL de las que se extraerán datos. Deben estar en formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt para orientar el proceso de extracción" + }, + "schema": { + "type": "object", + "description": "Esquema que define la estructura de los datos extraídos. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Si está establecido en true, la extracción utilizará la búsqueda web para encontrar datos adicionales", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Si es true, se ignorarán los archivos sitemap.xml durante el escaneo del sitio web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Si es true, también se escanearán los subdominios de las URL proporcionadas", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Si es `true`, las fuentes utilizadas para extraer los datos se incluirán en la respuesta en la clave `sources`", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si se especifican URLs no válidas en el array urls, se ignorarán. En lugar de hacer que falle toda la solicitud, se realizará una extracción usando las URLs válidas restantes y se devolverán las URLs no válidas en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extracción exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitud no válida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de extracción", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de una tarea de extracción", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obtener todos los rastreos activos del equipo autenticado", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "El identificador único del rastreo" + }, + "teamId": { + "type": "string", + "description": "El ID del equipo al que pertenece el rastreo" + }, + "url": { + "type": "string", + "format": "uri", + "description": "La URL de origen del rastreo" + }, + "options": { + "type": "object", + "description": "Las opciones del rastreador utilizadas en este rastreo", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "Iniciar una operación de investigación exhaustiva para una consulta", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La consulta para investigar" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "Profundidad máxima de iteraciones de investigación" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "Límite de tiempo en segundos" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "Número máximo de URL a analizar" + }, + "analysisPrompt": { + "type": "string", + "description": "El prompt que se usará para el análisis final. Útil para formatear el markdown del análisis final de una forma específica." + }, + "systemPrompt": { + "type": "string", + "description": "El prompt de sistema que se usará para el agente de investigación. Útil para dirigir al agente de investigación hacia una dirección específica." + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "Opciones de salida en JSON", + "properties": { + "schema": { + "type": "object", + "description": "El esquema que se utilizará para la salida en formato JSON. Debe cumplir con [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "El prompt del sistema que se usará para la salida JSON" + }, + "prompt": { + "type": "string", + "description": "El prompt que se usará para la salida JSON" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "La tarea de investigación se inició correctamente", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tarea de investigación" + } + } + } + } + } + }, + "400": { + "description": "Parámetros de la solicitud no válidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID de la tarea de investigación", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado y los resultados de una operación de investigación exhaustiva", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "Se muestra al usar el formato JSON", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de investigación", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Consultar los créditos restantes del equipo autenticado", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "Créditos restantes del equipo", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "Número de créditos del plan. Esto no incluye créditos de cupones, paquetes de créditos ni créditos de recarga automática.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación. null si utilizas el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Información sobre el uso de créditos no encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtener el uso histórico de créditos del equipo autenticado", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el uso histórico de créditos por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API utilizada en el período de facturación. null si byApiKey es false (valor predeterminado)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos utilizados en el período de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obtener los tokens restantes para el equipo autenticado (solo para Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "Número de tokens restantes del equipo", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "Número de tokens incluidos en el plan. No incluye tokens de cupón.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación. null si se usa el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró información sobre el uso de tokens", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtener historial de uso de tokens del equipo autenticado (solo Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el historial de uso de tokens por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta exitosa", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API usada durante el período de facturación. null si byApiKey es false (valor predeterminado)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados en el periodo de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Buscar y, opcionalmente, hacer scraping de los resultados de búsqueda", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Consulta de búsqueda" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados que se devolverán", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "Parámetro de búsqueda basado en el tiempo. Permite rangos de tiempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) y rangos de fechas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parámetro de ubicación de los resultados de búsqueda" + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Excluye de los resultados de búsqueda las URL que no son válidas para otros endpoints de Firecrawl. Esto ayuda a reducir errores si canalizas datos desde la búsqueda hacia otros endpoints de la API de Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "Opciones para hacer scraping de resultados de búsqueda", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del resultado de la búsqueda" + }, + "description": { + "type": "string", + "description": "Descripción del resultado de la búsqueda" + }, + "url": { + "type": "string", + "description": "URL del resultado de la búsqueda" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenido en formato Markdown si se solicitó scraping" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenido HTML si se solicita en los formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar si se solicita en los formatos correspondientes" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Enlaces encontrados si se solicitan en estos formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la captura de pantalla si se ha solicitado en los formatos" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensaje de advertencia si se presentan problemas" + } + } + } + } + } + }, + "408": { + "description": "Tiempo de espera de la solicitud superado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "Generar el archivo LLMs.txt para un sitio web", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL a partir de la cual generar LLMs.txt" + }, + "maxUrls": { + "type": "integer", + "description": "Número máximo de URLs a analizar", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "Incluye todo el contenido de texto en la respuesta", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "La tarea de generación de LLMs.txt se ha iniciado correctamente", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tarea de generación de LLMs.txt" + } + } + } + } + } + }, + "400": { + "description": "Parámetros de la solicitud no válidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID de la tarea de generación de LLMs.txt", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado y los resultados de una tarea de generación de LLMs.txt", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "El contenido generado en LLMs.txt" + }, + "llmsfulltxt": { + "type": "string", + "description": "El texto completo cuando showFullText es true" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Cuándo vencerá el contenido generado" + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de generación de LLMs.txt", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve únicamente el contenido principal de la página, excluyendo encabezados, elementos de navegación, pies de página, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se deben incluir en la salida." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se excluirán del resultado." + }, + "maxAge": { + "type": "integer", + "description": "Devuelve una versión en caché de la página si tiene una antigüedad menor que este valor en milisegundos. Si la versión en caché de la página es más antigua que este valor, se volverá a hacer scraping de la página. Si no necesitas datos extremadamente recientes, activar esto puede acelerar tus operaciones de scraping hasta un 500%. El valor predeterminado es 0, lo que desactiva la caché.", + "default": 0 + }, + "headers": { + "type": "object", + "description": "Cabeceras que se enviarán con la solicitud. Pueden utilizarse para enviar cookies, user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Especifica un retraso, en milisegundos, antes de recuperar el contenido, permitiendo que la página tenga tiempo suficiente para cargarse.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Configúralo en true si quieres emular el scraping desde un dispositivo móvil. Útil para probar páginas responsive y tomar capturas de pantalla móviles.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Omitir la verificación del certificado TLS al realizar solicitudes", + "default": false + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera de la solicitud en milisegundos", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "Controla cómo se procesan los archivos PDF durante el scraping. Cuando es true, el contenido del PDF se extrae y se convierte a formato Markdown, y la facturación se basa en el número de páginas (1 crédito por página). Cuando es false, el archivo PDF se devuelve en codificación base64 con una tarifa plana de 1 crédito en total.", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "Objeto de opciones JSON", + "properties": { + "schema": { + "type": "object", + "description": "Esquema que se utilizará para la extracción (opcional). Debe cumplir con [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "El prompt del sistema que se usará para la extracción (opcional)" + }, + "prompt": { + "type": "string", + "description": "Prompt que se usará para la extracción sin esquema (opcional)" + } + } + }, + "actions": { + "type": "array", + "description": "Acciones que se deben realizar en la página antes de extraer el contenido", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Espera una cantidad determinada de milisegundos" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milisegundos que esperar" + }, + "selector": { + "type": "string", + "description": "Query selector para encontrar el elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Realiza una captura de pantalla. Los enlaces se devolverán en el array `actions.screenshots` de la respuesta." + }, + "fullPage": { + "type": "boolean", + "description": "Indica si se debe capturar una captura de pantalla de toda la página o solo del área visible actual (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "La calidad de la captura de pantalla, de 1 a 100. 100 es la máxima calidad." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Haz clic en un elemento" + }, + "selector": { + "type": "string", + "description": "Selector de consulta para localizar el elemento mediante", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Hace clic en todos los elementos que coinciden con el selector, no solo en el primero. No genera un error si no hay elementos que coincidan con el selector.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Escribe texto en un campo de entrada, un área de texto o un elemento con contenteditable. Nota: primero debes enfocar el elemento usando una acción de 'click' antes de escribir. El texto se escribirá carácter por carácter para simular la entrada por teclado." + }, + "text": { + "type": "string", + "description": "Texto para escribir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pulsa una tecla en la página. Consulta https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para obtener los códigos de teclas.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pulsa una tecla en la página" + }, + "key": { + "type": "string", + "description": "Tecla que se debe pulsar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Desplazar la página o un elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Dirección de desplazamiento", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Selector de consulta del elemento que se desplazará", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrae el contenido de la página actual y devuelve la URL y el HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Ejecutar código JavaScript en la página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ejecutar", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Genera un PDF de la página actual. El PDF se devolverá en el array `actions.pdfs` de la respuesta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "El tamaño de página del PDF generado", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Define si se debe generar el PDF en orientación horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "El factor de escala del PDF resultante", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configuración de ubicación de la solicitud. Cuando se especifica, se utilizará un proxy adecuado, si está disponible, y se emularán los ajustes de idioma y zona horaria correspondientes. Si no se especifica, el valor predeterminado es 'US'.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (p. ej., \"US\", \"AU\", \"DE\", \"JP\")", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas y configuraciones regionales preferidos para la solicitud, en orden de prioridad. De forma predeterminada, se utiliza el idioma de la ubicación especificada. Consulta https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Elimina todas las imágenes codificadas en base64 de la salida, que pueden ser extremadamente largas. El texto alternativo (atributo alt) de la imagen se mantiene en la salida, pero la URL se sustituye por un marcador de posición.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita el bloqueo de anuncios y de ventanas emergentes de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica el tipo de proxy que se va a usar.\n\n - **basic**: Proxies para hacer scraping de sitios sin o con soluciones antibots básicas. Rápido y normalmente funciona.\n - **stealth**: Proxies stealth para hacer scraping de sitios con soluciones antibots avanzadas. Más lento, pero más fiable en ciertos sitios. Cuesta hasta 5 créditos por solicitud.\n - **auto**: Firecrawl reintentará automáticamente el scraping con proxies stealth si el proxy basic falla. Si el reintento con stealth tiene éxito, se facturarán 5 créditos por el scraping. Si el primer intento con basic tiene éxito, solo se facturará el coste normal.\n\nSi no especificas un proxy, Firecrawl usará basic de forma predeterminada." + }, + "storeInCache": { + "type": "boolean", + "description": "Si es true, la página se almacenará en el índice y la caché de Firecrawl. Establecerlo en false es útil si tu actividad de scraping puede implicar problemas de protección de datos. El uso de algunos parámetros asociados con scraping de datos sensibles (acciones, headers) forzará que este parámetro sea false.", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "Formatos que se incluirán en el resultado.", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "Opciones de seguimiento de cambios (beta). Solo se aplica cuando 'changeTracking' está incluido en formatos. También se debe especificar el formato 'markdown' al usar el seguimiento de cambios.", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "Modo a utilizar para el seguimiento de cambios. 'git-diff' ofrece un diff detallado y 'json' compara los datos JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema para la extracción JSON al usar el modo `json`. Define la estructura de los datos que se van a extraer y comparar. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt que se usará para el seguimiento de cambios cuando se utilice el modo `json`. Si no se proporciona, se usará el prompt predeterminado." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Etiqueta que se usará para el seguimiento de cambios. Las etiquetas pueden separar el historial de seguimiento de cambios en «ramas» independientes, donde el seguimiento de cambios con una etiqueta específica solo se comparará con scrapes realizados con la misma etiqueta. Si no se proporciona, se utilizará la etiqueta predeterminada (null)." + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `html` se incluye en `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar de la página si `rawHtml` se incluye en `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `screenshot` está incluido en `formats`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces en la página si `links` está en `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados de las acciones especificadas en el parámetro `actions`. Solo se incluye si se proporcionó el parámetro `actions` en la solicitud", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs de las capturas de pantalla, en el mismo orden que las acciones de captura proporcionadas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extrae el contenido en el mismo orden en que se ejecuten las acciones de scraping proporcionadas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores devueltos por JavaScript, en el mismo orden que las acciones executeJavascript proporcionadas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDF generados, en el mismo orden que las acciones de PDF proporcionadas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Se muestra cuando se usa LLM Extraction. Datos extraídos de la página siguiendo el esquema definido.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Puede mostrarse cuando se use LLM Extraction. El mensaje de advertencia te indicará cualquier problema con la extracción." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Información de seguimiento de cambios si `changeTracking` está en `formats`. Solo se muestra cuando se solicita el formato `changeTracking`.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Marca de tiempo del rastreo anterior con el que se compara la página actual. null si no existe un rastreo anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "El resultado de comparar las dos versiones de la página. «new» indica que esta página no existía antes, «same» indica que el contenido no ha cambiado, «changed» indica que el contenido ha cambiado y «removed» indica que la página se ha eliminado." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilidad de la página/URL actual. \"visible\" significa que la URL se descubrió de forma orgánica (a través de enlaces o del sitemap); \"hidden\" significa que la URL se descubrió a partir de la memoria de rastreos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diferencias al estilo Git de los cambios cuando se utiliza el modo `git-diff`. Solo se incluye cuando el modo está establecido en `git-diff`." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados de la comparación en formato JSON cuando se usa el modo `json`. Solo está disponible cuando el modo se establece en `json`. Generará una lista de todas las claves y sus valores de los scrapes `previous` y `current` según el tipo definido en el `schema`. Ejemplo [aquí](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del proceso de rastreo. Puede ser `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas que se intentaron rastrear." + }, + "completed": { + "type": "integer", + "description": "El número de páginas que se han rastreado correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "El número de créditos consumidos por el rastreo." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Fecha y hora de vencimiento del rastreo." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para obtener los siguientes 10 MB de datos. Se devuelve si el rastreo no ha finalizado o si la respuesta es mayor de 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos del rastreo.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `includeHtml` es `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces en la página si `includeLinks` es true" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Trabajos de scraping con errores y detalles de errores", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Marca de tiempo ISO del error" + }, + "url": { + "type": "string", + "description": "URL rastreada" + }, + "error": { + "type": "string", + "description": "Mensaje de error" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs que se intentaron rastrear pero que fueron bloqueadas por robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del proceso de scraping por lotes. Puede ser `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas que se intentaron extraer mediante scraping." + }, + "completed": { + "type": "integer", + "description": "El número de páginas que se han extraído correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "Número de créditos utilizados para el scraping por lotes." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y la hora en que vencerá la extracción por lotes." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para obtener los siguientes 10 MB de datos. Se devuelve si el scraping por lotes no ha finalizado o si la respuesta supera los 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos de la extracción por lotes.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página cuando `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces en la página si `includeLinks` es verdadero" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contiene las URL no válidas especificadas en la solicitud. Si no hubo URL no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contenga las URLs no válidas especificadas en la solicitud. Si no hubo URLs no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "El estado actual de la tarea de extracción" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/es/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx b/es/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx index 08b0a73a..1470e0ac 100644 --- a/es/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx +++ b/es/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "Cancelar extracción en lote" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' ---
diff --git a/es/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx b/es/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx index fd1639e7..78fa48d1 100644 --- a/es/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx +++ b/es/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener errores de scraping por lotes' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' ---
diff --git a/es/v1/api-reference/v2-endpoint/batch-scrape-get.mdx b/es/v1/api-reference/v2-endpoint/batch-scrape-get.mdx index a14cceeb..d1b9385f 100644 --- a/es/v1/api-reference/v2-endpoint/batch-scrape-get.mdx +++ b/es/v1/api-reference/v2-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado de la extracción por lotes' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' ---
diff --git a/es/v1/api-reference/v2-endpoint/batch-scrape.mdx b/es/v1/api-reference/v2-endpoint/batch-scrape.mdx index fb965837..687b315f 100644 --- a/es/v1/api-reference/v2-endpoint/batch-scrape.mdx +++ b/es/v1/api-reference/v2-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Raspado en lote' -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' ---
diff --git a/es/v1/api-reference/v2-endpoint/crawl-active.mdx b/es/v1/api-reference/v2-endpoint/crawl-active.mdx index 443d4457..c960ca39 100644 --- a/es/v1/api-reference/v2-endpoint/crawl-active.mdx +++ b/es/v1/api-reference/v2-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: "Obtener rastreos activos" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' ---
diff --git a/es/v1/api-reference/v2-endpoint/crawl-delete.mdx b/es/v1/api-reference/v2-endpoint/crawl-delete.mdx index d307300b..a238a54f 100644 --- a/es/v1/api-reference/v2-endpoint/crawl-delete.mdx +++ b/es/v1/api-reference/v2-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "Cancelar rastreo" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' ---
diff --git a/es/v1/api-reference/v2-endpoint/crawl-get-errors.mdx b/es/v1/api-reference/v2-endpoint/crawl-get-errors.mdx index 2baa3308..82a7b3b0 100644 --- a/es/v1/api-reference/v2-endpoint/crawl-get-errors.mdx +++ b/es/v1/api-reference/v2-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener errores del rastreo' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' ---
diff --git a/es/v1/api-reference/v2-endpoint/crawl-get.mdx b/es/v1/api-reference/v2-endpoint/crawl-get.mdx index d74e8a0f..82003c7f 100644 --- a/es/v1/api-reference/v2-endpoint/crawl-get.mdx +++ b/es/v1/api-reference/v2-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtener el estado del rastreo" -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' ---
diff --git a/es/v1/api-reference/v2-endpoint/crawl-post.mdx b/es/v1/api-reference/v2-endpoint/crawl-post.mdx index bbfc96c1..313a303d 100644 --- a/es/v1/api-reference/v2-endpoint/crawl-post.mdx +++ b/es/v1/api-reference/v2-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v2-openapi POST /crawl' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -20,7 +20,6 @@ Describe qué debe rastrear en inglés sencillo: } ``` -
### Mejor control de sitemaps
diff --git a/es/v1/api-reference/v2-endpoint/credit-usage-historical.mdx b/es/v1/api-reference/v2-endpoint/credit-usage-historical.mdx index 77c1bead..aeafd682 100644 --- a/es/v1/api-reference/v2-endpoint/credit-usage-historical.mdx +++ b/es/v1/api-reference/v2-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Uso histórico de créditos" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- Devuelve el uso histórico de créditos mes a mes. El punto de conexión también puede, opcionalmente, desglosar el uso por clave de API. \ No newline at end of file diff --git a/es/v1/api-reference/v2-endpoint/credit-usage.mdx b/es/v1/api-reference/v2-endpoint/credit-usage.mdx index bf2ce645..1bc7de34 100644 --- a/es/v1/api-reference/v2-endpoint/credit-usage.mdx +++ b/es/v1/api-reference/v2-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de créditos' -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' ---
diff --git a/es/v1/api-reference/v2-endpoint/extract-get.mdx b/es/v1/api-reference/v2-endpoint/extract-get.mdx index a4b527a5..b46fe8c5 100644 --- a/es/v1/api-reference/v2-endpoint/extract-get.mdx +++ b/es/v1/api-reference/v2-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtener el estado de la extracción' -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' ---
diff --git a/es/v1/api-reference/v2-endpoint/extract.mdx b/es/v1/api-reference/v2-endpoint/extract.mdx index d51022c4..4b70d158 100644 --- a/es/v1/api-reference/v2-endpoint/extract.mdx +++ b/es/v1/api-reference/v2-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extraer' -openapi: 'v2-openapi POST /extract' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /extract' ---
diff --git a/es/v1/api-reference/v2-endpoint/map.mdx b/es/v1/api-reference/v2-endpoint/map.mdx index c15a00a7..b6ef2ad0 100644 --- a/es/v1/api-reference/v2-endpoint/map.mdx +++ b/es/v1/api-reference/v2-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Mapear" -openapi: 'v2-openapi POST /map' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ Tres formas de gestionar los sitemaps: } ``` -
### Descubrimiento de URL más inteligente
diff --git a/es/v1/api-reference/v2-endpoint/scrape.mdx b/es/v1/api-reference/v2-endpoint/scrape.mdx index e4946520..bcb45841 100644 --- a/es/v1/api-reference/v2-endpoint/scrape.mdx +++ b/es/v1/api-reference/v2-endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: 'Extraer' -openapi: 'v2-openapi POST /scrape' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/es/v1/api-reference/v2-endpoint/search.mdx b/es/v1/api-reference/v2-endpoint/search.mdx index 6e850d33..334dbda1 100644 --- a/es/v1/api-reference/v2-endpoint/search.mdx +++ b/es/v1/api-reference/v2-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Buscar" -openapi: 'v2-openapi POST /search' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -24,7 +24,6 @@ Busca web, imágenes y noticias al mismo tiempo: } ``` -
### Formato de respuesta cambiado
@@ -42,7 +41,6 @@ v1: lista simple de resultados. v2: organizado por tipo de origen: } ``` -
### Novedades
diff --git a/es/v1/api-reference/v2-endpoint/token-usage-historical.mdx b/es/v1/api-reference/v2-endpoint/token-usage-historical.mdx index 413aa50a..5a838e5c 100644 --- a/es/v1/api-reference/v2-endpoint/token-usage-historical.mdx +++ b/es/v1/api-reference/v2-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Uso histórico de tokens" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- Devuelve el uso histórico de tokens mes a mes. Este punto de conexión también puede, opcionalmente, desglosar el uso por clave de API. \ No newline at end of file diff --git a/es/v1/api-reference/v2-endpoint/token-usage.mdx b/es/v1/api-reference/v2-endpoint/token-usage.mdx index bce932e2..8191ac7d 100644 --- a/es/v1/api-reference/v2-endpoint/token-usage.mdx +++ b/es/v1/api-reference/v2-endpoint/token-usage.mdx @@ -1,4 +1,4 @@ --- title: "Uso de tokens" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/es/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- \ No newline at end of file diff --git a/es/v1/api-reference/v2-openapi.json b/es/v1/api-reference/v2-openapi.json new file mode 100644 index 00000000..beaf871d --- /dev/null +++ b/es/v1/api-reference/v2-openapi.json @@ -0,0 +1,3261 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "API para interactuar con los servicios de Firecrawl y realizar tareas de scraping y rastreo web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Rastrea una sola URL y, opcionalmente, extrae información con un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL que se va a rastrear" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si es true, se desactivará la retención de datos para este scrape. Para activar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Realiza scraping de varias URL y, opcionalmente, extrae información con un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "La URL que se va a extraer" + } + }, + "webhook": { + "type": "object", + "description": "Objeto de especificación de webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que se enviará el webhook. Se activará cuando se inicie el scraping por lotes (batch_scrape.started), en cada página procesada (batch_scrape.page) y cuando el scraping por lotes finalice (batch_scrape.completed o batch_scrape.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Encabezados que se deben enviar a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook. (por defecto: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de extracciones concurrentes. Este parámetro te permite establecer un límite de concurrencia para este lote de extracción. Si no se especifica, el lote de extracción se ajusta al límite de concurrencia de tu equipo." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si se especifican URL no válidas en el arreglo urls, se ignorarán. En lugar de que provoquen el fallo de toda la solicitud, se creará un scraping por lotes usando las URL válidas restantes, y las URL no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, no se conservarán datos de este scraping por lotes. Para activar esta función, ponte en contacto con help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del proceso de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado de un trabajo de scraping por lotes", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar un trabajo de scraping en lote", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación completada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "No se encontró el trabajo de scraping por lotes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del proceso de scraping por lotes", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de una tarea de scraping por lotes", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtén el estado de una tarea de rastreo", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar una tarea de rastreo", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelación correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Trabajo de rastreo no encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID de la tarea de rastreo", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener los errores de una tarea de rastreo", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear varias URL según las opciones proporcionadas", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que comenzar el rastreo" + }, + "prompt": { + "type": "string", + "description": "Un prompt que se usará para generar las opciones del crawler (todos los parámetros de abajo) a partir de lenguaje natural. Los parámetros establecidos explícitamente tendrán prioridad sobre los equivalentes generados." + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares para rutas (pathname) de URL que excluyen del rastreo las URL coincidentes. Por ejemplo, si defines `\"excludePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, se excluirán todos los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Patrones de expresiones regulares para el pathname de la URL que determinan qué URLs se incluyen en el rastreo. Solo las rutas que coincidan con los patrones especificados se incluirán en la respuesta. Por ejemplo, si configuras `\"includePaths\": [\"blog/.*\"]` para la URL base firecrawl.dev, solo se incluirán los resultados que coincidan con ese patrón, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidad máxima de rastreo basada en el orden de descubrimiento. El sitio raíz y las páginas del sitemap tienen una profundidad de descubrimiento de 0. Por ejemplo, si la configuras en 1 y activas ignoreSitemap, solo se rastreará la URL introducida y todas las URL que estén enlazadas en esa página." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Modo de sitemap durante el rastreo. Si lo configuras en «skip», el rastreador ignorará el sitemap del sitio web y solo rastreará la URL introducida y descubrirá páginas a partir de ahí.", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "No vuelvas a hacer scraping de la misma ruta con distintos parámetros de consulta (o sin parámetros).", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas para rastrear. El límite predeterminado es 10.000.", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que el crawler siga enlaces internos a URLs hermanas o padre, no solo a rutas hijas.\n\nfalse: Solo rastrea URLs más profundas (hijas).\n→ p. ej. /features/feature-1 → /features/feature-1/tips ✅\n→ No seguirá /pricing ni / ❌\n\ntrue: Rastrea cualquier enlace interno, incluidas URLs hermanas y padre.\n→ p. ej. /features/feature-1 → /pricing, /, etc. ✅\n\nUsa true para obtener una cobertura interna más amplia, más allá de rutas anidadas.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a sitios externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que el rastreador siga enlaces a subdominios del dominio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalo en segundos entre scrapes. Ayuda a respetar los límites de frecuencia del sitio web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes simultáneos. Este parámetro te permite definir un límite de concurrencia para este rastreo. Si no se especifica, el rastreo se ajusta al límite de concurrencia de tu equipo." + }, + "webhook": { + "type": "object", + "description": "Un objeto de especificación de un webhook.", + "properties": { + "url": { + "type": "string", + "description": "La URL a la que se enviará el webhook. Este se activará cuando se inicie el rastreo (crawl.started), por cada página rastreada (crawl.page) y cuando se complete el rastreo (crawl.completed o crawl.failed). La respuesta será la misma que la del endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Encabezados que se enviarán a la URL del webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadatos personalizados que se incluirán en todos los payloads de webhook de este rastreo", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que se enviarán a la URL del webhook. (valor predeterminado: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si se establece en true, se desactivará la retención de datos para este rastreo. Para habilitar esta función, ponte en contacto con help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear múltiples URL según las opciones", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "La URL base desde la que se iniciará el rastreo" + }, + "search": { + "type": "string", + "description": "Consulta de búsqueda que se utilizará para el mapeo. Durante la fase alfa, la parte “inteligente” de la funcionalidad de búsqueda está limitada a 500 resultados. Sin embargo, si map encuentra más resultados, no se aplica ningún límite." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "Modo de sitemap al mapear. Si lo configuras en `skip`, no se utilizará el sitemap para encontrar URL. Si lo configuras en `only`, solo se devolverán las URL que estén en el sitemap. De forma predeterminada (`include`), el sitemap y otros métodos se utilizarán conjuntamente para encontrar URL.", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdominios del sitio", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "No devolver URLs con parámetros de consulta", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de enlaces que se devolverán", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos. De forma predeterminada, no hay tiempo de espera." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas solicitudes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extrae datos estructurados de páginas con LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Las URL de las que se extraerán datos. Las URL deben estar en formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt que guía el proceso de extracción" + }, + "schema": { + "type": "object", + "description": "Esquema que define la estructura de los datos extraídos. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Cuando sea true, la extracción utilizará la búsqueda web para encontrar datos adicionales", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Si es true, se ignorarán los archivos sitemap.xml durante el escaneo del sitio web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Si se establece en true, también se rastrearán los subdominios de las URL proporcionadas", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Cuando es `true`, las fuentes utilizadas para extraer los datos se incluirán en la respuesta como la clave `sources`.", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si se especifican URLs no válidas en el array urls, se ignorarán. En lugar de hacer que falle toda la solicitud, se realizará una extracción con las URLs válidas restantes y las URLs no válidas se devolverán en el campo invalidURLs de la respuesta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extracción exitosa", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitud no válida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "El ID del trabajo de extracción", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtener el estado de una tarea de extracción", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obtener todos los rastreos activos del equipo autenticado", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "El identificador único del rastreo" + }, + "teamId": { + "type": "string", + "description": "ID del equipo propietario del rastreo" + }, + "url": { + "type": "string", + "format": "uri", + "description": "La URL de inicio del rastreo" + }, + "options": { + "type": "object", + "description": "Opciones del rastreador usadas en este rastreo", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Se requiere pago", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Demasiadas peticiones", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obtener los créditos restantes del equipo autenticado", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "Créditos restantes del equipo", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "Número de créditos del plan. Esto no incluye créditos provenientes de cupones, paquetes de créditos ni créditos de recarga automática.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación. null si utilizas el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Fecha de finalización del período de facturación. null si se utiliza el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Información sobre el uso de créditos no encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtener el historial de uso de créditos del equipo autenticado", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el historial de uso de créditos por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API utilizada en el período de facturación. null si byApiKey es false (predeterminado)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Total de créditos consumidos durante el período de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obtener tokens restantes para el equipo autenticado (solo Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Respuesta correcta", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "Número de tokens restantes del equipo", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "Número de tokens del plan. Esto no incluye los tokens de cupones.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del período de facturación. null si utilizas el plan gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación. null si se usa el plan gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "No se encontró información sobre el uso de tokens", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtener el uso histórico de tokens del equipo autenticado (solo Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtener el uso histórico de tokens por clave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de inicio del periodo de facturación", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Fecha de fin del período de facturación", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nombre de la clave de API utilizada durante el período de facturación. null si byApiKey es false (valor predeterminado)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados en el período de facturación", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Buscar y, opcionalmente, extraer datos de los resultados de búsqueda", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La consulta de búsqueda" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados a devolver", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Parámetro de búsqueda basado en el tiempo. Permite intervalos de tiempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) y rangos de fechas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parámetro de ubicación para resultados de búsqueda" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Fuentes en las que buscar. Determinan los arrays disponibles en la respuesta.", + "default": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Parámetro de búsqueda basado en el tiempo. Admite intervalos de tiempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de fechas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Parámetro de ubicación para resultados de búsqueda" + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera en milisegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Excluye de los resultados de búsqueda las URL que no son válidas para otros endpoints de Firecrawl. Esto ayuda a reducir errores si canalizas datos desde la búsqueda a otros endpoints de la API de Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "Opciones para scrapear resultados de búsqueda", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Respuesta satisfactoria", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del resultado de la búsqueda" + }, + "description": { + "type": "string", + "description": "Descripción del resultado de la búsqueda" + }, + "url": { + "type": "string", + "description": "URL del resultado de la búsqueda" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenido en Markdown si se ha solicitado scraping" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenido HTML si se solicita en los formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar si se solicita en los formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Enlaces encontrados si se solicitan en los formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la captura de pantalla si se solicita en los formatos" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del resultado de la búsqueda" + }, + "imageUrl": { + "type": "string", + "description": "URL de la imagen" + }, + "imageWidth": { + "type": "integer", + "description": "Ancho de la imagen" + }, + "imageHeight": { + "type": "integer", + "description": "Altura de la imagen" + }, + "url": { + "type": "string", + "description": "URL del resultado de la búsqueda" + }, + "position": { + "type": "integer", + "description": "Posición del resultado de la búsqueda" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título del artículo" + }, + "snippet": { + "type": "string", + "description": "Fragmento del artículo" + }, + "url": { + "type": "string", + "description": "URL del artículo" + }, + "date": { + "type": "string", + "description": "Fecha del artículo" + }, + "imageUrl": { + "type": "string", + "description": "URL de la imagen del artículo" + }, + "position": { + "type": "integer", + "description": "Posición del artículo" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenido en formato Markdown si se solicitó scraping" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenido HTML si se solicita en los formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML sin procesar, si se solicita en los formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Enlaces encontrados si se solicitan en los formatos correspondientes" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la captura de pantalla si se solicita en los formatos" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "Los resultados de la búsqueda. Los arrays disponibles dependerán de las fuentes especificadas en la solicitud. De forma predeterminada, se devolverá el array `web`." + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensaje de advertencia si se produce algún problema" + } + } + } + } + } + }, + "408": { + "description": "Tiempo de espera de la solicitud excedido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Error del servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "Indica si se debe tomar una captura de pantalla de toda la página o solo del viewport actual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La calidad de la captura de pantalla, de 1 a 100; 100 es la máxima calidad." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "El ancho del viewport en píxeles" + }, + "height": { + "type": "integer", + "description": "La altura del viewport en píxeles" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "El esquema que se utilizará para la salida en JSON. Debe ajustarse al estándar [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "El prompt que se usará para la salida en formato JSON" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "El modo que se utilizará para el seguimiento de cambios. 'git-diff' proporciona un diff detallado y 'json' compara los datos JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema para extraer JSON al usar el modo `json`. Define la estructura de los datos que se deben extraer y comparar. Debe ajustarse a [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt que se usará para el seguimiento de cambios cuando se utilice el modo `json`. Si no se proporciona, se utilizará el prompt predeterminado." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Etiqueta que se usará para el seguimiento de cambios. Las etiquetas pueden separar el historial de seguimiento de cambios en “ramas” independientes, donde el seguimiento de cambios con una etiqueta específica solo se comparará con scrapes realizados con la misma etiqueta. Si no se proporciona, se usará la etiqueta por defecto (null)." + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Formatos de salida que incluir en la respuesta. Puedes especificar uno o varios formatos, ya sea como cadenas de texto (por ejemplo, `'markdown'`) o como objetos con opciones adicionales (por ejemplo, `{ type: 'json', schema: {...} }`). Algunos formatos requieren que se configuren opciones específicas. Ejemplo: `['markdown', { type: 'json', schema: {...} }]`.", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Devuelve únicamente el contenido principal de la página, excluyendo encabezados, navegación, pies de página, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que incluir en la salida." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Etiquetas que se excluirán de la salida." + }, + "maxAge": { + "type": "integer", + "description": "Devuelve una versión en caché de la página si su antigüedad es menor que este valor en milisegundos. Si la versión en caché de la página es más antigua que este valor, la página se volverá a extraer. Si no necesitas datos extremadamente recientes, activar esta opción puede acelerar tus extracciones hasta un 500 %. El valor predeterminado es 2 días.", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "Encabezados que se enviarán con la solicitud. Pueden usarse para enviar cookies, user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Especifica un retardo en milisegundos antes de obtener el contenido, permitiendo que la página tenga tiempo suficiente para cargarse.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Configúralo en `true` si quieres emular el scraping desde un dispositivo móvil. Útil para probar páginas responsive y tomar capturas de pantalla de la versión móvil.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Omitir la verificación de certificados TLS al realizar solicitudes", + "default": true + }, + "timeout": { + "type": "integer", + "description": "Tiempo de espera de la solicitud en milisegundos." + }, + "parsers": { + "type": "array", + "description": "Controla cómo se procesan los archivos durante el scraping. Cuando se incluye \"pdf\" (valor predeterminado), el contenido del PDF se extrae y se convierte al formato Markdown, con la facturación basada en el número de páginas (1 crédito por página). Cuando se pasa un array vacío, el archivo PDF se devuelve en codificación base64 con una tarifa plana de 1 crédito en total.", + "items": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "Acciones que se ejecutarán en la página antes de extraer el contenido", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Espera un número determinado de milisegundos" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milisegundos de espera" + }, + "selector": { + "type": "string", + "description": "Selector para encontrar el elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Toma una captura de pantalla. Los enlaces estarán disponibles en el array `actions.screenshots` de la respuesta." + }, + "fullPage": { + "type": "boolean", + "description": "Indica si se debe capturar una captura de pantalla de la página completa o solo del viewport actual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La calidad de la captura de pantalla, de 1 a 100. 100 es la máxima calidad." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "El ancho del viewport en píxeles" + }, + "height": { + "type": "integer", + "description": "La altura del viewport en píxeles" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Haz clic en un elemento" + }, + "selector": { + "type": "string", + "description": "Selector de consulta para buscar el elemento por", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Hace clic en todos los elementos que coinciden con el selector, no solo en el primero. No produce un error si ningún elemento coincide con el selector.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Escribe texto en un campo de texto, área de texto o elemento con contenido editable (contenteditable). Nota: primero debes enfocar el elemento haciendo clic en él antes de escribir. El texto se escribirá carácter por carácter para simular la entrada desde el teclado." + }, + "text": { + "type": "string", + "description": "Texto para escribir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pulsa una tecla en la página. Consulta https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para ver los códigos de teclas.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pulsa una tecla en la página" + }, + "key": { + "type": "string", + "description": "Tecla que se debe pulsar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Desplazar la página o un elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Dirección de desplazamiento", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Selector de consulta para el elemento que se va a desplazar", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Obtiene el contenido de la página actual y devuelve la URL y el HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Ejecutar código JavaScript en la página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ejecutar", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Genera un PDF de la página actual. El PDF se devolverá en el array `actions.pdfs` de la respuesta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "El tamaño de página del PDF generado", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Define si se debe generar el PDF en orientación horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "El factor de escala del PDF resultante", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configuración de ubicación para la solicitud. Cuando se especifica, usará un proxy adecuado si está disponible y emulará la configuración de idioma y zona horaria correspondientes. Si no se especifica, su valor predeterminado es \"US\".", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (p. ej., «US», «AU», «DE», «JP»)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas y configuraciones regionales preferidos para la solicitud en orden de prioridad. De forma predeterminada, se usa el idioma correspondiente a la ubicación especificada. Consulta https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Elimina todas las imágenes en base 64 de la salida, ya que pueden resultar excesivamente largas. El texto alternativo de la imagen se mantiene en la salida, pero la URL se reemplaza por un marcador de posición.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Permite el bloqueo de anuncios y de avisos emergentes de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica el tipo de proxy a usar.\n\n - **basic**: Proxies para hacer scraping de sitios sin soluciones anti‑bot o con soluciones básicas. Rápidos y suelen funcionar.\n - **stealth**: Proxies stealth para hacer scraping de sitios con soluciones anti‑bot avanzadas. Más lentos, pero más fiables en ciertos sitios. Cuestan hasta 5 créditos por request.\n - **auto**: Firecrawl reintentará automáticamente el scraping con proxies stealth si el proxy basic falla. Si el reintento con stealth tiene éxito, se cobrarán 5 créditos por el scraping. Si el primer intento con basic tiene éxito, solo se cobrará el coste normal.\n\nSi no especificas un proxy, Firecrawl usará auto por defecto.", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "Si se establece en true, la página se almacenará en el índice y la caché de Firecrawl. Establecerlo en false es útil si tu actividad de scraping puede plantear problemas de protección de datos. Usar algunos parámetros asociados con scraping de datos sensibles (acciones, headers) hará que este parámetro sea false.", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "Resumen de la página si `summary` está incluido en `formats`" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página si `html` se incluye en `formatos`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `rawHtml` se incluye en `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `screenshot` está en `formats`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces de la página si `links` está incluido en `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados de las acciones especificadas en el parámetro `actions`. Solo está presente si se proporciona el parámetro `actions` en la solicitud", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs de las capturas de pantalla, en el mismo orden que las acciones de captura de pantalla indicadas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extrae el contenido en el mismo orden que las acciones de scraping indicadas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores devueltos por JavaScript, en el mismo orden que las acciones executeJavascript proporcionadas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDF generados, en el mismo orden en que se proporcionaron las acciones de pdf.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensaje de error de la página" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Puede mostrarse al usar la extracción mediante LLM. El mensaje de advertencia te avisará de cualquier problema con la extracción." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Información de seguimiento de cambios si `changeTracking` está en `formats`. Solo se incluye cuando se solicita el formato `changeTracking`.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "La marca de tiempo del rastreo anterior con la que se compara la página actual. Null si no existe un rastreo anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "El resultado de la comparación entre las dos versiones de la página. \"new\" significa que esta página no existía anteriormente, \"same\" significa que el contenido no ha cambiado, \"changed\" significa que el contenido ha cambiado y \"removed\" significa que la página se eliminó." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilidad de la página o URL actual. 'visible' significa que la URL se descubrió mediante una ruta orgánica (enlaces o sitemap), 'hidden' significa que la URL se descubrió desde la memoria de rastreos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff al estilo Git de los cambios cuando se usa el modo `git-diff`. Solo está presente cuando el modo se establece en `git-diff`." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados de comparación JSON cuando se usa el modo `json`. Solo está presente cuando el modo se establece en `json`. Esto generará una lista de todas las claves y sus valores de los scrapes `previous` y `current`, según el tipo definido en el `schema`. Ejemplo [aquí](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "El estado actual del rastreo. Puede tener los valores `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas que se intentó rastrear." + }, + "completed": { + "type": "integer", + "description": "Número de páginas que se han rastreado correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "La cantidad de créditos utilizados para el rastreo." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y hora en que caducará el rastreo." + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL para obtener los siguientes 10 MB de datos. Se devuelve si el rastreo no ha finalizado o si la respuesta supera los 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos del rastreo.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido en la página si `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML en bruto de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces de la página si `includeLinks` es `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` es true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Trabajos de scraping con errores y detalles de los errores", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Marca de tiempo ISO del error" + }, + "url": { + "type": "string", + "description": "URL extraída" + }, + "error": { + "type": "string", + "description": "Mensaje de error" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs que se intentaron extraer pero fueron bloqueadas por robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Estado actual del scraping por lotes. Puede ser `scraping`, `completed` o `failed`." + }, + "total": { + "type": "integer", + "description": "El número total de páginas que se intentó scrapear." + }, + "completed": { + "type": "integer", + "description": "El número de páginas que se han extraído correctamente." + }, + "creditsUsed": { + "type": "integer", + "description": "El número de créditos usados en la extracción en lote." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La fecha y la hora de vencimiento del rastreo por lotes." + }, + "next": { + "type": "string", + "nullable": true, + "description": "La URL para recuperar los siguientes 10 MB de datos. Se devuelve si el scraping por lotes aún no se ha completado o si la respuesta supera los 10 MB." + }, + "data": { + "type": "array", + "description": "Los datos del scraping por lotes.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versión HTML del contenido de la página cuando `includeHtml` es true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenido HTML bruto de la página si `includeRawHtml` es true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de enlaces en la página si `includeLinks` es `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de pantalla de la página si `includeScreenshot` está establecido en true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "El código de estado de la página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "El mensaje de error de la página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contendrá las URL no válidas que se especificaron en la solicitud. Si no hubo URL no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs es true, este será un array que contendrá las URL no válidas especificadas en la solicitud. Si no hubo URL no válidas, será un array vacío. Si ignoreInvalidURLs es false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "El estado actual del trabajo de extracción" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "El número de tokens utilizados por el trabajo de extracción. Solo disponible si el trabajo se ha completado." + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/es/v1/features/alpha/llmstxt-npx.mdx b/es/v1/features/alpha/llmstxt-npx.mdx index 4c3b4656..3714eb5e 100644 --- a/es/v1/features/alpha/llmstxt-npx.mdx +++ b/es/v1/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Puedes ejecutar este paquete con NPX sin instalarlo. Hay dos formas de proporcio npx generate-llmstxt --api-key TU_API_KEY_DE_FIRECRAWL ``` -
### 2. Uso de variables de entorno
@@ -47,7 +46,6 @@ Luego, ejecuta el comando sin la opción --api-key: npx generate-llmstxt ``` -
### Opciones
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## Requisitos
diff --git a/es/v1/features/change-tracking.mdx b/es/v1/features/change-tracking.mdx index 6d4f4e0f..62b2c096 100644 --- a/es/v1/features/change-tracking.mdx +++ b/es/v1/features/change-tracking.mdx @@ -69,7 +69,6 @@ Ejemplo de respuesta: } ``` -
### Opciones avanzadas
@@ -106,7 +105,6 @@ if (result.changeTracking.json) { } ``` -
### Ejemplo de resultados de git diff:
@@ -120,7 +118,6 @@ if (result.changeTracking.json) { ... ``` -
### Ejemplo de resultados de comparación en JSON:
@@ -134,7 +131,6 @@ if (result.changeTracking.json) { } ``` -
### Interfaz de TypeScript
@@ -183,7 +179,6 @@ interface ScrapeParams { } ``` -
## SDK de Python
@@ -208,7 +203,6 @@ print("Visibilidad:", result.changeTracking.visibility) # 'visible' o 'oculta' print("Fecha de raspado anterior:", result.changeTracking.previousScrapeAt) # Marca de tiempo ISO del raspado anterior ``` -
### Opciones avanzadas
@@ -243,7 +237,6 @@ if 'json' in result.changeTracking: print(result.changeTracking.json.title.current) # Título actual ``` -
### Modelo de datos de Python
@@ -262,7 +255,6 @@ class ChangeTrackingData(pydantic.BaseModel): json: Optional[Any] = None ``` -
## Modos de seguimiento de cambios
@@ -289,7 +281,6 @@ La representación JSON estructurada del diff incluye: * `chunks`: Secciones de cambios dentro de un archivo * `changes`: Cambios de línea individuales con tipo (add, delete, normal) -
### Modo JSON
@@ -313,7 +304,6 @@ Salida de ejemplo: Para utilizar el modo JSON, debes proporcionar un esquema que defina los campos que se van a extraer y comparar. -
## Datos importantes
@@ -364,7 +354,6 @@ Estos son algunos detalles importantes que debes conocer al usar la función de } ``` -
### Ejemplo de rastreo
@@ -379,7 +368,6 @@ Estos son algunos detalles importantes que debes conocer al usar la función de } ``` -
### Seguimiento de cambios en precios de productos
@@ -425,7 +413,6 @@ if result.changeTracking.changeStatus == 'changed': print(f"El precio cambió de {result.changeTracking.json.price.previous} a {result.changeTracking.json.price.current}") ``` -
### Supervisar cambios de contenido con Git‑Diff
@@ -459,7 +446,6 @@ if result.changeTracking.changeStatus == 'changed': print(result.changeTracking.diff.text) ``` -
## Facturación
diff --git a/es/v1/features/extract.mdx b/es/v1/features/extract.mdx index a3f352f4..bc28a79d 100644 --- a/es/v1/features/extract.mdx +++ b/es/v1/features/extract.mdx @@ -33,7 +33,6 @@ El endpoint `/extract` simplifica la recopilación de datos estructurados desde Hemos simplificado la facturación para que Extract ahora use créditos, igual que el resto de los endpoints. Cada crédito equivale a 15 tokens. -
## Uso de `/extract`
diff --git a/es/v1/features/search-v0.mdx b/es/v1/features/search-v0.mdx index 719916d8..1c95ddc0 100644 --- a/es/v1/features/search-v0.mdx +++ b/es/v1/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Con el SDK de Python
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### Buscar una búsqueda
@@ -94,7 +92,6 @@ result = app.search(query="¿Qué es Firecrawl?") La respuesta será similar a la mostrada en el comando curl anterior. -
### Con el SDK de JavaScript
@@ -107,7 +104,6 @@ La respuesta será similar a la mostrada en el comando curl anterior. npm install @mendable/firecrawl-js ``` -
#### Buscar una búsqueda
@@ -124,7 +120,6 @@ const result = await app.search('What is firecrawl?'); La respuesta será similar a la que se muestra en el comando curl de arriba. -
### Con el SDK de Go
@@ -137,7 +132,6 @@ La respuesta será similar a la que se muestra en el comando curl de arriba. go get github.com/mendableai/firecrawl-go ``` -
#### Buscar una búsqueda
@@ -165,7 +159,6 @@ func main() { } ``` -
### Con el SDK de Rust
@@ -188,7 +181,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### Buscar una búsqueda
diff --git a/es/webhooks/events.mdx b/es/webhooks/events.mdx index 83070f78..174f218e 100644 --- a/es/webhooks/events.mdx +++ b/es/webhooks/events.mdx @@ -24,7 +24,6 @@ Todos los eventos de webhook siguen esta estructura básica: } ``` -
### Campos comunes
@@ -60,7 +59,6 @@ Se envía cuando se inicia una operación de rastreo. } ``` -
### `crawl.page`
@@ -99,7 +97,6 @@ Se envía por cada página individual que se extrae durante un rastreo. por cada página raspada correctamente. -
### `crawl.completed`
@@ -116,7 +113,6 @@ Se envía cuando toda la operación de rastreo se completa correctamente. } ``` -
## Eventos de scraping por lotes
@@ -139,7 +135,6 @@ Se envía cuando comienza una operación de scraping por lotes. } ``` -
### `batch_scrape.page`
@@ -178,7 +173,6 @@ Se envía por cada URL individual que se rastrea en el lote. evento `batch_scrape.page` por cada URL extraída correctamente. -
### `batch_scrape.completed`
@@ -195,7 +189,6 @@ Se envía cuando finaliza toda la operación de scraping por lotes. } ``` -
## Eventos de extracción
@@ -218,7 +211,6 @@ Se envía cuando se inicia una operación de extracción. } ``` -
### `extract.completed`
@@ -247,7 +239,6 @@ Se envía cuando una operación de extracción se completa correctamente. } ``` -
### `extract.failed`
@@ -265,7 +256,6 @@ Se envía cuando una operación de extracción encuentra un error. } ``` -
## Filtrado de eventos
diff --git a/es/webhooks/testing.mdx b/es/webhooks/testing.mdx index 1b2e9957..82c1b282 100644 --- a/es/webhooks/testing.mdx +++ b/es/webhooks/testing.mdx @@ -43,7 +43,6 @@ Utiliza la URL proporcionada en la configuración de tu webhook: } ``` -
## Solución de problemas comunes
diff --git a/es/x402/search.mdx b/es/x402/search.mdx index 8a18fae8..ec5df081 100644 --- a/es/x402/search.mdx +++ b/es/x402/search.mdx @@ -1,6 +1,6 @@ --- title: 'Búsqueda bajo demanda' -openapi: 'v1-openapi POST /x402/search' +openapi: '/es/api-reference/v1-openapi.json V1-OPENAPI POST /x402/search' --- diff --git a/fr/_essentials/code.mdx b/fr/_essentials/code.mdx index ad7ebae4..8b16443c 100644 --- a/fr/_essentials/code.mdx +++ b/fr/_essentials/code.mdx @@ -18,7 +18,6 @@ Pour indiquer qu’un `mot` ou une `expression` est du code, encadrez-le de back Pour indiquer qu’un mot ou une expression est du code, entourez-les d’accents graves (`). ``` -
### Bloc de code
diff --git a/fr/_essentials/markdown.mdx b/fr/_essentials/markdown.mdx index b5244091..c44890fe 100644 --- a/fr/_essentials/markdown.mdx +++ b/fr/_essentials/markdown.mdx @@ -17,7 +17,6 @@ icon: 'text-size' ``` -
### Sous-titres
@@ -35,7 +34,6 @@ icon: 'text-size' Chaque **titre** et **sous-titre** crée une ancre et apparaît également dans la table des matières à droite. -
## Mise en forme du texte
@@ -83,7 +81,6 @@ Pour créer une citation en bloc, ajoutez un `>` devant un paragraphe. > Dorothy la suivit à travers de nombreuses pièces magnifiques de son château. ``` -
### Multiligne
@@ -98,7 +95,6 @@ Pour créer une citation en bloc, ajoutez un `>` devant un paragraphe. > La Sorcière lui ordonna de nettoyer les casseroles et les bouilloires, de balayer le sol et d’entretenir le feu avec du bois. ``` -
### LaTeX
diff --git a/fr/_essentials/navigation.mdx b/fr/_essentials/navigation.mdx index 52407638..1ca50785 100644 --- a/fr/_essentials/navigation.mdx +++ b/fr/_essentials/navigation.mdx @@ -63,7 +63,6 @@ Par exemple, pour avoir une page à l’adresse `https://yoursite.com/your-folde ] ``` -
## Pages cachées
diff --git a/fr/advanced-scraping-guide.mdx b/fr/advanced-scraping-guide.mdx index 714542bb..1b3a5e29 100644 --- a/fr/advanced-scraping-guide.mdx +++ b/fr/advanced-scraping-guide.mdx @@ -242,7 +242,6 @@ Dans cet exemple, le scraper va : Voici la référence de l’API : [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Extraction JSON via les formats
@@ -263,7 +262,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ }' ``` -
## Point de terminaison /extract
@@ -336,7 +334,6 @@ Renvoie un ID { "id": "1234-5678-9101" } ``` -
### Vérifier une tâche de crawl
@@ -349,7 +346,6 @@ curl -X GET https://api.firecrawl.dev/v2/crawl/1234-5678-9101 \ -H 'Authorization: Bearer fc-VOTRE-CLÉ-API' ``` -
#### Pagination/URL suivante
@@ -372,7 +368,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl/params-preview \ }' ``` -
### Options du crawler
@@ -466,7 +461,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl \ }' ``` - @@ -486,7 +480,6 @@ curl -X POST https://api.firecrawl.dev/v2/map \ }' ``` -
### Options de mappage
diff --git a/fr/agents/fire-1-extract.mdx b/fr/agents/fire-1-extract.mdx index 23b2ead7..3461d957 100644 --- a/fr/agents/fire-1-extract.mdx +++ b/fr/agents/fire-1-extract.mdx @@ -52,7 +52,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ Dans cet exemple, l’agent FIRE-1 est chargé de parcourir la pagination des fiches produits avant d’effectuer le scraping final. -
### Utiliser FIRE-1 avec le point de terminaison /extract
@@ -94,7 +93,6 @@ curl -X POST https://api.firecrawl.dev/v1/extract \ Ici, l’agent s’assure que tous les commentaires sont chargés sur la page en cliquant sur le bouton « Load More Comments » avant que le processus d’extraction ne commence, selon le schéma et l’invite fournis. **Remarque :** L’agent FIRE-1 offre des fonctionnalités puissantes, mais peut consommer davantage de crédits selon la complexité des instructions de navigation et le nombre de pages avec lesquelles il interagit. -
### Découvrez FIRE-1 : navigation et interaction intelligentes
@@ -126,7 +124,6 @@ L’activation de FIRE-1 est simple. Il suffit d’inclure un objet `agent` dans *Remarque :* Le champ `prompt` est requis pour les requêtes de scraping et indique précisément à FIRE-1 comment interagir avec la page web. -
## Exemple d’utilisation avec le point de terminaison /scrape
@@ -149,7 +146,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ Dans ce scénario, FIRE-1 gère intelligemment la pagination et récupère l’ensemble des produits. -
## Points à prendre en compte
diff --git a/fr/agents/fire-1.mdx b/fr/agents/fire-1.mdx index f536d16b..59b9b9dd 100644 --- a/fr/agents/fire-1.mdx +++ b/fr/agents/fire-1.mdx @@ -13,7 +13,6 @@ import ExtractFire1CURL from "/snippets/fr/v1/scrape/agent-f1/python.mdx"; FIRE-1 est un agent d’IA qui renforce les capacités de scraping de Firecrawl. Il peut contrôler des actions du navigateur et naviguer dans des architectures de sites web complexes afin de permettre une extraction de données plus complète que les méthodes de scraping traditionnelles. -
### Ce que FIRE-1 peut faire :
diff --git a/fr/api-reference/endpoint/batch-scrape-delete.mdx b/fr/api-reference/endpoint/batch-scrape-delete.mdx index a2b9f7ba..149c4c9c 100644 --- a/fr/api-reference/endpoint/batch-scrape-delete.mdx +++ b/fr/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,4 +1,4 @@ --- title: "Annuler une extraction par lots" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/batch-scrape-get-errors.mdx b/fr/api-reference/endpoint/batch-scrape-get-errors.mdx index e7da4c61..8dc1f72d 100644 --- a/fr/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/fr/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,4 +1,4 @@ --- title: "Récupérer les erreurs d'extraction par lot" -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/batch-scrape-get.mdx b/fr/api-reference/endpoint/batch-scrape-get.mdx index 4955553d..5f5d53e9 100644 --- a/fr/api-reference/endpoint/batch-scrape-get.mdx +++ b/fr/api-reference/endpoint/batch-scrape-get.mdx @@ -1,4 +1,4 @@ --- title: "Obtenir l’état d’une extraction par lot" -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/batch-scrape.mdx b/fr/api-reference/endpoint/batch-scrape.mdx index 47c03cac..bd0286df 100644 --- a/fr/api-reference/endpoint/batch-scrape.mdx +++ b/fr/api-reference/endpoint/batch-scrape.mdx @@ -1,4 +1,4 @@ --- title: "Scrape par lot" -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/crawl-active.mdx b/fr/api-reference/endpoint/crawl-active.mdx index d7d3c1b0..b15a4fae 100644 --- a/fr/api-reference/endpoint/crawl-active.mdx +++ b/fr/api-reference/endpoint/crawl-active.mdx @@ -1,4 +1,4 @@ --- title: "Récupérer les crawls actifs" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/crawl-delete.mdx b/fr/api-reference/endpoint/crawl-delete.mdx index 2611f595..bdcda6c3 100644 --- a/fr/api-reference/endpoint/crawl-delete.mdx +++ b/fr/api-reference/endpoint/crawl-delete.mdx @@ -1,4 +1,4 @@ --- title: "Annuler le crawl" -openapi: "v2-openapi DELETE /crawl/{id}" +openapi: "/fr/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}" --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/crawl-get-errors.mdx b/fr/api-reference/endpoint/crawl-get-errors.mdx index f2dc758d..3e545920 100644 --- a/fr/api-reference/endpoint/crawl-get-errors.mdx +++ b/fr/api-reference/endpoint/crawl-get-errors.mdx @@ -1,4 +1,4 @@ --- title: "Récupérer les erreurs de crawl" -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/crawl-get.mdx b/fr/api-reference/endpoint/crawl-get.mdx index 3a966790..5620f8df 100644 --- a/fr/api-reference/endpoint/crawl-get.mdx +++ b/fr/api-reference/endpoint/crawl-get.mdx @@ -1,4 +1,4 @@ --- title: "Obtenir l’état d’un crawl" -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/crawl-params-preview.mdx b/fr/api-reference/endpoint/crawl-params-preview.mdx index c0fbdd40..ba70e42a 100644 --- a/fr/api-reference/endpoint/crawl-params-preview.mdx +++ b/fr/api-reference/endpoint/crawl-params-preview.mdx @@ -1,6 +1,6 @@ --- title: "Aperçu des paramètres de crawling" -openapi: 'v2-openapi POST /crawl/params-preview' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /crawl/params-preview' ---
@@ -18,7 +18,6 @@ openapi: 'v2-openapi POST /crawl/params-preview' } ``` -
### Réponse
diff --git a/fr/api-reference/endpoint/crawl-post.mdx b/fr/api-reference/endpoint/crawl-post.mdx index 3f58d8eb..45ce97fc 100644 --- a/fr/api-reference/endpoint/crawl-post.mdx +++ b/fr/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "Crawl" -openapi: 'v2-openapi POST /crawl' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -22,7 +22,6 @@ Décrivez en anglais simple ce que vous souhaitez lancer en crawl : Cela associera le prompt à un ensemble de paramètres d’exploration pour lancer le crawl. -
### Contrôle amélioré du sitemap
diff --git a/fr/api-reference/endpoint/credit-usage-historical.mdx b/fr/api-reference/endpoint/credit-usage-historical.mdx index 0ca5aefb..2345e651 100644 --- a/fr/api-reference/endpoint/credit-usage-historical.mdx +++ b/fr/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Historique d’utilisation des crédits" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- Renvoie l’historique de l’utilisation des crédits, mois par mois. Ce point de terminaison peut aussi, en option, ventiler l’utilisation par clé API. \ No newline at end of file diff --git a/fr/api-reference/endpoint/credit-usage.mdx b/fr/api-reference/endpoint/credit-usage.mdx index 9fccc6df..e1ca5fd8 100644 --- a/fr/api-reference/endpoint/credit-usage.mdx +++ b/fr/api-reference/endpoint/credit-usage.mdx @@ -1,4 +1,4 @@ --- title: "Utilisation des crédits" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/extract-get.mdx b/fr/api-reference/endpoint/extract-get.mdx index 531d473b..24804c29 100644 --- a/fr/api-reference/endpoint/extract-get.mdx +++ b/fr/api-reference/endpoint/extract-get.mdx @@ -1,4 +1,4 @@ --- title: "Obtenir l'état de l'extraction" -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/extract.mdx b/fr/api-reference/endpoint/extract.mdx index e896c82c..07e22944 100644 --- a/fr/api-reference/endpoint/extract.mdx +++ b/fr/api-reference/endpoint/extract.mdx @@ -1,4 +1,4 @@ --- title: "Extraction" -openapi: "v2-openapi POST /extract" +openapi: "/fr/api-reference/v1-openapi.json V2-OPENAPI POST /extract" --- \ No newline at end of file diff --git a/fr/api-reference/endpoint/map.mdx b/fr/api-reference/endpoint/map.mdx index 72bf345e..5f74a3d2 100644 --- a/fr/api-reference/endpoint/map.mdx +++ b/fr/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map" -openapi: 'v2-openapi POST /map' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ Trois façons de gérer les sitemaps : } ``` -
### Format de réponse modifié
diff --git a/fr/api-reference/endpoint/queue-status.mdx b/fr/api-reference/endpoint/queue-status.mdx index 8642509a..f485f8a6 100644 --- a/fr/api-reference/endpoint/queue-status.mdx +++ b/fr/api-reference/endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "État de la file d'attente" -openapi: 'v2-openapi GET /team/queue-status' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/queue-status' --- Mesures sur la file d'attente de scraping de votre équipe. \ No newline at end of file diff --git a/fr/api-reference/endpoint/scrape.mdx b/fr/api-reference/endpoint/scrape.mdx index a806115e..899766de 100644 --- a/fr/api-reference/endpoint/scrape.mdx +++ b/fr/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: "Scrape" -openapi: 'v2-openapi POST /scrape' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' ---
diff --git a/fr/api-reference/endpoint/search.mdx b/fr/api-reference/endpoint/search.mdx index ae9d244b..ae958322 100644 --- a/fr/api-reference/endpoint/search.mdx +++ b/fr/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Recherche" -openapi: 'v2-openapi POST /search' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -20,7 +20,6 @@ Recherchez le web, les images et l’actualité en une seule fois : } ``` -
### Format de réponse modifié
@@ -38,7 +37,6 @@ v1 : liste simple de résultats. v2 : organisé par type de source : } ``` -
### Nouvelles fonctionnalités
@@ -94,7 +92,6 @@ Exemples : `"US"`, `"DE"`, `"FR"`, `"JP"`, `"UK"`, `"CA"`. } ``` -
## Paramètre categories
@@ -117,7 +114,6 @@ Filtrez les résultats de recherche par catégories spécifiques à l’aide du } ``` -
### Réponse par catégorie
@@ -146,7 +142,6 @@ Chaque résultat comprend un champ `category` indiquant son origine : } ``` - diff --git a/fr/api-reference/endpoint/token-usage-historical.mdx b/fr/api-reference/endpoint/token-usage-historical.mdx index 22271cd1..04ab7d8f 100644 --- a/fr/api-reference/endpoint/token-usage-historical.mdx +++ b/fr/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Utilisation historique des jetons" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- Renvoie l’utilisation historique des jetons, mois par mois. L’endpoint peut également, en option, ventiler l’utilisation par clé d’API. diff --git a/fr/api-reference/endpoint/token-usage.mdx b/fr/api-reference/endpoint/token-usage.mdx index 989c790d..5ff12762 100644 --- a/fr/api-reference/endpoint/token-usage.mdx +++ b/fr/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "Utilisation des jetons" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- Nous avons simplifié la facturation : Extract utilise désormais des crédits, comme tous les autres endpoints. Chaque crédit correspond à 15 jetons. L’utilisation de jetons indiquée inclut désormais la consommation de tous les endpoints. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/batch-scrape-delete.mdx b/fr/api-reference/v1-endpoint/batch-scrape-delete.mdx index de3b7a6f..766ece56 100644 --- a/fr/api-reference/v1-endpoint/batch-scrape-delete.mdx +++ b/fr/api-reference/v1-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "Annuler un scraping par lot" -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape-delete) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/batch-scrape-get-errors.mdx b/fr/api-reference/v1-endpoint/batch-scrape-get-errors.mdx index 88dd4ece..d1dffe0e 100644 --- a/fr/api-reference/v1-endpoint/batch-scrape-get-errors.mdx +++ b/fr/api-reference/v1-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtenir les erreurs de batch scrape' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Remarque : Une [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape-get-errors) est désormais disponible, avec un meilleur rapport d’erreurs et des capacités de débogage améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/batch-scrape-get.mdx b/fr/api-reference/v1-endpoint/batch-scrape-get.mdx index e2ed7141..f476449a 100644 --- a/fr/api-reference/v1-endpoint/batch-scrape-get.mdx +++ b/fr/api-reference/v1-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l’état d’un batch scrape" -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape-get) est désormais disponible, avec un meilleur suivi d’état et des fonctionnalités de monitoring. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/batch-scrape.mdx b/fr/api-reference/v1-endpoint/batch-scrape.mdx index 4a845b59..0beeac6e 100644 --- a/fr/api-reference/v1-endpoint/batch-scrape.mdx +++ b/fr/api-reference/v1-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape par lots' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape) est désormais disponible, avec de meilleures performances et une fiabilité accrue pour le traitement par lots. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/crawl-active.mdx b/fr/api-reference/v1-endpoint/crawl-active.mdx index 9f105a9c..38fe507a 100644 --- a/fr/api-reference/v1-endpoint/crawl-active.mdx +++ b/fr/api-reference/v1-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: "Afficher les crawls actifs" -openapi: 'v1-openapi GET /crawl/active' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-active) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/crawl-delete.mdx b/fr/api-reference/v1-endpoint/crawl-delete.mdx index 5acb49f7..a92316d4 100644 --- a/fr/api-reference/v1-endpoint/crawl-delete.mdx +++ b/fr/api-reference/v1-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "Annuler le crawl" -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-delete) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/crawl-get-errors.mdx b/fr/api-reference/v1-endpoint/crawl-get-errors.mdx index 4959a491..ac3c6d56 100644 --- a/fr/api-reference/v1-endpoint/crawl-get-errors.mdx +++ b/fr/api-reference/v1-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obtenir les erreurs de crawl' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/crawl-get-errors) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/crawl-get.mdx b/fr/api-reference/v1-endpoint/crawl-get.mdx index 7f271052..d64dcb31 100644 --- a/fr/api-reference/v1-endpoint/crawl-get.mdx +++ b/fr/api-reference/v1-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtenir l’état du crawl' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-get) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/crawl-post.mdx b/fr/api-reference/v1-endpoint/crawl-post.mdx index a2b83c41..ec308c02 100644 --- a/fr/api-reference/v1-endpoint/crawl-post.mdx +++ b/fr/api-reference/v1-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "Crawl" -openapi: 'v1-openapi POST /crawl' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-post) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/credit-usage-historical.mdx b/fr/api-reference/v1-endpoint/credit-usage-historical.mdx index b82b492a..75b87bda 100644 --- a/fr/api-reference/v1-endpoint/credit-usage-historical.mdx +++ b/fr/api-reference/v1-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Historique d’utilisation des crédits" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- Renvoie l’historique de l’utilisation des crédits, mois par mois. Le point de terminaison peut également, en option, ventiler l’utilisation par clé d’API. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/credit-usage.mdx b/fr/api-reference/v1-endpoint/credit-usage.mdx index 58cfecd8..7f93a760 100644 --- a/fr/api-reference/v1-endpoint/credit-usage.mdx +++ b/fr/api-reference/v1-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: "Utilisation des crédits" -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/credit-usage) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/deep-research-get.mdx b/fr/api-reference/v1-endpoint/deep-research-get.mdx index e2ebcf61..0e8a3569 100644 --- a/fr/api-reference/v1-endpoint/deep-research-get.mdx +++ b/fr/api-reference/v1-endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "Recherche approfondie" -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/deep-research.mdx b/fr/api-reference/v1-endpoint/deep-research.mdx index 3f4ac9b8..5b434c8e 100644 --- a/fr/api-reference/v1-endpoint/deep-research.mdx +++ b/fr/api-reference/v1-endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Deep Research" -openapi: 'v1-openapi POST /deep-research' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- Le point de terminaison Deep Research permet d’effectuer des recherches et des analyses approfondies par IA sur n’importe quel sujet. Il suffit de fournir une requête de recherche, et Firecrawl explorera le web de façon autonome, collectera les informations pertinentes et synthétisera les résultats en insights complets. diff --git a/fr/api-reference/v1-endpoint/extract-get.mdx b/fr/api-reference/v1-endpoint/extract-get.mdx index 3fcaf529..3a4b9af4 100644 --- a/fr/api-reference/v1-endpoint/extract-get.mdx +++ b/fr/api-reference/v1-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtenir l’état d’Extract' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/extract-get) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/extract.mdx b/fr/api-reference/v1-endpoint/extract.mdx index a8c6ead6..851c1599 100644 --- a/fr/api-reference/v1-endpoint/extract.mdx +++ b/fr/api-reference/v1-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Remarque : Une [nouvelle version v2 de cette API](/fr/api-reference/endpoint/extract) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/llmstxt-get.mdx b/fr/api-reference/v1-endpoint/llmstxt-get.mdx index 9513a5d7..4245b002 100644 --- a/fr/api-reference/v1-endpoint/llmstxt-get.mdx +++ b/fr/api-reference/v1-endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "Statut de LLMs.txt" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Obtenez le statut et les résultats d’une génération de LLMs.txt. Ce point de terminaison vous permet de vérifier si la génération est terminée et de récupérer le contenu généré. @@ -69,7 +69,6 @@ Si la tâche de génération échoue ou est introuvable, vous recevrez une répo } ``` -
### Recommandations pour le polling
diff --git a/fr/api-reference/v1-endpoint/llmstxt.mdx b/fr/api-reference/v1-endpoint/llmstxt.mdx index dbfab1ba..87544e51 100644 --- a/fr/api-reference/v1-endpoint/llmstxt.mdx +++ b/fr/api-reference/v1-endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Générer LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- Le point de terminaison de génération LLMs.txt crée les fichiers LLMs.txt et LLMs-full.txt pour n’importe quel site web. Ces fichiers proposent un format structuré, optimisé pour les LLM, du contenu du site, afin de faciliter la compréhension et le traitement des informations par les modèles de langage. diff --git a/fr/api-reference/v1-endpoint/map.mdx b/fr/api-reference/v1-endpoint/map.mdx index 368e79c4..946b142d 100644 --- a/fr/api-reference/v1-endpoint/map.mdx +++ b/fr/api-reference/v1-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map" -openapi: 'v1-openapi POST /map' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Remarque : Une [nouvelle version v2 de cette API](/fr/api-reference/endpoint/map) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/queue-status.mdx b/fr/api-reference/v1-endpoint/queue-status.mdx index 363bc9eb..6738a7af 100644 --- a/fr/api-reference/v1-endpoint/queue-status.mdx +++ b/fr/api-reference/v1-endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "Statut de la file d'attente" -openapi: 'v1-openapi GET /team/queue-status' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/queue-status' --- > Remarque : une [nouvelle version v2 de cette API](/fr/api-reference/endpoint/queue-status) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/scrape.mdx b/fr/api-reference/v1-endpoint/scrape.mdx index f615a2c7..ee452fb6 100644 --- a/fr/api-reference/v1-endpoint/scrape.mdx +++ b/fr/api-reference/v1-endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/scrape) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/search.mdx b/fr/api-reference/v1-endpoint/search.mdx index 9bccdce9..da10ecd4 100644 --- a/fr/api-reference/v1-endpoint/search.mdx +++ b/fr/api-reference/v1-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Recherche" -openapi: "v1-openapi POST /search" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI POST /search" --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/search) est désormais disponible avec des fonctionnalités et des performances améliorées. diff --git a/fr/api-reference/v1-endpoint/token-usage-historical.mdx b/fr/api-reference/v1-endpoint/token-usage-historical.mdx index cbfd8340..260d2ed3 100644 --- a/fr/api-reference/v1-endpoint/token-usage-historical.mdx +++ b/fr/api-reference/v1-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Historique d’utilisation des jetons" -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- Retourne l’utilisation des jetons, mois par mois. Ce point de terminaison peut également ventiler l’usage par clé d’API, en option. \ No newline at end of file diff --git a/fr/api-reference/v1-endpoint/token-usage.mdx b/fr/api-reference/v1-endpoint/token-usage.mdx index c3c064d9..90ef11a6 100644 --- a/fr/api-reference/v1-endpoint/token-usage.mdx +++ b/fr/api-reference/v1-endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "Utilisation des jetons" -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/token-usage) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/api-reference/v1-openapi.json b/fr/api-reference/v1-openapi.json new file mode 100644 index 00000000..017e7f31 --- /dev/null +++ b/fr/api-reference/v1-openapi.json @@ -0,0 +1,3656 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "API permettant d’interagir avec les services Firecrawl pour réaliser des tâches de scraping et de crawling web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Récupérez le contenu d’une seule URL et, éventuellement, extrayez des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à explorer" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, cela activera l’absence de conservation des données pour cette opération de scraping. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Scraper plusieurs URL et éventuellement en extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "L’URL à explorer" + } + }, + "webhook": { + "type": "object", + "description": "Un objet représentant la spécification d’un webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL vers laquelle envoyer le webhook. Celui-ci sera déclenché au démarrage du scraping par lots (batch_scrape.started), pour chaque page extraite (batch_scrape.page) et lorsque le scraping par lots est terminé (batch_scrape.completed ou batch_scrape.failed). La réponse sera la même que celle de l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans toutes les données envoyées via webhook pour ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook (par défaut : tous).", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal de scrapes simultanés. Ce paramètre vous permet de définir une limite de scrapes parallèles pour ce lot. S’il n’est pas spécifié, le lot respecte la limite de scrapes parallèles de votre équipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si des URL non valides sont spécifiées dans le tableau `urls`, elles seront ignorées. Au lieu de faire échouer l’intégralité de la requête, une opération de scraping par lot sera créée en utilisant les URL valides restantes, et les URL non valides seront renvoyées dans le champ `invalidURLs` de la réponse." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette option est définie sur true, cela activera l’absence totale de conservation des données pour ce lot de scraping. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping en lot", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir l’état d’une tâche de scraping par lots", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler une tâche de scraping par lots", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Tâche de scraping par lots introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping par lot", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir les erreurs d’un job de scraping par lot", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’identifiant de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer l’état d’une tâche de crawl", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler un job de crawl", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation effectuée", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tâche de crawl introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer les erreurs d’une tâche de crawl", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Explorer plusieurs URL en fonction des options", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle démarrer le crawl" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs d’expressions régulières pour les chemins d’URL qui excluent de l’exploration les URL correspondantes. Par exemple, si vous définissez `\"excludePaths\": [\"blog/.*\"]` pour l’URL de base firecrawl.dev, tous les résultats correspondant à ce motif seront exclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Expressions régulières (regex) pour les chemins d’URL à inclure dans le crawl. Seuls les chemins qui correspondent aux motifs spécifiés seront inclus dans la réponse. Par exemple, si vous définissez `\"includePaths\": [\"blog/.*\"]` pour l’URL de base firecrawl.dev, seuls les résultats correspondant à ce motif seront inclus, comme `https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap`." + }, + "maxDepth": { + "type": "integer", + "description": "Profondeur absolue maximale à explorer à partir de la base de l’URL saisie. En pratique, il s’agit du nombre maximal de barres obliques que peut contenir le chemin (pathname) d’une URL explorée.", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profondeur maximale d’exploration basée sur l’ordre de découverte. Le site racine et les pages issues du sitemap ont une profondeur de découverte de 0. Par exemple, si vous la définissez à 1 et que vous activez ignoreSitemap, seules l’URL saisie et toutes les URL liées depuis cette page seront explorées." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorer le sitemap du site lors du crawl", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ne relancez pas le scraping du même chemin avec des paramètres de requête différents (ou sans aucun paramètre)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de pages à explorer. La limite par défaut est de 10 000.", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ OBSOLÈTE : utilisez plutôt « crawlEntireDomain ». Permet au robot d'exploration de suivre les liens internes vers des URL au même niveau ou parentes, et pas seulement vers des chemins enfants.", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens internes vers des URL au même niveau ou de niveau supérieur, et pas seulement des chemins enfants.\n\nfalse : Explore uniquement les URL plus profondes (enfants).\n→ ex. /features/feature-1 → /features/feature-1/tips ✅\n→ Ne suivra pas /pricing ou / ❌\n\ntrue : Explore tous les liens internes, y compris les URL au même niveau et de niveau supérieur.\n→ ex. /features/feature-1 → /pricing, /, etc. ✅\n\nUtilisez true pour une couverture interne plus large, au‑delà des chemins imbriqués.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permet au crawler de suivre des liens pointant vers des sites web externes.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens vers les sous-domaines du domaine principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalle en secondes entre deux opérations de scraping. Cela permet de respecter les limites de fréquence des sites web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal d’opérations de scraping simultanées. Ce paramètre vous permet de définir une limite de parallélisme pour ce crawl. S’il n’est pas spécifié, le crawl respecte la limite de parallélisme de votre équipe." + }, + "webhook": { + "type": "object", + "description": "Objet de spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Il sera déclenché au démarrage du crawl (crawl.started), pour chaque page explorée (crawl.page) et lorsque le crawl est terminé (crawl.completed ou crawl.failed). La réponse sera identique à celle de l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans tous les payloads de webhook de ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook. (par défaut : tous)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, aucune donnée ne sera conservée pour ce crawl. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Cartographier plusieurs URL selon les options", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle démarrer l’exploration" + }, + "search": { + "type": "string", + "description": "Requête de recherche à utiliser pour la cartographie. Pendant la phase Alpha, la partie « intelligente » de la fonction de recherche est limitée à 500 résultats. En revanche, si « map » renvoie davantage de résultats, aucune limite n’est appliquée." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorer le sitemap du site lors de l’exploration.", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "Ne renvoyer que les liens présents dans le sitemap du site web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Inclure les sous-domaines du site", + "default": true + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de liens renvoyés", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Délai d’expiration en millisecondes. Aucun délai d’expiration n’est défini par défaut." + }, + "location": { + "type": "object", + "description": "Paramètres de localisation pour la requête. Lorsqu’ils sont spécifiés, un proxy approprié sera utilisé si disponible et les paramètres de langue et de fuseau horaire correspondants seront émulés. La valeur par défaut est « US » si aucun paramètre n’est indiqué.", + "properties": { + "country": { + "type": "string", + "description": "Code de pays ISO 3166-1 alpha-2 (p. ex. « US », « AU », « DE », « JP »)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Langues et paramètres régionaux préférés pour la requête, par ordre de priorité. Par défaut, la langue de l’emplacement spécifié est utilisée. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraire des données structurées depuis des pages à l’aide de LLM", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Les URL à partir desquelles extraire les données. Les URL doivent utiliser le format glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt guidant le processus d’extraction" + }, + "schema": { + "type": "object", + "description": "Schéma qui définit la structure des données extraites. Doit être conforme à la spécification [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Lorsque la valeur est définie sur true, l’extraction utilisera la recherche sur le Web pour trouver des données supplémentaires", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Lorsque cette option est à true, les fichiers sitemap.xml sont ignorés lors de l’analyse du site web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Si activé, les sous-domaines des URL fournies seront également explorés", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Lorsque cette option est définie sur `true`, les sources utilisées pour extraire les données seront incluses dans la réponse sous la clé `sources`.", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si des URL non valides sont spécifiées dans le tableau urls, elles seront ignorées. Au lieu de faire échouer toute la requête, une extraction sera effectuée à partir des URL valides restantes, et les URL non valides seront renvoyées dans le champ invalidURLs de la réponse." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extraction réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Requête invalide", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’identifiant de la tâche d’extraction", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer le statut d'une tâche d'extraction", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Récupérer tous les crawls actifs de l’équipe actuelle", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "L’identifiant unique du crawl" + }, + "teamId": { + "type": "string", + "description": "L’ID de l’équipe qui possède le crawl" + }, + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de départ du crawl" + }, + "options": { + "type": "object", + "description": "Options du crawler utilisées pour ce crawl", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "Lancer une recherche approfondie pour une requête", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La requête à étudier" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "Profondeur maximale des itérations de recherche" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "Limite de temps (en secondes)" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "Nombre maximal d’URL à analyser" + }, + "analysisPrompt": { + "type": "string", + "description": "Le prompt à utiliser pour l’analyse finale. Utile pour formater le markdown de l’analyse finale d’une manière spécifique." + }, + "systemPrompt": { + "type": "string", + "description": "L’invite système à utiliser pour l’agent de recherche. Permet d’orienter l’agent de recherche dans une direction précise." + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "Options de sortie au format JSON", + "properties": { + "schema": { + "type": "object", + "description": "Le schéma à utiliser pour la sortie JSON. Doit être conforme à JSON Schema (https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "Le prompt système à utiliser pour la sortie au format JSON" + }, + "prompt": { + "type": "string", + "description": "Le prompt à utiliser pour la sortie au format JSON" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "La tâche de recherche a bien démarré", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tâche de recherche" + } + } + } + } + } + }, + "400": { + "description": "Paramètres de la requête invalides", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’identifiant de la tâche de recherche", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir le statut et les résultats d'une opération de recherche approfondie", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "Affiché lorsque le format JSON est utilisé", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne de caractères ou un tableau de chaînes" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "Tâche de recherche introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Récupérer les crédits restants de l’équipe authentifiée", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "Nombre de crédits restants pour l’équipe", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "Nombre de crédits inclus dans la formule. N’inclut pas les crédits issus de coupons, les packs de crédits ni les crédits de rechargement automatique.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous utilisez le forfait gratuit", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informations sur l’utilisation des crédits introuvables", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Récupérer l’historique d’utilisation des crédits de l’équipe authentifiée", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des crédits par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé API utilisée pour la période de facturation. null si byApiKey est à false (par défaut)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Nombre total de crédits utilisés au cours de la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Récupérer le nombre de jetons restants pour l’équipe authentifiée (extraction uniquement)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "Nombre de jetons restants pour l’équipe", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "Nombre de jetons inclus dans le forfait. Les jetons issus de coupons ne sont pas comptabilisés.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez l’offre gratuite", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informations sur l’utilisation des jetons introuvables", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Récupérer l’historique d’utilisation des tokens de l’équipe authentifiée (Extract uniquement)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des jetons par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé API utilisée pour la période de facturation. null si byApiKey est false (valeur par défaut)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Nombre total de jetons utilisés au cours de la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "Indicateurs sur la file d’attente de scraping de votre équipe", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "Nombre de tâches actuellement en file d'attente" + }, + "activeJobsInQueue": { + "type": "number", + "description": "Nombre de tâches en cours" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "Nombre de tâches actuellement en attente" + }, + "maxConcurrency": { + "type": "number", + "description": "Nombre maximal de tâches actives en parallèle en fonction de votre offre" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "Horodatage de la tâche la plus récente exécutée avec succès", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Rechercher et éventuellement scraper les résultats de recherche", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La requête de recherche" + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de résultats à retourner", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "Paramètre de recherche temporel. Prend en charge les intervalles de temps prédéfinis (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) et les plages de dates personnalisées (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Paramètre de localisation des résultats de recherche" + }, + "timeout": { + "type": "integer", + "description": "Délai d’expiration en millisecondes", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclut des résultats de recherche les URL qui ne sont pas valides pour d’autres endpoints de Firecrawl. Cela permet de réduire les erreurs si vous transférez les données issues de la recherche vers d’autres endpoints de l’API Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "Options de scraping des résultats de recherche", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre du résultat de la recherche" + }, + "description": { + "type": "string", + "description": "Description du résultat de la recherche" + }, + "url": { + "type": "string", + "description": "URL du résultat de la recherche" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenu en Markdown si le scraping a été demandé" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenu HTML si ce format est demandé dans formats" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut lorsqu’il est demandé dans les formats" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liens trouvés si demandé dans les formats de sortie" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la capture d’écran si elle est demandée dans les formats. Les captures d’écran expirent après 24 heures et ne peuvent plus être téléchargées." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Message d’avertissement en cas de problèmes" + } + } + } + } + } + }, + "408": { + "description": "Dépassement du délai d’attente de la requête", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "Générer le fichier LLMs.txt d’un site web", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL utilisée pour générer LLMs.txt" + }, + "maxUrls": { + "type": "integer", + "description": "Nombre maximal d’URL à analyser", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "Inclure l’intégralité du contenu textuel dans la réponse", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "La tâche de génération LLMs.txt a été lancée avec succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID du job de génération du fichier LLMs.txt" + } + } + } + } + } + }, + "400": { + "description": "Paramètres de requête non valides", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifiant de la tâche de génération de LLMs.txt", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir le statut et les résultats d’une tâche de génération de fichier LLMs.txt", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "Le contenu généré du fichier LLMs.txt" + }, + "llmsfulltxt": { + "type": "string", + "description": "Le contenu textuel complet lorsque showFullText vaut true" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Date d’expiration du contenu généré" + } + } + } + } + } + }, + "404": { + "description": "Tâche de génération du fichier LLMs.txt introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Renvoyer uniquement le contenu principal de la page, en excluant les en-têtes, éléments de navigation, pieds de page, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à inclure dans la sortie." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à exclure du résultat." + }, + "maxAge": { + "type": "integer", + "description": "Renvoie une version mise en cache de la page si elle a moins que cette ancienneté (en millisecondes). Si une version mise en cache de la page est plus ancienne que cette valeur, la page sera à nouveau scrapée. Si vous n’avez pas besoin de données extrêmement récentes, activer cette option peut accélérer vos opérations de scraping jusqu’à 500 %. La valeur par défaut est 0, ce qui désactive la mise en cache.", + "default": 0 + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer avec la requête. Peuvent servir à envoyer des cookies, l’en-tête User-Agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Spécifiez un délai, en millisecondes, avant de récupérer le contenu, afin de laisser à la page suffisamment de temps pour se charger.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Mettez cette option à true si vous souhaitez simuler le scraping depuis un appareil mobile. Utile pour tester les pages responsive et prendre des captures d’écran mobiles.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorer la vérification des certificats TLS lors de l’envoi de requêtes", + "default": false + }, + "timeout": { + "type": "integer", + "description": "Délai d'attente de la requête en millisecondes", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "Contrôle la façon dont les fichiers PDF sont traités lors du scraping. Lorsque cette option est activée (true), le contenu du PDF est extrait et converti au format markdown, avec une facturation basée sur le nombre de pages (1 crédit par page). Lorsque cette option est désactivée (false), le fichier PDF est renvoyé sous forme de base64 avec un tarif forfaitaire de 1 crédit au total.", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "Objet JSON d’options", + "properties": { + "schema": { + "type": "object", + "description": "Le schéma d’extraction à utiliser (facultatif). Doit être conforme à la spécification [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "Le prompt système à utiliser pour l'extraction (optionnel)" + }, + "prompt": { + "type": "string", + "description": "Le prompt à utiliser pour l’extraction sans schéma (optionnel)" + } + } + }, + "actions": { + "type": "array", + "description": "Actions à effectuer sur la page avant de récupérer le contenu", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Attendre un nombre donné de millisecondes" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Nombre de millisecondes d'attente" + }, + "selector": { + "type": "string", + "description": "Sélecteur de requête permettant de trouver l’élément par", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Prenez une capture d’écran. Les liens seront disponibles dans le tableau `actions.screenshots` de la réponse." + }, + "fullPage": { + "type": "boolean", + "description": "Indique s’il faut effectuer une capture d’écran de la page entière ou la limiter à la zone d’affichage actuelle (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "La qualité de la capture d’écran, allant de 1 à 100. 100 correspond à la qualité la plus élevée." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Cliquez sur un élément" + }, + "selector": { + "type": "string", + "description": "Sélecteur CSS pour trouver l’élément par", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clique sur tous les éléments correspondant au sélecteur, et pas uniquement le premier. Ne génère pas d’erreur si aucun élément ne correspond au sélecteur.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Saisir du texte dans un champ de saisie, une zone de texte ou un élément contenteditable. Remarque : vous devez d’abord placer le focus sur l’élément à l’aide d’une action de « clic » avant de saisir le texte. Le texte sera entré caractère par caractère pour simuler une saisie au clavier." + }, + "text": { + "type": "string", + "description": "Texte à saisir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Appuyez sur une touche sur cette page. Voir https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html pour la liste des codes de touches.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Appuyez sur une touche du clavier" + }, + "key": { + "type": "string", + "description": "Touche à presser", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Faire défiler la page ou un élément spécifique" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sens de défilement", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Sélecteur CSS de l’élément à faire défiler", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrait le contenu de la page actuelle et renvoie l’URL et le HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Exécuter du code JavaScript sur la page" + }, + "script": { + "type": "string", + "description": "Code JavaScript à exécuter", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Générer un PDF de la page actuelle. Le PDF sera renvoyé dans le tableau `actions.pdfs` de la réponse." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "Le format de page du PDF généré", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Indique s’il faut générer le PDF au format paysage", + "default": false + }, + "scale": { + "type": "number", + "description": "Le facteur d’échelle du PDF généré", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Paramètre de localisation de la requête. Lorsqu’il est spécifié, un proxy approprié est utilisé si disponible et la langue ainsi que le fuseau horaire correspondants sont émulés. Par défaut, « US » est utilisé si aucun paramètre n’est spécifié.", + "properties": { + "country": { + "type": "string", + "description": "Code de pays ISO 3166-1 alpha-2 (par ex. « US », « AU », « DE », « JP »)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Langues et paramètres régionaux préférés pour la requête, par ordre de priorité. Par défaut, la langue de l’emplacement spécifié est utilisée. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Supprime toutes les images encodées en base64 de la sortie, qui peuvent être extrêmement longues. Le texte alternatif de l’image est conservé dans la sortie, mais l’URL est remplacée par un placeholder.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Active le blocage des publicités et des bannières de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Spécifie le type de proxy à utiliser.\n\n - **basic** : Proxies pour le scraping de sites avec peu ou pas de solutions anti-bot. Rapides et généralement efficaces.\n - **stealth** : Proxies furtifs pour le scraping de sites avec des solutions anti-bot avancées. Plus lents, mais plus fiables sur certains sites. Coût pouvant atteindre 5 crédits par requête.\n - **auto** : Firecrawl réessaiera automatiquement le scraping avec des proxies furtifs si le proxy basic échoue. Si la nouvelle tentative avec stealth réussit, 5 crédits seront facturés pour l’opération de scraping. Si la première tentative avec basic réussit, seul le coût normal sera facturé.\n\nSi vous ne spécifiez pas de proxy, Firecrawl utilisera basic par défaut." + }, + "storeInCache": { + "type": "boolean", + "description": "Si ce paramètre est défini sur true, la page sera stockée dans l’index et le cache de Firecrawl. Le définir sur false est utile si votre activité de scraping peut soulever des enjeux de protection des données. L’utilisation de certains paramètres associés à un scraping sensible (actions, en-têtes) forcera ce paramètre à false.", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "Formats à inclure dans le résultat.", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "Options de suivi des modifications (bêta). Applicable uniquement lorsque « changeTracking » est inclus dans les formats. Le format « markdown » doit également être spécifié lors de l’utilisation du suivi des modifications.", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "Le mode à utiliser pour le suivi des modifications. « git-diff » fournit un diff détaillé, et « json » compare les données JSON extraites." + }, + "schema": { + "type": "object", + "description": "Schéma pour l’extraction JSON lors de l’utilisation du mode « json ». Définit la structure des données à extraire et à comparer. Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt à utiliser pour le suivi des modifications lors de l’utilisation du mode « json ». S’il n’est pas renseigné, le prompt par défaut sera utilisé." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag à utiliser pour le suivi des modifications. Les tags peuvent séparer l’historique de suivi des modifications en « branches » distinctes, où le suivi des modifications avec un tag spécifique ne comparera qu’avec les scrapes effectués avec le même tag. Si aucun tag n’est fourni, le tag par défaut (null) sera utilisé." + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `html` figure dans `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `rawHtml` figure parmi les formats" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `screenshot` fait partie de `formats`. Les captures d’écran expirent après 24 heures et ne peuvent plus être téléchargées." + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `links` figure dans `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Résultats des actions spécifiées dans le paramètre `actions`. Uniquement présent si le paramètre `actions` a été fourni dans la requête", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs des captures d’écran, dans le même ordre que les actions de capture d’écran fournies. Les captures d’écran expirent après 24 heures et ne sont alors plus téléchargeables.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extraire le contenu dans le même ordre que les actions de scraping fournies.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valeurs de retour JavaScript, dans le même ordre que les actions executeJavascript spécifiées.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDF générés, dans le même ordre que les actions PDF fournies.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Mots-clés extraits de la page, peuvent être représentés sous forme de chaîne ou de tableau de chaînes de caractères" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Autres paramètres régionaux de la page" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d’état HTTP de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Affiché lors de l’utilisation de l’extraction LLM. Données extraites de la page selon le schéma défini.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Peut s’afficher lors de l’utilisation de l’extraction LLM. Un message d’avertissement vous signalera tout problème lié à l’extraction." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informations de suivi des modifications si `changeTracking` figure dans `formats`. Ces informations ne sont présentes que lorsque le format `changeTracking` est demandé.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "L’horodatage du scraping précédent auquel la page actuelle est comparée. Null s’il n’existe aucun scraping précédent." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "Le résultat de la comparaison entre les deux versions de la page. « new » signifie que cette page n’existait pas auparavant, « same » signifie que le contenu est inchangé, « changed » signifie que le contenu a changé, « removed » signifie que la page a été supprimée." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilité de la page/URL actuelle. « visible » signifie que l’URL a été découverte de manière organique (liens ou sitemap), « hidden » signifie que l’URL a été découverte grâce à la mémoire de crawls précédents." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff au format Git des modifications lors de l’utilisation du mode « git-diff ». Présent uniquement lorsque le mode est défini sur « git-diff »." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Résultats de comparaison JSON lors de l’utilisation du mode `json`. Uniquement disponible lorsque le mode est défini sur `json`. Retourne une liste de toutes les clés et de leurs valeurs issues des extractions `previous` et `current`, en fonction du type défini dans le `schema`. Exemple [ici](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "L’état actuel du crawl. Peut avoir pour valeur `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages ayant fait l'objet d'une tentative de crawl." + }, + "completed": { + "type": "integer", + "description": "Le nombre de pages explorées avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Le nombre de crédits utilisés pour l’opération de crawl." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La date et l’heure d’expiration du crawl." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo de données suivants. Retournée si l’exploration n’est pas terminée ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données du crawl.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` vaut true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` est à true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `includeLinks` est défini sur `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` est défini sur `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Langue extraite de la page, peut être une chaîne ou un tableau de chaînes de caractères" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Mots-clés extraits de la page, pouvant être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Autres paramètres régionaux pour cette page" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Autres métadonnées extraites du HTML, pouvant être une chaîne ou un tableau de chaînes" + }, + "statusCode": { + "type": "integer", + "description": "Le code de statut de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Tâches d’extraction en échec et détails des erreurs", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Horodatage ISO de l’échec" + }, + "url": { + "type": "string", + "description": "URL explorée" + }, + "error": { + "type": "string", + "description": "Message d’erreur" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Liste des URL pour lesquelles le scraping a été tenté mais bloqué par robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Statut actuel de l’extraction par lots. Peut être `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages dont le scraping a été tenté." + }, + "completed": { + "type": "integer", + "description": "Le nombre de pages récupérées avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Le nombre de crédits utilisés pour le scraping par lots." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Date et heure d’expiration du lot de scraping." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo de données suivants. Renvoyée si l’opération de scraping par lots n’est pas terminée ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données du scraping par lots.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` vaut true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut `true`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens de la page si `includeLinks` est défini sur `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne ou un tableau de chaînes de caractères" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Langue extraite de la page ; peut être une chaîne de caractères ou un tableau de chaînes" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Mots‑clés extraits de la page, sous forme de chaîne ou de tableau de chaînes" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Autres paramètres régionaux de la page" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Autres métadonnées extraites du HTML, pouvant être une chaîne ou un tableau de chaînes" + }, + "statusCode": { + "type": "integer", + "description": "Le code de statut de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d'erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs est à true, ce champ est un tableau contenant les URL invalides qui ont été spécifiées dans la requête. S’il n’y a aucune URL invalide, ce sera un tableau vide. Si ignoreInvalidURLs est à false, ce champ sera undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs est défini sur true, il s’agit d’un tableau contenant les URL invalides spécifiées dans la requête. S’il n’y a aucune URL invalide, ce sera un tableau vide. Si ignoreInvalidURLs est défini sur false, ce champ sera undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "Le statut actuel du job d’extraction" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/fr/api-reference/v2-openapi.json b/fr/api-reference/v2-openapi.json new file mode 100644 index 00000000..ee88ba98 --- /dev/null +++ b/fr/api-reference/v2-openapi.json @@ -0,0 +1,3814 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "API pour interagir avec les services Firecrawl afin d’effectuer des tâches de scraping et de crawling web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Récupérer le contenu d’une URL et éventuellement en extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à scraper" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si la valeur est true, cela activera la non-conservation totale des données pour ce scraping. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Scraper plusieurs URL et, au besoin, extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "L’URL à explorer" + } + }, + "webhook": { + "type": "object", + "description": "Un objet de spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Celui-ci sera déclenché au démarrage du scraping par lot (batch_scrape.started), pour chaque page traitée (batch_scrape.page) et lorsque le scraping par lot est terminé (batch_scrape.completed ou batch_scrape.failed). La réponse sera la même que celle de l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans le payload de tous les webhooks pour ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook. (par défaut : tous)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal d’opérations de scraping simultanées. Ce paramètre vous permet de définir une limite du nombre de scrapes exécutés en parallèle pour ce lot. S’il n’est pas renseigné, ce lot de scraping utilisera la limite de parallélisme définie pour votre équipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si des URL non valides sont spécifiées dans le tableau `urls`, elles seront ignorées. Au lieu de faire échouer l’ensemble de la requête, une opération de scraping par lot sera créée avec les URL valides restantes, et les URL non valides seront renvoyées dans le champ `invalidURLs` de la réponse." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette option est définie sur true, cela activera l’absence totale de conservation des données pour cette opération de scraping par lot. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes envoyées", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping par lots", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir l'état d'un job de scraping par lots", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler une tâche de scraping par lots", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Tâche de scraping par lots introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID du job de scraping par lots", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir les erreurs d’un job de scraping par lots", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L'ID de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir le statut d’une tâche de crawl", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler une tâche de crawl", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tâche de crawl introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer les erreurs d'une tâche de crawl", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Explorer plusieurs URL selon les options", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle lancer l’exploration" + }, + "prompt": { + "type": "string", + "description": "Invite à utiliser pour générer les options du crawler (tous les paramètres ci-dessous) à partir d’un texte en langage naturel. Les paramètres définis explicitement auront la priorité sur les équivalents générés." + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs d’expressions régulières pour les chemins d’URL qui excluent du crawl les URL correspondantes. Par exemple, si vous définissez `\"excludePaths\": [\"blog/.*\"]` pour l’URL de base firecrawl.dev, tous les résultats correspondant à ce motif seront exclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs regex de chemins d’URL indiquant quelles URL inclure dans le crawl. Seuls les chemins correspondant aux motifs spécifiés seront inclus dans la réponse. Par exemple, si vous définissez `\"includePaths\": [\"blog/.*\"]` pour l’URL de base firecrawl.dev, seuls les résultats correspondant à ce motif seront inclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profondeur maximale d’exploration basée sur l’ordre de découverte. Le site racine et les pages issues du sitemap ont une profondeur de découverte de 0. Par exemple, si vous la définissez sur 1 et que vous définissez `sitemap: 'skip'`, vous n’explorerez que l’URL saisie ainsi que toutes les URL qui y sont liées depuis cette page." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Mode sitemap lors de l’exploration. Si vous le définissez sur « skip », le crawler ignorera le sitemap du site web et n’explorera que l’URL saisie, en découvrant ensuite les pages à partir de là.", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ne relancez pas le scraping du même chemin avec des paramètres de requête différents (ou sans paramètres)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de pages à explorer. La limite par défaut est de 10 000.", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Autorise le crawler à suivre les liens internes vers des URL de même niveau ou parentes, pas seulement les chemins enfants.\n\nfalse : Explore uniquement les URL plus profondes (enfants).\n→ p. ex. /features/feature-1 → /features/feature-1/tips ✅\n→ Ne suivra pas /pricing ou / ❌\n\ntrue : Explore tous les liens internes, y compris les URL de même niveau et parentes.\n→ p. ex. /features/feature-1 → /pricing, /, etc. ✅\n\nUtilisez true pour une couverture interne plus large au‑delà des chemins imbriqués.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permet au crawler de suivre des liens vers des sites Web externes.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Autorise le crawler à suivre les liens pointant vers les sous-domaines du domaine principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Délai en secondes entre deux opérations de scraping. Cela permet de respecter les limites de fréquence imposées par les sites web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal d’opérations de scraping simultanées. Ce paramètre vous permet de définir une limite de parallélisme pour ce crawl. S’il n’est pas renseigné, le crawl utilise la limite de parallélisme définie pour votre équipe." + }, + "webhook": { + "type": "object", + "description": "Objet de spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Il sera déclenché au démarrage du crawl (crawl.started), pour chaque page explorée (crawl.page) et lorsque le crawl est terminé (crawl.completed ou crawl.failed). La réponse sera identique à celle du point de terminaison `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer vers l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans toutes les charges utiles des webhooks de ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook. (par défaut : tous)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, aucune donnée ne sera conservée pour ce crawl (zéro conservation des données). Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/params-preview": { + "post": { + "summary": "Prévisualiser les paramètres de crawl générés à partir d'une invite en langage naturel", + "operationId": "crawlParamsPreview", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à explorer" + }, + "prompt": { + "type": "string", + "maxLength": 10000, + "description": "Invite en langage naturel décrivant ce que vous souhaitez crawler" + } + }, + "required": [ + "url", + "prompt" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie contenant les paramètres de crawl générés", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à explorer" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs d’URL à inclure" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs d’URL à exclure" + }, + "maxDepth": { + "type": "integer", + "description": "Profondeur maximale de crawl" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profondeur maximale d’exploration" + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Indique s’il faut explorer tout le domaine" + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Autoriser les liens externes" + }, + "allowSubdomains": { + "type": "boolean", + "description": "Détermine s’il faut autoriser les sous-domaines" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Stratégie de traitement du sitemap" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Indique si les paramètres de requête doivent être ignorés" + }, + "deduplicateSimilarURLs": { + "type": "boolean", + "description": "Détermine s’il faut dédupliquer les URL similaires" + }, + "delay": { + "type": "number", + "description": "Intervalle entre les requêtes, en millisecondes" + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de pages à explorer" + } + } + } + } + } + } + } + }, + "400": { + "description": "Requête incorrecte", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid request parameters" + } + } + } + } + } + }, + "401": { + "description": "Non autorisé", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Unauthorized" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Failed to process natural language prompt" + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapper plusieurs URL en fonction des options", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle démarrer le crawl" + }, + "search": { + "type": "string", + "description": "Spécifiez une requête de recherche pour classer les résultats par pertinence. Exemple : « blog » renverra les URL qui contiennent le mot « blog » dans leur adresse, classées par pertinence." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "Mode sitemap lors du mapping. Si vous le réglez sur `skip`, le sitemap ne sera pas utilisé pour trouver des URL. Si vous le réglez sur `only`, seules les URL présentes dans le sitemap seront renvoyées. Par défaut (`include`), le sitemap et d’autres méthodes sont utilisés conjointement pour trouver des URL.", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "Inclure les sous-domaines du site", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ne renvoyez pas d’URL contenant des paramètres de requête", + "default": true + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de liens à retourner", + "default": 5000, + "maximum": 100000 + }, + "timeout": { + "type": "integer", + "description": "Délai d’attente en millisecondes. Aucun délai d’attente n’est appliqué par défaut." + }, + "location": { + "type": "object", + "description": "Paramètres de localisation de la requête. Lorsqu’ils sont spécifiés, un proxy approprié est utilisé, si disponible, et les paramètres de langue et de fuseau horaire correspondants sont émulés. La valeur par défaut est « US » si aucun paramètre n’est spécifié.", + "properties": { + "country": { + "type": "string", + "description": "Code de pays ISO 3166-1 alpha-2 (par exemple « US », « AU », « DE », « JP »)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Langues et paramètres régionaux préférés pour la requête, par ordre de priorité. Par défaut, la langue de l’emplacement spécifié est utilisée. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraire des données structurées à partir de pages grâce aux LLM", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Les URL à partir desquelles extraire les données. Les URL doivent être au format glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt pour orienter le processus d’extraction" + }, + "schema": { + "type": "object", + "description": "Schéma définissant la structure des données extraites. Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Lorsque ce paramètre est défini sur true, l’extraction utilisera la recherche web pour trouver des données supplémentaires", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Lorsque cette option est activée, les fichiers sitemap.xml sont ignorés lors de l’analyse du site web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Lorsque cette option est activée, les sous-domaines des URL fournies sont également analysés", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Lorsque la valeur est `true`, les sources utilisées pour extraire les données sont incluses dans la réponse sous la clé `sources`.", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si des URL invalides sont spécifiées dans le tableau urls, elles seront ignorées. Plutôt que de faire échouer l’intégralité de la requête, une extraction sera effectuée en utilisant les URL valides restantes, et les URL invalides seront renvoyées dans le champ invalidURLs de la réponse." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extraction réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Requête invalide", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’identifiant de la tâche d’extraction", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer le statut d’une tâche d’extraction", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Récupérer tous les crawls actifs de l’équipe authentifiée", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "L’identifiant unique du crawl" + }, + "teamId": { + "type": "string", + "description": "L’identifiant de l’équipe propriétaire du crawl" + }, + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de départ du crawl" + }, + "options": { + "type": "object", + "description": "Options du crawler utilisées pour ce crawl", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obtenir le nombre de crédits restants de l'équipe authentifiée", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "Nombre de crédits restants de l’équipe", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "Nombre de crédits inclus dans le forfait. Les crédits issus de coupons, de packs de crédits ou de recharges automatiques ne sont pas inclus.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez le forfait gratuit", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous êtes sur l’offre gratuite", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informations d’utilisation des crédits introuvables", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtenir l’historique d’utilisation des crédits de l’équipe authentifiée", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des crédits par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé d’API utilisée pour la période de facturation. null si byApiKey est défini sur false (valeur par défaut)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Nombre total de crédits utilisés au cours de la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Récupérer le nombre de jetons restants pour l’équipe authentifiée (extraction uniquement)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "Nombre de jetons restants pour l’équipe", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "Nombre de jetons inclus dans le forfait. Les jetons issus de coupons ne sont pas comptés.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous utilisez l’offre gratuite", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Impossible de trouver les informations sur l’utilisation des jetons", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtenir l’historique d’utilisation des jetons de l’équipe authentifiée (Extract uniquement)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des jetons par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé d’API utilisée pour la période de facturation. null si byApiKey est défini sur false (valeur par défaut)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Nombre total de jetons utilisés au cours de la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "Statistiques sur la file d’attente de scraping de votre équipe", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "Nombre de tâches actuellement en file d’attente" + }, + "activeJobsInQueue": { + "type": "number", + "description": "Nombre de tâches en cours" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "Nombre de tâches actuellement en attente" + }, + "maxConcurrency": { + "type": "number", + "description": "Nombre maximal de tâches actives simultanées en fonction de votre offre" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "Horodatage de la dernière tâche réussie", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Rechercher et éventuellement scraper les résultats de recherche", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La requête de recherche" + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de résultats à renvoyer", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Paramètre de recherche temporel. Prend en charge les plages temporelles prédéfinies (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) ainsi que les plages de dates personnalisées (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Paramètre de localisation pour les résultats de recherche" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Sources à explorer. Détermine les tableaux disponibles dans la réponse.", + "default": [ + "web" + ] + }, + "categories": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "GitHub", + "properties": { + "type": { + "type": "string", + "enum": [ + "github" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Research", + "properties": { + "type": { + "type": "string", + "enum": [ + "research" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Catégories de filtrage des résultats" + }, + "tbs": { + "type": "string", + "description": "Paramètre de recherche temporel. Prend en charge les plages temporelles prédéfinies (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) et les plages de dates personnalisées (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Paramètre de localisation pour les résultats de recherche (par ex. `San Francisco,California,United States`). Pour de meilleurs résultats, définissez ce paramètre ainsi que le paramètre `country`." + }, + "country": { + "type": "string", + "description": "Code pays ISO pour le ciblage géographique des résultats de recherche (par exemple `US`). Pour de meilleurs résultats, définissez ce paramètre ainsi que le paramètre `location`.", + "default": "US" + }, + "timeout": { + "type": "integer", + "description": "Délai d'expiration en millisecondes", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclut des résultats de recherche les URL qui ne sont pas valides pour d’autres endpoints Firecrawl. Cela permet de réduire les erreurs si vous transmettez les données issues de la recherche vers d’autres endpoints de l’API Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "Options pour extraire les résultats de recherche", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre du résultat de recherche" + }, + "description": { + "type": "string", + "description": "Description du résultat de la recherche" + }, + "url": { + "type": "string", + "description": "URL du résultat de la recherche" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenu en Markdown si une opération de scraping a été demandée" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenu HTML si demandé dans les formats de sortie" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut si ce format est demandé dans formats" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liens trouvés lorsqu’ils sont demandés dans les formats" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de capture d’écran si elle est demandée dans les formats. Les captures d’écran expirent au bout de 24 heures et ne peuvent alors plus être téléchargées." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre du résultat de recherche" + }, + "imageUrl": { + "type": "string", + "description": "URL de l’image" + }, + "imageWidth": { + "type": "integer", + "description": "Largeur de l'image" + }, + "imageHeight": { + "type": "integer", + "description": "Hauteur de l’image" + }, + "url": { + "type": "string", + "description": "URL du résultat de la recherche" + }, + "position": { + "type": "integer", + "description": "Position du résultat de recherche" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre de l’article" + }, + "snippet": { + "type": "string", + "description": "Extrait de l’article" + }, + "url": { + "type": "string", + "description": "URL de l’article" + }, + "date": { + "type": "string", + "description": "Date de l’article" + }, + "imageUrl": { + "type": "string", + "description": "URL de l’image de l’article" + }, + "position": { + "type": "integer", + "description": "Position de l’article" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenu Markdown si un scraping a été demandé" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenu HTML si inclus dans les formats demandés" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut si ce format est demandé" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liens trouvés si demandés dans les formats" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la capture d’écran si demandé dans les formats. Les captures d’écran expirent après 24 heures et ne sont alors plus téléchargeables." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "Les résultats de la recherche. Les tableaux disponibles dépendront des sources que vous avez spécifiées dans la requête. Par défaut, le tableau `web` sera renvoyé." + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Message d’avertissement si des problèmes surviennent" + } + } + } + } + } + }, + "408": { + "description": "Délai d'attente dépassé", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "Indique s’il faut effectuer une capture d’écran de la page entière ou la limiter à la zone visible actuelle.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La qualité de la capture d’écran, sur une échelle de 1 à 100. 100 correspond à la qualité maximale." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "Largeur du viewport en pixels" + }, + "height": { + "type": "integer", + "description": "La hauteur du viewport en pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "Le schéma à utiliser pour la sortie JSON. Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "L’invite à utiliser pour la sortie au format JSON" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "Le mode de suivi des modifications à utiliser. « git-diff » fournit un diff détaillé, tandis que « json » compare les données JSON extraites." + }, + "schema": { + "type": "object", + "description": "Schéma JSON pour l’extraction en mode « json ». Définit la structure des données à extraire et à comparer. Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Invite (prompt) à utiliser pour le suivi des modifications en mode « json ». S’il n’est pas fourni, l’invite (prompt) par défaut sera utilisée." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag à utiliser pour le suivi des modifications. Les tags peuvent séparer l’historique du suivi des modifications en « branches » distinctes, où le suivi avec un tag spécifique ne sera comparé qu’aux extractions effectuées avec ce même tag. S’il n’est pas fourni, le tag par défaut (null) sera utilisé." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Branding", + "properties": { + "type": { + "type": "string", + "enum": [ + "branding" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Formats de sortie à inclure dans la réponse. Vous pouvez spécifier un ou plusieurs formats, soit sous forme de chaînes (par ex. `'markdown'`), soit sous forme d’objets avec des options supplémentaires (par ex. `{ type: 'json', schema: {...} }`). Certains formats requièrent la définition d’options spécifiques. Exemple : `['markdown', { type: 'json', schema: {...} }]`.", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Ne renvoyez que le contenu principal de la page, en excluant les en-têtes, éléments de navigation, pieds de page, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à inclure dans le résultat." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à exclure du résultat." + }, + "maxAge": { + "type": "integer", + "description": "Retourne une version mise en cache de la page si elle est plus récente que cette durée (en millisecondes). Si une version mise en cache de la page est plus ancienne que cette valeur, la page sera à nouveau explorée (scrapée). Si vous n’avez pas besoin de données extrêmement récentes, activer cette option peut accélérer vos opérations de scraping de 500 %. Par défaut : 2 jours.", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "En-têtes à inclure dans la requête. Peuvent être utilisés pour envoyer des cookies, un user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Indiquez un délai en millisecondes avant de récupérer le contenu, afin de laisser à la page suffisamment de temps pour se charger. Ce temps d’attente s’ajoute à la fonction d’attente intelligente de Firecrawl.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Définissez cette option sur true pour simuler le scraping depuis un appareil mobile. Utile pour tester des pages responsives et prendre des captures d’écran en mode mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorer la vérification du certificat TLS lors de l’envoi de requêtes", + "default": true + }, + "timeout": { + "type": "integer", + "description": "Durée avant expiration de la requête, en millisecondes." + }, + "parsers": { + "type": "array", + "description": "Contrôle la façon dont les fichiers sont traités lors du scraping. Lorsque « pdf » est inclus (valeur par défaut), le contenu du PDF est extrait et converti au format markdown, avec une facturation basée sur le nombre de pages (1 crédit par page). Lorsqu’un tableau vide est fourni, le fichier PDF est renvoyé en encodage base64 avec un tarif forfaitaire de 1 crédit au total.", + "items": { + "oneOf": [ + { + "type": "string", + "enum": [ + "pdf" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "maxPages": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "description": "Nombre maximal de pages du PDF à analyser. Doit être un entier positif inférieur ou égal à 10 000." + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "Actions à effectuer sur la page avant de récupérer le contenu", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Attendre pendant un certain nombre de millisecondes" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Délai d’attente en millisecondes" + }, + "selector": { + "type": "string", + "description": "Sélecteur de requête pour rechercher l’élément par", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Prenez une capture d’écran. Les liens se trouveront dans le tableau `actions.screenshots` de la réponse." + }, + "fullPage": { + "type": "boolean", + "description": "Indique s’il faut prendre une capture d’écran de la page entière ou la limiter à la zone actuellement visible (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "Qualité de la capture d’écran, de 1 à 100, 100 étant la meilleure qualité." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "La largeur de la fenêtre d’affichage, en pixels" + }, + "height": { + "type": "integer", + "description": "Hauteur du viewport en pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Cliquez sur un élément" + }, + "selector": { + "type": "string", + "description": "Sélecteur pour trouver l’élément par", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clique sur tous les éléments correspondant au sélecteur, et pas seulement sur le premier. Ne lève pas d’erreur si aucun élément ne correspond au sélecteur.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Écrivez du texte dans un champ de saisie, une zone de texte ou un élément contenteditable. Remarque : vous devez d’abord placer le focus sur l’élément à l’aide d’une action « click » avant d’écrire. Le texte sera saisi caractère par caractère pour simuler une saisie au clavier." + }, + "text": { + "type": "string", + "description": "Texte à saisir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Appuyez sur une touche du clavier. Reportez-vous à https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html pour la liste des codes de touches.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Appuyez sur une touche de la page" + }, + "key": { + "type": "string", + "description": "Touche sur laquelle appuyer", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Faites défiler la page ou un élément spécifique" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sens de défilement", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Sélecteur CSS de l’élément à faire défiler", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrait le contenu de la page actuelle et renvoie l’URL et le HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Exécuter du code JavaScript sur la page" + }, + "script": { + "type": "string", + "description": "Code JavaScript à exécuter", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Génère un PDF de la page en cours. Le PDF sera renvoyé dans le tableau `actions.pdfs` de la réponse." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "Le format de page du PDF obtenu", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Détermine s’il faut générer le PDF au format paysage", + "default": false + }, + "scale": { + "type": "number", + "description": "Facteur d’échelle du PDF généré", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Paramètres de localisation pour la requête. Lorsqu’ils sont définis, un proxy approprié sera utilisé si disponible et les paramètres de langue et de fuseau horaire correspondants seront simulés. La valeur par défaut est « US » si aucun n’est spécifié.", + "properties": { + "country": { + "type": "string", + "description": "Code de pays ISO 3166-1 alpha-2 (p. ex. « US », « AU », « DE », « JP »)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Langues et paramètres régionaux préférés pour la requête, par ordre de priorité. Utilise par défaut la langue de l’emplacement spécifié. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Supprime toutes les images encodées en base64 de la sortie, car elles peuvent être très volumineuses. Le texte alternatif de l’image est conservé dans la sortie, mais l’URL est remplacée par une valeur fictive.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Active le blocage des publicités et des fenêtres contextuelles de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Spécifie le type de proxy à utiliser.\n\n - **basic** : proxies pour le scraping de sites sans, ou avec des solutions anti-bot basiques. Rapides et généralement efficaces.\n - **stealth** : proxies furtifs pour le scraping de sites avec des solutions anti-bot avancées. Plus lents, mais plus fiables sur certains sites. Coût pouvant aller jusqu’à 5 crédits par requête.\n - **auto** : Firecrawl réessaiera automatiquement le scraping avec des proxies furtifs si le proxy basic échoue. Si la nouvelle tentative avec stealth réussit, 5 crédits seront facturés pour le scraping. Si la première tentative avec basic réussit, seul le coût standard sera facturé.\n\nSi vous ne spécifiez pas de proxy, Firecrawl utilisera auto par défaut.", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "Si ce paramètre est défini sur true, la page sera stockée dans l’index et le cache de Firecrawl. Le définir sur false est utile si votre activité de scraping peut soulever des questions de protection des données. L’utilisation de certains paramètres associés à un scraping sensible (actions, en-têtes) forcera la valeur de ce paramètre à false.", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "Résumé de la page si `summary` est inclus dans `formats`" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `html` figure dans `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `rawHtml` fait partie des `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `screenshot` est inclus dans `formats`. Les captures d’écran expirent au bout de 24 heures et ne peuvent ensuite plus être téléchargées." + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens sur la page si `links` fait partie de `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Résultats des actions spécifiées via le paramètre `actions`. Uniquement présent si ce paramètre a été fourni dans la requête", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs des captures d’écran, dans le même ordre que les actions de capture d’écran indiquées.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extraire le contenu dans le même ordre que les actions de scraping fournies.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valeurs renvoyées par JavaScript, dans le même ordre que les actions executeJavascript fournies.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDF générés, dans le même ordre que les actions PDF fournies.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Langue extraite de la page, peut être une chaîne ou un tableau de chaînes de caractères" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Mots-clés extraits de la page, sous forme d’une chaîne ou d’un tableau de chaînes" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Autres paramètres régionaux pour la page" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Autres métadonnées extraites du HTML, sous forme de chaîne ou de tableau de chaînes" + }, + "statusCode": { + "type": "integer", + "description": "Le code de statut de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Peut être affiché lorsque vous utilisez l’extraction LLM. Un message d’avertissement vous indiquera tout problème lors de l’extraction." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informations de suivi des modifications si `changeTracking` figure dans `formats`. Uniquement présent lorsque le format `changeTracking` est demandé.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "L’horodatage du précédent scrape auquel la page actuelle est comparée. Null s’il n’y a eu aucun scrape précédent." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "Le résultat de la comparaison entre les deux versions de la page. « new » signifie que cette page n’existait pas auparavant, « same » indique que le contenu n’a pas changé, « changed » indique que le contenu a été modifié, « removed » signifie que la page a été supprimée." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilité de la page/URL actuelle. « visible » signifie que l’URL a été découverte via une voie organique (liens ou sitemap), « hidden » signifie que l’URL a été découverte à partir de la mémoire de crawls précédents." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff des modifications au format Git lors de l’utilisation du mode « git-diff ». Uniquement présent lorsque le mode est activé sur « git-diff »." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Résultats de comparaison JSON lors de l’utilisation du mode `json`. Uniquement disponible lorsque le mode est défini sur `json`. Produit une liste de toutes les clés et de leurs valeurs à partir des extractions `previous` et `current`, en fonction du type défini dans le `schema`. Exemple [ici](/features/change-tracking)" + } + } + }, + "branding": { + "type": "object", + "nullable": true, + "description": "Informations de branding extraites de la page si `branding` figure dans `formats`. Inclut les couleurs, les polices, la typographie, l’espacement, les composants, et plus encore." + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Statut actuel du crawl. Peut être `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages pour lesquelles un crawl a été tenté." + }, + "completed": { + "type": "integer", + "description": "Nombre de pages explorées avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Le nombre de crédits utilisés pour le crawl." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La date et l’heure d’expiration du crawl." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo de données suivants. Renvoyée si l’exploration n’est pas terminée ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données du crawl.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` vaut true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `includeLinks` est défini à `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne ou un tableau de chaînes de caractères" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Langue extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Mots-clés extraits de la page ; peut être une chaîne ou un tableau de chaînes" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Autres locales pour la page" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d’état de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Tâches de scraping en échec et détails des erreurs", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Horodatage ISO de l’échec" + }, + "url": { + "type": "string", + "description": "URL explorée" + }, + "error": { + "type": "string", + "description": "Message d’erreur" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Liste des URL qui ont été tentées lors du scraping mais bloquées par robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "État actuel du scraping par lot. Peut être `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages pour lesquelles un scraping a été tenté." + }, + "completed": { + "type": "integer", + "description": "Le nombre de pages récupérées avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Nombre de crédits utilisés pour le scraping en lot." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La date et l’heure d’expiration du lot de scraping." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo de données suivants. Renvoyée si le scraping par lots n’est pas terminé ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données de l'extraction par lots.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` vaut true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `includeLinks` est vrai" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Titre extrait de la page, peut être une chaîne ou un tableau de chaînes de caractères" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Description extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Langue extraite de la page, peut être une chaîne de caractères ou un tableau de chaînes de caractères" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Mots-clés extraits de la page, sous forme de chaîne ou de tableau de chaînes" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Paramètres régionaux alternatifs de la page" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d’état HTTP de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs vaut true, ce champ est un tableau contenant les URL non valides qui ont été spécifiées dans la requête. S’il n’y a aucune URL non valide, ce sera un tableau vide. Si ignoreInvalidURLs vaut false, ce champ sera undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string", + "description": "Le titre de la page, le cas échéant." + }, + "description": { + "type": "string", + "description": "Description de la page, le cas échéant." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs vaut true, ce champ est un tableau contenant les URL non valides qui ont été spécifiées dans la requête. S’il n’y a aucune URL non valide, ce sera un tableau vide. Si ignoreInvalidURLs vaut false, ce champ sera undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "L’état actuel de la tâche d’extraction" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "Nombre de tokens utilisés pour la tâche d’extraction. Uniquement disponible lorsque la tâche est terminée." + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/fr/contributing/guide.mdx b/fr/contributing/guide.mdx index 9ae1c694..66713c45 100644 --- a/fr/contributing/guide.mdx +++ b/fr/contributing/guide.mdx @@ -77,7 +77,6 @@ POSTHOG_HOST= # à définir si vous souhaitez envoyer des événements PostHog c ``` -
### Installation des dépendances
@@ -89,7 +88,6 @@ Commencez par installer les dépendances avec pnpm. pnpm install # assurez-vous d’avoir pnpm en version 9 ou supérieure ! ``` -
### Exécution du projet
@@ -106,7 +104,6 @@ Exécutez la commande n’importe où dans votre projet redis-server ``` -
### Terminal 2 - configuration du service
@@ -120,7 +117,6 @@ pnpm start Cela va démarrer les workers chargés de traiter les jobs de crawl. -
### Terminal 3 - envoi de notre première requête.
@@ -143,7 +139,6 @@ curl -X POST http://localhost:3002/v1/crawl \ }' ``` -
### Alternative : utiliser Docker Compose
@@ -160,7 +155,6 @@ docker compose up Cela lancera automatiquement Redis, le serveur d’API et les workers avec la configuration appropriée. -
## Tests :
diff --git a/fr/contributing/self-host.mdx b/fr/contributing/self-host.mdx index 368d8617..d4e61664 100644 --- a/fr/contributing/self-host.mdx +++ b/fr/contributing/self-host.mdx @@ -173,7 +173,6 @@ Cela démarre une instance locale de Firecrawl accessible à l’adresse `http:/ Vous devriez voir l’interface Bull Queue Manager à l’adresse `http://localhost:3002/admin/@/queues`. - 5. *(Facultatif)* Tester l’API Si vous souhaitez tester le point de terminaison de crawl, vous pouvez exécuter : @@ -186,7 +185,6 @@ Si vous souhaitez tester le point de terminaison de crawl, vous pouvez exécuter }' ``` -
## Dépannage
@@ -207,7 +205,6 @@ Cette section propose des solutions aux problèmes courants que vous pouvez renc **Explication :** Cette erreur se produit parce que la configuration du client Supabase n’est pas finalisée. Vous devriez pouvoir lancer des opérations de scraping et de crawling sans problème. À l’heure actuelle, il n’est pas possible de configurer Supabase sur des instances auto‑hébergées. -
### Vous contournez l’authentification
@@ -221,7 +218,6 @@ Cette erreur se produit parce que la configuration du client Supabase n’est pa **Explication :** Cette erreur se produit parce que la configuration du client Supabase n’est pas terminée. Vous devriez pouvoir effectuer des opérations de scraping et de crawling sans problème. À l’heure actuelle, il n’est pas possible de configurer Supabase sur des instances auto-hébergées. -
### Échec du démarrage des conteneurs Docker
@@ -239,7 +235,6 @@ docker logs [nom_du_conteneur] * Assurez-vous que toutes les variables d’environnement requises sont correctement définies dans le fichier .env. * Vérifiez que tous les services Docker définis dans docker-compose.yml sont correctement configurés et que les images nécessaires sont disponibles. -
### Problèmes de connexion à Redis
diff --git a/fr/developer-guides/advanced-guides/authenticated-scraping.mdx b/fr/developer-guides/advanced-guides/authenticated-scraping.mdx index e8afade1..3085905e 100644 --- a/fr/developer-guides/advanced-guides/authenticated-scraping.mdx +++ b/fr/developer-guides/advanced-guides/authenticated-scraping.mdx @@ -108,7 +108,6 @@ auth-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJleGFtcGxlLXVzZXIt **Important :** Les cookies sont des informations d’authentification sensibles. Ne les partagez jamais publiquement et ne les enregistrez pas dans le système de contrôle de version. Traitez-les comme des mots de passe. -
### Étape 2 : Utiliser les cookies avec Firecrawl
@@ -131,7 +130,6 @@ const result = await app.scrape("https://firecrawl-auth.vercel.app/dashboard", { console.log("=== Markdown ===\n" + result.markdown + "\n\n=== Screenshot URL ===\n" + result.screenshot); ``` -
## Bonnes pratiques
diff --git a/fr/developer-guides/common-sites/amazon.mdx b/fr/developer-guides/common-sites/amazon.mdx index 79e5eb62..67297fab 100644 --- a/fr/developer-guides/common-sites/amazon.mdx +++ b/fr/developer-guides/common-sites/amazon.mdx @@ -15,7 +15,6 @@ Amazon est l’un des sites de e-commerce les plus scrappés. Ce guide vous mont npm install @mendable/firecrawl-js zod ``` -
## Vue d’ensemble
@@ -64,7 +63,6 @@ console.log('✅ Données produit validées :'); console.log(validated); ``` - @@ -87,7 +85,6 @@ const searchResult = await firecrawl.search('ordinateur portable gaming site:ama console.log(searchResult); ``` -
## Scrape
@@ -107,7 +104,6 @@ const result = await firecrawl.scrape('https://www.amazon.com/ASUS-ROG-Strix-Gam console.log(result); ``` -
## Map
@@ -125,7 +121,6 @@ console.log(mapResult.links); // Retourne un tableau d'URL sans contenu ``` -
## Exploration
@@ -147,7 +142,6 @@ const crawlResult = await firecrawl.crawl('https://www.amazon.com/s?k=mechanical console.log(crawlResult.data); ``` -
## Extraction par lots
diff --git a/fr/developer-guides/common-sites/etsy.mdx b/fr/developer-guides/common-sites/etsy.mdx index abc3a1eb..51e2751b 100644 --- a/fr/developer-guides/common-sites/etsy.mdx +++ b/fr/developer-guides/common-sites/etsy.mdx @@ -15,7 +15,6 @@ Etsy est une place de marché mondiale pour des articles uniques et créatifs. C npm install @mendable/firecrawl-js zod ``` -
## Vue d’ensemble
@@ -63,7 +62,6 @@ console.log('✅ Données de l'annonce validées :'); console.log(validated); ``` - @@ -86,7 +84,6 @@ const searchResult = await firecrawl.search('handmade jewelry site:etsy.com', { console.log(searchResult); ``` -
## Scrape
@@ -106,7 +103,6 @@ const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/h console.log(result); ``` -
## Cartographie
@@ -124,7 +120,6 @@ console.log(mapResult.links); // Retourne un tableau d'URL sans contenu ``` -
## Crawl
@@ -146,7 +141,6 @@ const crawlResult = await firecrawl.crawl('https://www.etsy.com/c/jewelry', { console.log(crawlResult.data); ``` -
## Scraping par lots
diff --git a/fr/developer-guides/common-sites/github.mdx b/fr/developer-guides/common-sites/github.mdx index 2f2363d6..e5ec0d79 100644 --- a/fr/developer-guides/common-sites/github.mdx +++ b/fr/developer-guides/common-sites/github.mdx @@ -13,7 +13,6 @@ Découvrez comment utiliser les fonctionnalités clés de Firecrawl pour scraper npm install @mendable/firecrawl-js zod ``` -
## Extraction en mode JSON
@@ -43,7 +42,6 @@ const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', console.log(result.json); ``` - @@ -66,7 +64,6 @@ const searchResult = await firecrawl.search('machine learning site:github.com', console.log(searchResult); ``` -
## Scrape
@@ -85,7 +82,6 @@ const result = await firecrawl.scrape('https://github.com/mendableai/firecrawl', console.log(result); ``` -
## Cartographie
@@ -103,7 +99,6 @@ console.log(mapResult.links); // Retourne un tableau d'URL sans contenu ``` -
## Crawl
@@ -125,7 +120,6 @@ const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wik console.log(crawlResult.data); ``` -
## Récupération par lot
@@ -157,7 +151,6 @@ console.log(job.status, job.completed, job.total); console.log(job); ``` -
## Scraping par lots avec le mode JSON
diff --git a/fr/developer-guides/common-sites/wikipedia.mdx b/fr/developer-guides/common-sites/wikipedia.mdx index 61b2be84..bf725333 100644 --- a/fr/developer-guides/common-sites/wikipedia.mdx +++ b/fr/developer-guides/common-sites/wikipedia.mdx @@ -13,7 +13,6 @@ Apprenez à scraper Wikipédia efficacement pour la recherche, l’extraction de npm install @mendable/firecrawl-js zod ``` -
## Cas d’usage
@@ -52,7 +51,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/JavaScript' console.log(result.json); ``` - @@ -75,7 +73,6 @@ const searchResult = await firecrawl.search('quantum computing site:en.wikipedia console.log(searchResult); ``` -
## Scrape
@@ -95,7 +92,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/Artificial_ console.log(result); ``` -
## Cartographie
@@ -113,7 +109,6 @@ console.log(mapResult.links); // Retourne un tableau d'URL sans contenu ``` -
## Crawl
@@ -135,7 +130,6 @@ const crawlResult = await firecrawl.crawl('https://en.wikipedia.org/wiki/Portal: console.log(crawlResult.data); ``` -
## Extraction par lots
diff --git a/fr/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx b/fr/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx index 418ace5f..e2398bf8 100644 --- a/fr/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx +++ b/fr/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx @@ -740,7 +740,6 @@ const result = streamText({ Le SDK d’IA prend en charge plus de 20 fournisseurs via la même API. En savoir plus : [ai-sdk.dev/docs/foundations/providers-and-models](https://ai-sdk.dev/docs/foundations/providers-and-models). -
### Personnaliser l’interface
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/anthropic.mdx b/fr/developer-guides/llm-sdks-and-frameworks/anthropic.mdx index 93ccac67..dd03644f 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/anthropic.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/anthropic.mdx @@ -22,7 +22,6 @@ ANTHROPIC_API_KEY=votre_clé_anthropic > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. -
## Extraction + Résumé
@@ -53,7 +52,6 @@ const message = await anthropic.messages.create({ console.log('Réponse :', message); ``` -
## Utilisation des outils
@@ -108,7 +106,6 @@ if (toolUse && toolUse.type === 'tool_use') { } ``` -
## Extraction structurée
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/gemini.mdx b/fr/developer-guides/llm-sdks-and-frameworks/gemini.mdx index ec5fa350..603f1de1 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/gemini.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/gemini.mdx @@ -22,7 +22,6 @@ GEMINI_API_KEY=votre_clé_gemini > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. -
## Extraction + Résumé
@@ -50,7 +49,6 @@ const response = await ai.models.generateContent({ console.log('Résumé :', response.text); ``` -
## Analyse du contenu
@@ -87,7 +85,6 @@ const result2 = await chat.sendMessage({ console.log('4ème et 5ème stories :', result2.text); ``` -
## Extraction structurée
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/google-adk.mdx b/fr/developer-guides/llm-sdks-and-frameworks/google-adk.mdx index 895548e9..0b341f3c 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/google-adk.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/google-adk.mdx @@ -174,7 +174,6 @@ response = research_agent.run("Quelles sont les dernières fonctionnalités de P print(response) ``` -
## Bonnes pratiques
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/langchain.mdx b/fr/developer-guides/llm-sdks-and-frameworks/langchain.mdx index 52ca8fcb..baeb9d15 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/langchain.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/langchain.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=votre_clé_openai > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. -
## Scrape + Chat
@@ -53,7 +52,6 @@ const response = await chat.invoke([ console.log('Résumé :', response.content); ``` -
## Chaînes
@@ -94,7 +92,6 @@ const result = await chain.invoke({ console.log('Résultat de la chaîne :', result); ``` -
## Appel d’outils
@@ -137,7 +134,6 @@ console.log('Réponse :', response.content); console.log('Appels d'outils :', response.tool_calls); ``` -
## Extraction de données structurées
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/langgraph.mdx b/fr/developer-guides/llm-sdks-and-frameworks/langgraph.mdx index a75d94c7..ef76ec32 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/langgraph.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/langgraph.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=votre_clé_openai > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. -
## Workflow de base
@@ -81,7 +80,6 @@ const result = await app.invoke({ console.log(JSON.stringify(result, null, 2)); ``` -
## Flux de travail multi‑étapes
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx b/fr/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx index 405436ee..f848e560 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=votre_clé_openai > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. - diff --git a/fr/developer-guides/llm-sdks-and-frameworks/mastra.mdx b/fr/developer-guides/llm-sdks-and-frameworks/mastra.mdx index 2c701b89..6c39c4d5 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/mastra.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/mastra.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=votre_clé_openai > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. -
## Flux de travail en plusieurs étapes
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/openai.mdx b/fr/developer-guides/llm-sdks-and-frameworks/openai.mdx index b27f792e..8514712f 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/openai.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/openai.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=votre_clé_openai > **Remarque :** Si vous utilisez Node < 20, installez `dotenv` et ajoutez `import 'dotenv/config'` à votre code. -
## Scraper + Résumer
@@ -54,7 +53,6 @@ const completion = await openai.chat.completions.create({ console.log('Résumé :', completion.choices[0]?.message.content); ``` -
## Appels de fonctions
@@ -130,7 +128,6 @@ if (message?.tool_calls && message.tool_calls.length > 0) { } ``` -
## Extraction de données structurées
@@ -185,7 +182,6 @@ const companyInfo = content ? CompanyInfoSchema.parse(JSON.parse(content)) : nul console.log('Informations de l'entreprise validées :', companyInfo); ``` -
## Recherche + Analyse
@@ -220,7 +216,6 @@ const analysis = await openai.chat.completions.create({ console.log('Analyse :', analysis.choices[0]?.message?.content); ``` -
## API Responses avec MCP
diff --git a/fr/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx b/fr/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx index a7175e94..809f1087 100644 --- a/fr/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx +++ b/fr/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx @@ -24,7 +24,6 @@ OPENAI_API_KEY=sk-your-key Ces exemples utilisent OpenAI, mais les outils Firecrawl fonctionnent avec n'importe quel fournisseur du SDK Vercel AI, y compris Anthropic, Google, Mistral et d'autres. Consultez la liste complète des [fournisseurs pris en charge](https://ai-sdk.dev/providers/ai-sdk-providers). -
## Guide de démarrage rapide
@@ -41,7 +40,6 @@ const { text } = await generateText({ }); ``` -
## Outils disponibles
@@ -60,7 +58,6 @@ import { } from 'firecrawl-aisdk'; ``` -
## Exemples
@@ -83,7 +80,6 @@ const { text } = await generateText({ console.log(text); ``` - @@ -102,7 +98,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Cartographie
@@ -121,7 +116,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Crawl
@@ -142,7 +136,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Extraction par lots
@@ -163,7 +156,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Extraction
@@ -184,7 +176,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Recherche + Extraction
@@ -203,7 +194,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Streaming
diff --git a/fr/developer-guides/mcp-setup-guides/chatgpt.mdx b/fr/developer-guides/mcp-setup-guides/chatgpt.mdx new file mode 100644 index 00000000..ded5048b --- /dev/null +++ b/fr/developer-guides/mcp-setup-guides/chatgpt.mdx @@ -0,0 +1,124 @@ +--- +title: "Recherche et scraping web MCP dans ChatGPT" +description: "Ajoutez le scraping et la recherche web à ChatGPT en 2 minutes" +--- + + +La prise en charge de MCP dans ChatGPT est actuellement une fonctionnalité bêta. L’interface et la disponibilité peuvent évoluer au fur et à mesure du développement par OpenAI. + + + +**Disponibilité :** Le mode développeur avec connecteurs MCP n’est pas disponible avec l’offre gratuite et nécessite un abonnement ChatGPT payant. La disponibilité et les fonctionnalités varient selon la formule et la région. Consultez [la documentation d’OpenAI sur le mode développeur](https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta) pour connaître la disponibilité actuelle et les instructions de configuration. + + +Ajoutez des fonctionnalités de scraping et de recherche web à ChatGPT avec Firecrawl MCP. + +
+ ## Configuration rapide +
+ +
+ ### 1. Obtenir votre clé API +
+ +Inscrivez-vous sur [firecrawl.dev/app/api-keys](https://www.firecrawl.dev/app/api-keys) et copiez votre clé API. + +
+ ### 2. Activer le mode développeur +
+ +Ouvrez les paramètres de ChatGPT en cliquant sur votre nom d'utilisateur dans le coin inférieur gauche, ou accédez directement à [chatgpt.com/#settings](https://chatgpt.com/#settings). + +Dans la fenêtre des paramètres, faites défiler jusqu'en bas et sélectionnez **Advanced Settings**. Activez **Developer mode** en basculant l’interrupteur sur ON. + + + Paramètres de ChatGPT affichant Advanced Settings avec l’interrupteur Developer mode + + +
+ ### 3. Créer le connecteur +
+ +Avec le mode Developer activé, allez dans l'onglet **Apps & Connectors** dans la même fenêtre de paramètres. + +Cliquez sur le bouton **Create** dans le coin supérieur droit. + + + Onglet Apps & Connectors avec le bouton Create mis en évidence + + +Renseignez les détails du connecteur : + +- **Name :** `Firecrawl MCP` +- **Description :** `Web scraping, crawling, search, and content extraction` (facultatif) +- **MCP Server URL :** `https://mcp.firecrawl.dev/YOUR_API_KEY_HERE/v2/mcp` +- **Authentication :** `None` + +Remplacez `YOUR_API_KEY_HERE` dans l’URL par votre [clé API Firecrawl](https://www.firecrawl.dev/app/api-keys). + + + Nouveau formulaire de connecteur rempli avec les détails de Firecrawl MCP + + +Cochez la case **"I understand and want to continue"**, puis cliquez sur **Create**. + +
+ ### 4. Vérifier la configuration +
+ +Retournez à l'interface principale de ChatGPT. Vous devriez voir le **Mode développeur** affiché, ce qui indique que les connecteurs MCP sont actifs. + +Si vous ne voyez pas le Mode développeur, actualisez la page. S'il n'apparaît toujours pas, rouvrez les paramètres et vérifiez que le Mode développeur est bien activé dans les paramètres avancés. + +
+ ### 5. Accéder aux outils Firecrawl +
+ +Pour utiliser Firecrawl dans une conversation, cliquez sur le bouton **+** dans la zone de saisie du chat, puis sélectionnez **More**, puis **Firecrawl MCP**. + + + Zone de saisie de conversation de ChatGPT affichant le menu + développé avec le sous-menu More et l’option Firecrawl MCP + + +
+ ## Démo rapide +
+ +Avec Firecrawl MCP sélectionné, essayez les prompts suivants : + +**Recherche :** + +``` +Search for the latest React Server Components updates +``` + +**Scraping :** + +``` +Scrape firecrawl.dev and tell me what it does +``` + +**Obtenir la documentation :** + +``` +Extrais la documentation Vercel sur les edge functions et fais-en un résumé +``` + + +
+ ## Confirmation de l’outil +
+ +Lorsque ChatGPT utilise les outils MCP de Firecrawl, une invite de confirmation s’affiche pour demander votre approbation. + + + Boîte de dialogue de confirmation d’outil de ChatGPT affichant une requête Firecrawl MCP + + +Vous pouvez cocher **« Se souvenir pour cette conversation »** pour éviter les confirmations répétées au cours de la même session de chat. Cette mesure de sécurité est mise en place par OpenAI pour garantir que les outils MCP n’exécutent pas d’actions non intentionnelles. + +Une fois la demande confirmée, ChatGPT exécutera la requête et renverra les résultats. + + + Exemple de résultats de recherche Firecrawl affichés dans ChatGPT + \ No newline at end of file diff --git a/fr/developer-guides/mcp-setup-guides/claude-code.mdx b/fr/developer-guides/mcp-setup-guides/claude-code.mdx index 5a496bb2..2b81f0c8 100644 --- a/fr/developer-guides/mcp-setup-guides/claude-code.mdx +++ b/fr/developer-guides/mcp-setup-guides/claude-code.mdx @@ -27,7 +27,6 @@ Remplacez `your-api-key` par votre clé d’API Firecrawl. C’est tout ! Vous pouvez maintenant effectuer des recherches et extraire des données du web depuis Claude Code. -
## Démo rapide
diff --git a/fr/developer-guides/mcp-setup-guides/cursor.mdx b/fr/developer-guides/mcp-setup-guides/cursor.mdx index d7bc7919..4fb920f7 100644 --- a/fr/developer-guides/mcp-setup-guides/cursor.mdx +++ b/fr/developer-guides/mcp-setup-guides/cursor.mdx @@ -37,7 +37,6 @@ Ouvrez les préférences (`Cmd+,`), recherchez « MCP », puis ajoutez : Remplacez `your_api_key_here` par votre clé API Firecrawl. -
### 3. Redémarrer Cursor
diff --git a/fr/developer-guides/mcp-setup-guides/factory-ai.mdx b/fr/developer-guides/mcp-setup-guides/factory-ai.mdx index 0acda92f..53292432 100644 --- a/fr/developer-guides/mcp-setup-guides/factory-ai.mdx +++ b/fr/developer-guides/mcp-setup-guides/factory-ai.mdx @@ -33,7 +33,6 @@ curl -fsSL https://app.factory.ai/cli | sh iwr https://app.factory.ai/cli/install.ps1 -useb | iex ``` -
### 3. Ajouter le serveur MCP Firecrawl
@@ -46,7 +45,6 @@ Dans l’interface en ligne de commande (CLI) de Factory Droid, ajoutez Firecraw Remplacez `your-api-key-here` par votre clé API Firecrawl. -
### 4. C’est fait !
diff --git a/fr/developer-guides/mcp-setup-guides/windsurf.mdx b/fr/developer-guides/mcp-setup-guides/windsurf.mdx index d4db83f0..dbf4366b 100644 --- a/fr/developer-guides/mcp-setup-guides/windsurf.mdx +++ b/fr/developer-guides/mcp-setup-guides/windsurf.mdx @@ -37,7 +37,6 @@ Ajoutez ceci à votre `./codeium/windsurf/model_config.json` : Remplacez `YOUR_API_KEY` par votre clé API Firecrawl. -
### 3. Redémarrez Windsurf
diff --git a/fr/features/alpha/llmstxt-npx.mdx b/fr/features/alpha/llmstxt-npx.mdx index 79bf74b7..81bf08db 100644 --- a/fr/features/alpha/llmstxt-npx.mdx +++ b/fr/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Vous pouvez exécuter ce package avec npx sans l’installer. Il existe deux man npx generate-llmstxt --api-key VOTRE_CLÉ_API_FIRECRAWL ``` -
### 2. Utilisation des variables d’environnement
@@ -47,7 +46,6 @@ Ensuite, exécutez la commande sans l’option --api-key : npx generate-llmstxt ``` -
### Options
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## Prérequis
diff --git a/fr/features/change-tracking.mdx b/fr/features/change-tracking.mdx index 9c3ab185..90ab13e8 100644 --- a/fr/features/change-tracking.mdx +++ b/fr/features/change-tracking.mdx @@ -82,7 +82,6 @@ Exemple de réponse : } ``` -
### Options avancées
@@ -170,7 +169,6 @@ if 'json' in result.change_tracking: ... ``` -
### Exemple de résultats de comparaison JSON :
@@ -184,7 +182,6 @@ if 'json' in result.change_tracking: } ``` -
### Modèles de données
@@ -278,7 +275,6 @@ La représentation JSON structurée du diff comprend : * `chunks` : sections de modifications à l’intérieur d’un fichier * `changes` : modifications de lignes individuelles avec type (add, delete, normal) -
### Mode JSON
@@ -302,7 +298,6 @@ Exemple de sortie : Pour utiliser le mode JSON, vous devez fournir un schéma qui définit les champs à extraire et à comparer. -
## Faits importants
@@ -353,7 +348,6 @@ Voici quelques points essentiels à connaître lors de l’utilisation de la fon } ``` - ### Exemple d'exploration ```json @@ -366,7 +360,6 @@ Voici quelques points essentiels à connaître lors de l’utilisation de la fon } ``` -
### Suivi des variations de prix des produits
diff --git a/fr/features/extract.mdx b/fr/features/extract.mdx index a33f8fc4..7e6e30b6 100644 --- a/fr/features/extract.mdx +++ b/fr/features/extract.mdx @@ -32,7 +32,6 @@ Le point de terminaison `/extract` simplifie la collecte de données structurée Nous avons simplifié la facturation afin qu’Extract utilise désormais des crédits, comme tous les autres points de terminaison. Chaque crédit équivaut à 15 tokens. -
## Utilisation de `/extract`
diff --git a/fr/features/search-v0.mdx b/fr/features/search-v0.mdx index ffbcad3e..ff896e25 100644 --- a/fr/features/search-v0.mdx +++ b/fr/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Avec le SDK Python
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### Rechercher une requête
@@ -94,7 +92,6 @@ result = app.search(query="Qu’est-ce que Firecrawl ?") La réponse sera similaire à celle affichée dans la commande curl ci-dessus. -
### Avec le SDK JavaScript
@@ -107,7 +104,6 @@ La réponse sera similaire à celle affichée dans la commande curl ci-dessus. npm install @mendable/firecrawl-js ``` -
#### Rechercher une requête
@@ -124,7 +120,6 @@ const result = await app.search('Qu’est-ce que Firecrawl ?'); La réponse sera similaire à celle de la commande curl ci-dessus. -
### Avec le SDK Go
@@ -137,7 +132,6 @@ La réponse sera similaire à celle de la commande curl ci-dessus. go get github.com/mendableai/firecrawl-go ``` -
#### Rechercher une requête
@@ -165,7 +159,6 @@ func main() { } ``` -
### Avec le SDK Rust
@@ -188,7 +181,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### Rechercher une requête
diff --git a/fr/integrations/camelai.mdx b/fr/integrations/camelai.mdx index eca76ee3..e9cdd7d2 100644 --- a/fr/integrations/camelai.mdx +++ b/fr/integrations/camelai.mdx @@ -14,7 +14,6 @@ pip install camel-ai ``` -
## Utilisation
@@ -36,7 +35,6 @@ mock_app.crawl_url.return_value = respons result = firecrawl.markdown_crawl(url) ``` -
### Utiliser Firecrawl pour récupérer une page unique
diff --git a/fr/integrations/crewai.mdx b/fr/integrations/crewai.mdx index d9709cc2..beb6c0eb 100644 --- a/fr/integrations/crewai.mdx +++ b/fr/integrations/crewai.mdx @@ -22,7 +22,6 @@ Firecrawl est intégré à [CrewAI, le framework d’orchestration d’agents IA pip install firecrawl-py 'crewai[tools]' ``` -
## Outils
@@ -43,7 +42,6 @@ from crewai_tools import FirecrawlCrawlWebsiteTool tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev') ``` -
#### Arguments
@@ -79,7 +77,6 @@ from crewai_tools import FirecrawlScrapeWebsiteTool tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev') ``` -
#### Arguments
@@ -111,7 +108,6 @@ from crewai_tools import FirecrawlSearchTool tool = FirecrawlSearchTool(query='Qu’est-ce que Firecrawl ?') ``` -
#### Arguments
diff --git a/fr/mcp-server.mdx b/fr/mcp-server.mdx index d24dbf24..9abdf854 100644 --- a/fr/mcp-server.mdx +++ b/fr/mcp-server.mdx @@ -32,7 +32,6 @@ Vous pouvez utiliser notre URL hébergée ou exécuter le serveur en local. Réc https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp ``` -
### Exécuter avec npx
@@ -41,14 +40,12 @@ https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp env FIRECRAWL_API_KEY=fc-VOTRE_CLÉ_API npx -y firecrawl-mcp ``` - ### Installation manuelle ```bash npm install -g firecrawl-mcp ``` -
### Exécution dans Cursor
@@ -126,7 +123,6 @@ Ajoutez ceci à votre `./codeium/windsurf/model_config.json` : } ``` -
### Exécution en mode HTTP diffusé
@@ -139,7 +135,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-VOTRE_CLE_API npx -y firecr Utilisez l’URL : http://localhost:3000/v2/mcp ou https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp -
### Installation via Smithery (ancien)
@@ -150,7 +145,6 @@ Pour installer automatiquement Firecrawl pour Claude Desktop via [Smithery](http npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude ``` -
### Exécution dans VS Code
@@ -217,7 +211,6 @@ Voir référence : [directus/directus#25906 (commentaire)](https://github.com/di Le serveur MCP fonctionne toujours correctement lorsqu’il est appelé via d’autres extensions, mais le problème survient spécifiquement lors de son enregistrement direct dans la liste des serveurs MCP. Nous publierons des consignes dès que VS Code aura mis à jour sa validation de schéma. -
### Exécution sur Claude Desktop
@@ -237,7 +230,6 @@ Ajoutez ceci au fichier de configuration de Claude : } ``` -
### Exécution avec Claude Code
@@ -248,7 +240,6 @@ Ajoutez le serveur MCP de Firecrawl à l’aide de la CLI de Claude Code : claude mcp add firecrawl -e FIRECRAWL_API_KEY=your-api-key -- npx -y firecrawl-mcp ``` -
### Exécution sur n8n
@@ -280,7 +271,6 @@ env HTTP_STREAMABLE_SERVER=true \ Cela démarrera le serveur sur `http://localhost:3000/v2/mcp`, que vous pourrez utiliser comme point de terminaison dans votre workflow n8n. La variable d’environnement `HTTP_STREAMABLE_SERVER=true` est nécessaire, car n8n requiert le transport HTTP. -
## Configuration
@@ -355,7 +345,6 @@ export FIRECRAWL_RETRY_MAX_ATTEMPTS=10 export FIRECRAWL_RETRY_INITIAL_DELAY=500 # Démarrer avec des tentatives plus rapides ``` -
### Configuration personnalisée avec Claude Desktop
@@ -384,7 +373,6 @@ Ajoutez ceci à votre fichier `claude_desktop_config.json` : } ``` -
### Configuration du système
@@ -425,7 +413,6 @@ Ces paramètres contrôlent : * Avertissement à 1 000 crédits restants * Alerte critique à 100 crédits restants -
### Limitation de débit et traitement par lots
@@ -464,7 +451,6 @@ Extraire le contenu d’une URL unique avec des options avancées. } ``` -
### 2. Outil d’extraction par lots (`firecrawl_batch_scrape`)
@@ -498,7 +484,6 @@ La réponse inclut l’ID d’opération pour vérifier l’état : } ``` -
### 3. Vérifier l’état du lot (`firecrawl_check_batch_status`)
@@ -514,7 +499,6 @@ Vérifiez l’état d’une opération par lots. } ``` -
### 4. Outil de cartographie (`firecrawl_map`)
@@ -535,7 +519,6 @@ Cartographiez un site web pour découvrir toutes les URL indexées du site. } ``` -
#### Options de l’outil Map :
@@ -572,7 +555,6 @@ Effectuez une recherche sur le web et, si besoin, extrayez le contenu des résul } ``` -
### 6. Outil d’exploration (`firecrawl_crawl`)
@@ -592,7 +574,6 @@ Lancez une exploration asynchrone avec des options avancées. } ``` -
### 7. Vérifier l’état du crawl (`firecrawl_check_crawl_status`)
@@ -610,7 +591,6 @@ Vérifiez l’état d’un job de crawl. **Renvoie :** État et avancement de la tâche de crawl, y compris les résultats s’ils sont disponibles. -
### 8. Outil d’extraction (`firecrawl_extract`)
@@ -658,7 +638,6 @@ Exemple de réponse : } ``` -
#### Options de l’outil d’extraction :
@@ -695,7 +674,6 @@ Exemples de messages de journal : [ERROR] Limite de débit dépassée, nouvelle tentative dans 2 s… ``` -
## Gestion des erreurs
@@ -722,7 +700,6 @@ Exemple de réponse d’erreur : } ``` -
## Développement
@@ -738,7 +715,6 @@ npm run build npm test ``` -
### Contribuer
diff --git a/fr/v0/advanced-scraping-guide.mdx b/fr/v0/advanced-scraping-guide.mdx index 9c4265d4..0dbe03d1 100644 --- a/fr/v0/advanced-scraping-guide.mdx +++ b/fr/v0/advanced-scraping-guide.mdx @@ -169,7 +169,6 @@ Dans cet exemple, le scraper va : Voici la référence API correspondante : [Documentation du point de terminaison /scrape](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Options de l’extracteur
@@ -260,7 +259,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ } ``` -
## Ajuster le délai d’attente
@@ -282,7 +280,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ }' ``` -
## Explorer plusieurs pages
@@ -304,7 +301,6 @@ Renvoie un jobId { "jobId": "1234-5678-9101" } ``` -
### Vérifier une tâche de crawl
@@ -317,7 +313,6 @@ curl -X GET https://api.firecrawl.dev/v0/crawl/status/1234-5678-9101 \ -H 'Authorization: Bearer VOTRE_CLÉ_API' ``` -
### Options du crawler
@@ -401,7 +396,6 @@ Dans cet exemple, le crawler va : * Utiliser le mode d’exploration rapide. * Parcourir au maximum 1000 pages. -
## Options de page + Options du crawler
@@ -442,7 +436,6 @@ Dans cet exemple, le crawler va : * Explorer jusqu’à une profondeur maximale de 2. * Utiliser le mode d’exploration rapide. -
## Options de l’extracteur + options du crawler
diff --git a/fr/v0/api-reference/endpoint/crawl-cancel.mdx b/fr/v0/api-reference/endpoint/crawl-cancel.mdx index 98adbc76..22a97d6d 100644 --- a/fr/v0/api-reference/endpoint/crawl-cancel.mdx +++ b/fr/v0/api-reference/endpoint/crawl-cancel.mdx @@ -1,4 +1,4 @@ --- title: "Annuler un job de crawl" -openapi: 'v0-openapi DELETE /crawl/cancel/{jobId}' +openapi: '/fr/api-reference/v1-openapi.json V0-OPENAPI DELETE /crawl/cancel/{jobId}' --- \ No newline at end of file diff --git a/fr/v0/api-reference/endpoint/crawl.mdx b/fr/v0/api-reference/endpoint/crawl.mdx index ab862f9b..ab5a4102 100644 --- a/fr/v0/api-reference/endpoint/crawl.mdx +++ b/fr/v0/api-reference/endpoint/crawl.mdx @@ -1,4 +1,4 @@ --- title: "Exploration" -openapi: 'v0-openapi POST /crawl' +openapi: '/fr/api-reference/v1-openapi.json V0-OPENAPI POST /crawl' --- \ No newline at end of file diff --git a/fr/v0/api-reference/endpoint/scrape.mdx b/fr/v0/api-reference/endpoint/scrape.mdx index 617f7ca0..ec1c2986 100644 --- a/fr/v0/api-reference/endpoint/scrape.mdx +++ b/fr/v0/api-reference/endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: "Scrape" -openapi: 'v0-openapi POST /scrape' +openapi: '/fr/api-reference/v1-openapi.json V0-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/fr/v0/api-reference/endpoint/search.mdx b/fr/v0/api-reference/endpoint/search.mdx index b4a5d69b..ef89f08c 100644 --- a/fr/v0/api-reference/endpoint/search.mdx +++ b/fr/v0/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Search (Bêta)" -openapi: 'v0-openapi POST /search' +openapi: '/fr/api-reference/v1-openapi.json V0-OPENAPI POST /search' --- Le point de terminaison /search combine une API de recherche avec la puissance de Firecrawl pour offrir une expérience de recherche performante pour toute requête. diff --git a/fr/v0/api-reference/endpoint/status.mdx b/fr/v0/api-reference/endpoint/status.mdx index 56485f5e..87a8085c 100644 --- a/fr/v0/api-reference/endpoint/status.mdx +++ b/fr/v0/api-reference/endpoint/status.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l’état d’un crawl" -openapi: 'v0-openapi GET /crawl/status/{jobId}' +openapi: '/fr/api-reference/v1-openapi.json V0-OPENAPI GET /crawl/status/{jobId}' --- Ce point de terminaison renvoie l’état d’un job de crawl. Si le job n’est pas terminé, la réponse inclut du contenu dans `partial_data`. Une fois le job terminé, le contenu est disponible dans `data`. diff --git a/fr/v0/api-reference/introduction.mdx b/fr/v0/api-reference/introduction.mdx index 9d9d946a..840a1c7f 100644 --- a/fr/v0/api-reference/introduction.mdx +++ b/fr/v0/api-reference/introduction.mdx @@ -13,7 +13,6 @@ Toutes les requêtes contiennent l’URL de base suivante : https://api.firecrawl.dev ``` -
## Authentification
@@ -26,7 +25,6 @@ Authorization: Bearer fc_123456789 ​ -
## Codes de réponse
diff --git a/fr/v0/api-reference/v0-openapi.json b/fr/v0/api-reference/v0-openapi.json new file mode 100644 index 00000000..d551ba99 --- /dev/null +++ b/fr/v0/api-reference/v0-openapi.json @@ -0,0 +1,947 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v0", + "description": "API pour interagir avec les services Firecrawl et effectuer des tâches de web scraping et de crawling.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v0" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Scraper une seule URL et, en option, en extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à analyser" + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "En-têtes à inclure dans la requête. Peuvent être utilisés pour envoyer des cookies, un user-agent, etc." + }, + "includeHtml": { + "type": "boolean", + "description": "Inclure la version HTML du contenu de la page. La réponse contiendra une clé html.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Inclure le contenu HTML brut de la page. Retourne une clé rawHtml dans la réponse.", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "N’incluez dans le résultat final que les balises, classes et ID présents sur la page. Utilisez des valeurs séparées par des virgules. Exemple : 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Renvoyez uniquement le contenu principal de la page, en excluant les en-têtes, barres de navigation, pieds de page, etc.", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises, classes et ID à supprimer de la page. Utilisez des valeurs séparées par des virgules. Exemple : « script, .ad, #footer »" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "Remplacez tous les chemins relatifs par des chemins absolus pour les images et les liens", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "Incluez une capture d’écran de la partie supérieure de la page que vous scrapez.", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "Incluez une capture d’écran de la page entière que vous scrapez.", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "Attendre x millisecondes que la page se charge avant de récupérer le contenu", + "default": 0 + } + } + }, + "extractorOptions": { + "type": "object", + "description": "Options d’extraction d’informations structurées à partir du contenu de la page. Remarque : l’extraction basée sur un LLM n’est pas effectuée par défaut et n’est lancée que lorsqu’elle est explicitement configurée. Le mode « markdown » renvoie simplement le markdown récupéré et constitue le mode de scraping par défaut.", + "default": {}, + "properties": { + "mode": { + "type": "string", + "enum": [ + "markdown", + "llm-extraction", + "llm-extraction-from-raw-html", + "llm-extraction-from-markdown" + ], + "description": "Le mode d’extraction à utiliser. 'markdown' : renvoie le contenu Markdown extrait, sans effectuer d’extraction via LLM. 'llm-extraction' : extrait des informations à partir du contenu nettoyé et analysé à l’aide d’un LLM. 'llm-extraction-from-raw-html' : extrait des informations directement à partir du HTML brut à l’aide d’un LLM. 'llm-extraction-from-markdown' : extrait des informations à partir du contenu Markdown à l’aide d’un LLM." + }, + "extractionPrompt": { + "type": "string", + "description": "Un prompt décrivant les informations à extraire de la page, applicable aux modes d’extraction LLM." + }, + "extractionSchema": { + "type": "object", + "additionalProperties": true, + "description": "Schéma des données à extraire, nécessaire uniquement pour les modes d’extraction LLM.", + "required": [ + "company_mission", + "supports_sso", + "is_open_source" + ] + } + } + }, + "timeout": { + "type": "integer", + "description": "Délai d’attente de la requête, en millisecondes", + "default": 30000 + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Explorer plusieurs URL selon les options", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle lancer le crawl" + }, + "crawlerOptions": { + "type": "object", + "properties": { + "includes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Modèles d’URL à inclure" + }, + "excludes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Modèles d’URL à exclure" + }, + "generateImgAltText": { + "type": "boolean", + "description": "Générer du texte alternatif pour les images à l’aide de modèles de langage (LLM) (nécessite un abonnement payant)", + "default": false + }, + "returnOnlyUrls": { + "type": "boolean", + "description": "Si la valeur est true, renvoie uniquement les URL sous forme de liste dans le statut de crawl. Attention : la réponse renvoyée sera une liste d’URL dans le champ data, et non une liste de documents.", + "default": false + }, + "maxDepth": { + "type": "integer", + "description": "Profondeur maximale d’exploration par rapport à l’URL fournie. Une valeur maxDepth de 0 n’extrait que l’URL fournie. Une valeur maxDepth de 1 extrait l’URL fournie et toutes les pages à un niveau de profondeur. Une valeur maxDepth de 2 extrait l’URL fournie et toutes les pages jusqu’à deux niveaux de profondeur. Les valeurs plus élevées suivent le même principe." + }, + "mode": { + "type": "string", + "enum": [ + "default", + "fast" + ], + "description": "Le mode d’exploration à utiliser. Le mode rapide explore les sites web sans sitemap jusqu’à 4 fois plus vite, mais peut être moins précis et ne doit pas être utilisé sur des sites fortement dépendants du rendu JavaScript.", + "default": "default" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorer le sitemap du site lors du crawl", + "default": false + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de pages à explorer", + "default": 10000 + }, + "allowBackwardCrawling": { + "type": "boolean", + "description": "Permet au crawler de remonter d’une URL spécifique vers des pages précédemment liées. Par exemple, de « example.com/product/123 » à « example.com/product »", + "default": false + }, + "allowExternalContentLinks": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens pointant vers des sites web externes.", + "default": false + } + } + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "En-têtes à inclure dans la requête. Ils peuvent être utilisés pour envoyer des cookies, un user-agent, etc." + }, + "includeHtml": { + "type": "boolean", + "description": "Inclut la version HTML du contenu de la page. La réponse contiendra une clé html.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Inclut le contenu HTML brut de la page. Produit une clé rawHtml dans la réponse.", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "N’incluez dans le résultat final que les balises, classes et IDs présents sur la page. Utilisez des valeurs séparées par des virgules. Exemple : 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Renvoyer uniquement le contenu principal de la page, en excluant les en-têtes, éléments de navigation, pieds de page, etc.", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises, classes et ID à supprimer de la page. Utilisez des valeurs séparées par des virgules. Exemple : 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "Remplacez tous les chemins relatifs des images et des liens par des chemins absolus", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "Incluez une capture d’écran de la partie supérieure de la page que vous scrapez.", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "Incluez une capture d’écran de la page entière que vous scrapez.", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "Attendre x millisecondes pour laisser la page se charger avant de récupérer le contenu", + "default": 0 + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Recherche un mot-clé sur Google et renvoie les principaux résultats, avec pour chacun le contenu de la page au format Markdown", + "operationId": "searchGoogle", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "format": "uri", + "description": "La requête à rechercher" + }, + "pageOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Ne renvoyez que le contenu principal de la page, sans les en-têtes, éléments de navigation, pieds de page, etc.", + "default": false + }, + "fetchPageContent": { + "type": "boolean", + "description": "Récupère le contenu de chaque page. S’il est à false, une API SERP simple et rapide est utilisée par défaut.", + "default": true + }, + "includeHtml": { + "type": "boolean", + "description": "Inclure la version HTML du contenu de la page. Une clé html sera présente dans la réponse.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Inclut le contenu HTML brut de la page. Produit une clé rawHtml dans la réponse.", + "default": false + } + } + }, + "searchOptions": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "Nombre maximal de résultats. Limite fixée à 20 pendant la bêta." + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/status/{jobId}": { + "get": { + "tags": [ + "Crawl" + ], + "summary": "Obtenir l’état d’une tâche de crawl", + "operationId": "getCrawlStatus", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "Identifiant de la tâche de crawl", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Statut du job (terminé, en cours, échoué, en pause)" + }, + "current": { + "type": "integer", + "description": "Numéro de la page actuelle" + }, + "total": { + "type": "integer", + "description": "Nombre total de pages" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "Données renvoyées par la tâche (null lorsqu’elle est en cours)" + }, + "partial_data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "Documents partiels renvoyés au fur et à mesure du crawl (streaming). **Cette fonctionnalité est actuellement en alpha – attendez-vous à des changements majeurs**. Lorsqu’une page est prête, elle est ajoutée au tableau `partial_data`, il n’est donc pas nécessaire d’attendre que l’ensemble du site ait été exploré. Quand le crawl est terminé, `partial_data` est vidé et le résultat est disponible dans `data`. Il y a un maximum de 50 éléments dans le tableau de réponse. L’élément le plus ancien (en haut du tableau) est supprimé lorsqu’un nouvel élément est ajouté au tableau." + } + } + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/cancel/{jobId}": { + "delete": { + "tags": [ + "Crawl" + ], + "summary": "Annuler une tâche de crawl", + "operationId": "cancelCrawlJob", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "ID de la tâche de crawl", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Retours annulés." + } + } + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` a la valeur `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "Le code de statut HTTP de la page" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Affiché lors de l’utilisation de l’extraction LLM. Données extraites de la page conformément au schéma défini.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Peut s’afficher lors de l’utilisation de l’extraction LLM. Un message d’avertissement vous indiquera tout problème rencontré lors de l’extraction." + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` vaut `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut `true`" + }, + "index": { + "type": "integer", + "description": "Le numéro de la page explorée. Utile avec `partial_data` pour savoir de quelle page proviennent les données." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "Le code d’état HTTP de la page" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "Le message d'erreur de la page" + } + } + } + } + }, + "SearchResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/fr/v0/features/crawl.mdx b/fr/v0/features/crawl.mdx index 5ffe9ed9..6af496da 100644 --- a/fr/v0/features/crawl.mdx +++ b/fr/v0/features/crawl.mdx @@ -173,7 +173,6 @@ Avec cURL, /crawl renverra toujours un jobId que vous pourrez utiliser pour vér { "jobId": "1234-5678-9101" } ``` -
### Vérifier un job de crawl
diff --git a/fr/v0/features/extract.mdx b/fr/v0/features/extract.mdx index 52e7b7c1..8b551fdb 100644 --- a/fr/v0/features/extract.mdx +++ b/fr/v0/features/extract.mdx @@ -98,7 +98,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ ``` -
### Utilisation du SDK Python
@@ -130,7 +129,6 @@ data = app.scrape_url('https://news.ycombinator.com', { print(data["llm_extraction"]) ``` -
### Avec le SDK JavaScript
@@ -166,7 +164,6 @@ const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", { console.log(scrapeResult.data["llm_extraction"]); ``` -
### Avec le SDK Go
@@ -222,7 +219,6 @@ func main() { } ``` -
### Avec le SDK Rust
diff --git a/fr/v1/advanced-scraping-guide.mdx b/fr/v1/advanced-scraping-guide.mdx index 38136a62..e2caba39 100644 --- a/fr/v1/advanced-scraping-guide.mdx +++ b/fr/v1/advanced-scraping-guide.mdx @@ -193,7 +193,6 @@ Dans cet exemple, le scraper va : Voici la documentation de l’API correspondante : [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Options de l’extracteur
@@ -294,7 +293,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ } ``` -
## Actions
@@ -487,7 +485,6 @@ Renvoie un ID { "id": "1234-5678-9101" } ``` -
### Vérifier une tâche de crawl
@@ -500,7 +497,6 @@ curl -X GET https://api.firecrawl.dev/v1/crawl/1234-5678-9101 \ -H 'Authorization: Bearer VOTRE_CLÉ_API' ``` -
#### Pagination/URL suivante
@@ -620,7 +616,6 @@ Dans cet exemple, le crawler va : * Explorer jusqu’à une profondeur maximale de 2. * Explorer au maximum 1000 pages. - @@ -644,7 +639,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ Cela renverra un objet JSON contenant des liens contextuellement liés à l’URL. -
### Exemple de réponse
@@ -666,7 +660,6 @@ Cela renverra un objet JSON contenant des liens contextuellement liés à l’UR } ``` -
### Options de mappage
diff --git a/fr/v1/api-reference/endpoint/batch-scrape-delete.mdx b/fr/v1/api-reference/endpoint/batch-scrape-delete.mdx index b1a8d1d6..f2577707 100644 --- a/fr/v1/api-reference/endpoint/batch-scrape-delete.mdx +++ b/fr/v1/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "Annuler un scraping en lot" -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape-delete) est disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/batch-scrape-get-errors.mdx b/fr/v1/api-reference/endpoint/batch-scrape-get-errors.mdx index ae023af4..fc56ad6e 100644 --- a/fr/v1/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/fr/v1/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir les erreurs de scraping en lot" -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Remarque : Une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape-get-errors) est désormais disponible, avec un meilleur rapport d’erreurs et des capacités de débogage améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/batch-scrape-get.mdx b/fr/v1/api-reference/endpoint/batch-scrape-get.mdx index 0eb29f6c..d7d2694d 100644 --- a/fr/v1/api-reference/endpoint/batch-scrape-get.mdx +++ b/fr/v1/api-reference/endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l'état d'un lot de scraping" -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Remarque : Une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape-get) est désormais disponible, avec un meilleur suivi de l'état et des capacités de supervision. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/batch-scrape.mdx b/fr/v1/api-reference/endpoint/batch-scrape.mdx index ddaf5501..909e7927 100644 --- a/fr/v1/api-reference/endpoint/batch-scrape.mdx +++ b/fr/v1/api-reference/endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: "Collecte en lot" -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/batch-scrape) est désormais disponible, avec de meilleures performances et une fiabilité accrue pour le traitement en lot. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/crawl-active.mdx b/fr/v1/api-reference/endpoint/crawl-active.mdx index 25240e93..e59f8745 100644 --- a/fr/v1/api-reference/endpoint/crawl-active.mdx +++ b/fr/v1/api-reference/endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: "Crawls actifs" -openapi: 'v1-openapi GET /crawl/active' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-active) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/crawl-delete.mdx b/fr/v1/api-reference/endpoint/crawl-delete.mdx index bbd90b66..a52f50a9 100644 --- a/fr/v1/api-reference/endpoint/crawl-delete.mdx +++ b/fr/v1/api-reference/endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "Annuler le crawl" -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/crawl-delete) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/crawl-get-errors.mdx b/fr/v1/api-reference/endpoint/crawl-get-errors.mdx index f348ff4d..d3d1b1fb 100644 --- a/fr/v1/api-reference/endpoint/crawl-get-errors.mdx +++ b/fr/v1/api-reference/endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Afficher les erreurs de crawl' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-get-errors) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/crawl-get.mdx b/fr/v1/api-reference/endpoint/crawl-get.mdx index e4b50189..06ab728c 100644 --- a/fr/v1/api-reference/endpoint/crawl-get.mdx +++ b/fr/v1/api-reference/endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l’état d’un crawl" -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/crawl-get) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/crawl-post.mdx b/fr/v1/api-reference/endpoint/crawl-post.mdx index 6e015db3..2d729c6f 100644 --- a/fr/v1/api-reference/endpoint/crawl-post.mdx +++ b/fr/v1/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/crawl-post) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/credit-usage-historical.mdx b/fr/v1/api-reference/endpoint/credit-usage-historical.mdx index fd471f2b..56ff66d8 100644 --- a/fr/v1/api-reference/endpoint/credit-usage-historical.mdx +++ b/fr/v1/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Historique d’utilisation des crédits" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- Renvoie l’historique d’utilisation des crédits, mois par mois. Le point de terminaison peut également ventiler l’utilisation par clé d’API, de manière optionnelle. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/credit-usage.mdx b/fr/v1/api-reference/endpoint/credit-usage.mdx index d7ba1064..05b035a2 100644 --- a/fr/v1/api-reference/endpoint/credit-usage.mdx +++ b/fr/v1/api-reference/endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Utilisation des crédits' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Remarque : une [nouvelle version v2 de cette API](/fr/api-reference/endpoint/credit-usage) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/deep-research-get.mdx b/fr/v1/api-reference/endpoint/deep-research-get.mdx index e2ebcf61..0e8a3569 100644 --- a/fr/v1/api-reference/endpoint/deep-research-get.mdx +++ b/fr/v1/api-reference/endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "Recherche approfondie" -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/deep-research.mdx b/fr/v1/api-reference/endpoint/deep-research.mdx index 234661d3..19929a55 100644 --- a/fr/v1/api-reference/endpoint/deep-research.mdx +++ b/fr/v1/api-reference/endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Deep Research" -openapi: 'v1-openapi POST /deep-research' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- Le point de terminaison Deep Research permet d’effectuer des recherches et analyses approfondies, propulsées par l’IA, sur n’importe quel sujet. Il vous suffit de fournir une requête, et Firecrawl explorera le web de manière autonome, rassemblera les informations pertinentes et synthétisera les résultats en analyses complètes. diff --git a/fr/v1/api-reference/endpoint/extract-get.mdx b/fr/v1/api-reference/endpoint/extract-get.mdx index 5e346727..57ca6608 100644 --- a/fr/v1/api-reference/endpoint/extract-get.mdx +++ b/fr/v1/api-reference/endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l’état de l’extraction" -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/extract-get) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/extract.mdx b/fr/v1/api-reference/endpoint/extract.mdx index b0d2a396..5348971f 100644 --- a/fr/v1/api-reference/endpoint/extract.mdx +++ b/fr/v1/api-reference/endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: "Extract" -openapi: "v1-openapi POST /extract" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI POST /extract" --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/extract) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/llmstxt-get.mdx b/fr/v1/api-reference/endpoint/llmstxt-get.mdx index 4935078e..555f2883 100644 --- a/fr/v1/api-reference/endpoint/llmstxt-get.mdx +++ b/fr/v1/api-reference/endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "Statut de LLMs.txt" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Obtenez le statut et les résultats d’une génération de LLMs.txt. Ce point de terminaison vous permet de vérifier si la génération est terminée et de récupérer le contenu produit. @@ -69,7 +69,6 @@ Si la tâche de génération échoue ou est introuvable, vous recevrez une répo } ``` -
### Recommandations pour le polling
diff --git a/fr/v1/api-reference/endpoint/llmstxt.mdx b/fr/v1/api-reference/endpoint/llmstxt.mdx index 68eb5068..7106fa71 100644 --- a/fr/v1/api-reference/endpoint/llmstxt.mdx +++ b/fr/v1/api-reference/endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Générer LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- Le point de terminaison de génération de LLMs.txt crée les fichiers LLMs.txt et LLMs-full.txt pour n’importe quel site web. Ces fichiers offrent un format structuré et compatible avec les LLM pour le contenu du site, afin de faciliter la compréhension et le traitement de l’information par les modèles de langage. diff --git a/fr/v1/api-reference/endpoint/map.mdx b/fr/v1/api-reference/endpoint/map.mdx index 94b0ff5e..0621d008 100644 --- a/fr/v1/api-reference/endpoint/map.mdx +++ b/fr/v1/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map" -openapi: "v1-openapi POST /map" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI POST /map" --- > Remarque : Une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/map) est désormais disponible, avec des fonctionnalités enrichies et de meilleures performances. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/scrape.mdx b/fr/v1/api-reference/endpoint/scrape.mdx index 1ed6d4d4..0956d8d3 100644 --- a/fr/v1/api-reference/endpoint/scrape.mdx +++ b/fr/v1/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Remarque : Une [nouvelle version v2 de cette API](/fr/api-reference/endpoint/scrape) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/search.mdx b/fr/v1/api-reference/endpoint/search.mdx index e8311765..2f12093a 100644 --- a/fr/v1/api-reference/endpoint/search.mdx +++ b/fr/v1/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Search" -openapi: "v1-openapi POST /search" +openapi: "/fr/api-reference/v1-openapi.json V1-OPENAPI POST /search" --- > Remarque : une nouvelle [version v2 de cette API](/fr/api-reference/endpoint/search) est disponible, avec des fonctionnalités et des performances améliorées. diff --git a/fr/v1/api-reference/endpoint/token-usage-historical.mdx b/fr/v1/api-reference/endpoint/token-usage-historical.mdx index 15265e4f..01aebdfa 100644 --- a/fr/v1/api-reference/endpoint/token-usage-historical.mdx +++ b/fr/v1/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Historique d’utilisation des tokens" -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- Renvoie l’historique de l’utilisation des tokens, mois par mois. Le point de terminaison peut aussi ventiler l’utilisation par clé d’API, de façon optionnelle. \ No newline at end of file diff --git a/fr/v1/api-reference/endpoint/token-usage.mdx b/fr/v1/api-reference/endpoint/token-usage.mdx index 8c5f4561..047c960f 100644 --- a/fr/v1/api-reference/endpoint/token-usage.mdx +++ b/fr/v1/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "Utilisation des jetons" -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Remarque : une [version v2 de cette API](/fr/api-reference/endpoint/token-usage) est désormais disponible, avec des fonctionnalités et des performances améliorées. \ No newline at end of file diff --git a/fr/v1/api-reference/v1-openapi.json b/fr/v1/api-reference/v1-openapi.json new file mode 100644 index 00000000..278148c4 --- /dev/null +++ b/fr/v1/api-reference/v1-openapi.json @@ -0,0 +1,3387 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "API pour interagir avec les services Firecrawl afin d’effectuer des tâches de web scraping et de crawling de sites web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Scraper une seule URL et éventuellement en extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à explorer" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, aucune donnée ne sera conservée pour cette opération de scraping. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Scraper plusieurs URL et, éventuellement, en extraire des informations à l'aide d'un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "L’URL à scraper" + } + }, + "webhook": { + "type": "object", + "description": "Un objet de spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Celui-ci sera déclenché au démarrage d’un batch scrape (batch_scrape.started), pour chaque page traitée (batch_scrape.page) et lorsque le batch scrape est terminé (batch_scrape.completed ou batch_scrape.failed). La réponse sera la même que celle de l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans toutes les requêtes webhook de ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook. (par défaut : tous)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal de scrapes simultanés. Ce paramètre vous permet de définir une limite de parallélisme pour ce scraping par lot. S’il n’est pas défini, le scraping par lot respecte la limite de parallélisme de votre équipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si des URL non valides sont spécifiées dans le tableau urls, elles seront ignorées. Plutôt que de faire échouer l’ensemble de la requête, une opération de scraping par lots sera effectuée avec les URL valides restantes, et les URL non valides seront renvoyées dans le champ invalidURLs de la réponse." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, aucune donnée ne sera conservée pour ce lot de scraping. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping par lot", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer le statut d’un job de scraping par lots", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler une tâche de scraping par lots", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation effectuée", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Job de scraping par lots introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping par lots", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir les erreurs d'une tâche de scraping par lot", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifiant de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer l'état d'une tâche de crawl", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler un job de crawl", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation effectuée", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tâche de crawl introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer les erreurs d’un job de crawl", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Explorer plusieurs URL selon les options spécifiées", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle lancer l’exploration" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Expressions régulières de chemins d’URL qui permettent d’exclure du crawl les URL correspondantes. Par exemple, si vous définissez \"excludePaths\": [\"blog/.*\"] pour l’URL de base firecrawl.dev, tous les résultats correspondant à ce motif seront exclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs d’expressions régulières appliqués aux chemins d’URL qui définissent les URL à inclure dans le crawl. Seuls les chemins correspondant aux motifs indiqués seront inclus dans la réponse. Par exemple, si vous définissez \"includePaths\": [\"blog/.*\"] pour l’URL de base firecrawl.dev, seuls les résultats correspondant à ce motif seront inclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDepth": { + "type": "integer", + "description": "Profondeur absolue maximale à explorer à partir de l’URL de base fournie. Concrètement, cela correspond au nombre maximal de « / » que le chemin (pathname) d’une URL collectée peut contenir.", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profondeur maximale de crawl basée sur l’ordre de découverte. Le site racine et les pages du sitemap ont une profondeur de découverte de 0. Par exemple, si vous la définissez sur 1 et que vous activez ignoreSitemap, vous ne parcourrez que l’URL saisie et toutes les URL qui sont liées depuis cette page." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorer le sitemap du site lors de l’exploration", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ne relancez pas le scraping du même chemin avec des paramètres de requête différents (ou sans paramètre de requête)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de pages à explorer. La limite par défaut est de 10 000.", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ OBSOLÈTE : utilisez plutôt « crawlEntireDomain ». Permet au crawler de suivre les liens internes vers des URL au même niveau ou parentes, et pas seulement vers des URL enfants.", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens internes vers des URL parentes ou de même niveau, pas seulement vers les chemins enfants.\n\nfalse : N’explore que les URL plus profondes (enfants).\n→ ex. /features/feature-1 → /features/feature-1/tips ✅\n→ Ne suivra pas /pricing ou / ❌\n\ntrue : Explore tous les liens internes, y compris ceux de même niveau et les parents.\n→ ex. /features/feature-1 → /pricing, /, etc. ✅\n\nUtilisez la valeur true pour une couverture interne plus large, au-delà des chemins imbriqués.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens vers des sites web externes.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens vers les sous-domaines du domaine principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Délai en secondes entre deux opérations de scraping. Ce paramètre aide à respecter les limites de fréquence imposées par les sites web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal de scrapes simultanés. Ce paramètre vous permet de définir la limite de concurrence pour ce crawl. S’il n’est pas renseigné, le crawl utilise la limite de concurrence de votre équipe." + }, + "webhook": { + "type": "object", + "description": "Un objet de spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Celui-ci sera déclenché au lancement du crawl (crawl.started), pour chaque page explorée (crawl.page) et lorsque le crawl est terminé (crawl.completed ou crawl.failed). La réponse sera identique à celle de l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans toutes les données de webhook pour ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook. (par défaut : tous)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, aucune donnée ne sera conservée lors de ce crawl. Pour activer cette option, veuillez contacter help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapper plusieurs URL selon les options", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base pour démarrer le crawl" + }, + "search": { + "type": "string", + "description": "Requête de recherche à utiliser pour la cartographie. Pendant la phase Alpha, la composante « intelligente » de la recherche est limitée à 500 résultats. En revanche, si la cartographie renvoie davantage de résultats, aucune limite n’est appliquée." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorer le sitemap du site lors de l’exploration.", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "Ne renvoyer que les liens présents dans le sitemap du site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Inclure les sous-domaines du site", + "default": true + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de liens à renvoyer", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Délai d’expiration en millisecondes. Aucun délai d’expiration n’est défini par défaut." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraire des données structurées depuis des pages à l’aide de modèles de langage (LLM)", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Les URL dont extraire les données. Les URL doivent être au format glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt permettant de guider le processus d'extraction" + }, + "schema": { + "type": "object", + "description": "Schéma définissant la structure des données extraites. Doit être conforme au standard [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Si la valeur est true, l’extraction utilisera la recherche sur le web pour trouver des données supplémentaires", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Lorsque la valeur est true, les fichiers sitemap.xml seront ignorés lors de l’analyse du site web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Lorsque ce paramètre est à true, les sous-domaines des URL fournies seront également explorés", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Lorsque cette option vaut true, les sources utilisées pour extraire les données seront incluses dans la réponse sous la clé `sources`", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Si des URL non valides sont spécifiées dans le tableau urls, elles seront ignorées. Au lieu de faire échouer l’ensemble de la requête, une extraction sera effectuée en utilisant uniquement les URL valides restantes, et les URL non valides seront renvoyées dans le champ invalidURLs de la réponse." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extraction réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Requête invalide", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID du job d’extraction", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer l’état d’une tâche d’extraction", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obtenir tous les crawls actifs de l’équipe authentifiée", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "L’identifiant unique de l’exploration" + }, + "teamId": { + "type": "string", + "description": "L’ID de l’équipe à laquelle appartient le crawl" + }, + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de départ du crawl" + }, + "options": { + "type": "object", + "description": "Options du crawler utilisées pour cette exploration", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "Lancer une recherche approfondie sur une requête", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La requête à étudier" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "Profondeur maximale des itérations de recherche" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "Limite de temps (en secondes)" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "Nombre maximal d’URL à analyser" + }, + "analysisPrompt": { + "type": "string", + "description": "Le prompt à utiliser pour l’analyse finale. Utile pour mettre en forme le markdown de l’analyse finale selon un format spécifique." + }, + "systemPrompt": { + "type": "string", + "description": "L’invite système à utiliser pour l’agent de recherche. Permet d’orienter l’agent de recherche dans une direction précise." + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "Options de sortie au format JSON", + "properties": { + "schema": { + "type": "object", + "description": "Le schéma à utiliser pour la sortie au format JSON. Doit être conforme à la [spécification JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "L’invite système à utiliser pour la sortie JSON" + }, + "prompt": { + "type": "string", + "description": "Le prompt à utiliser pour la sortie au format JSON" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Tâche de recherche lancée avec succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tâche de recherche" + } + } + } + } + } + }, + "400": { + "description": "Paramètres de requête non valides", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’identifiant de la tâche de recherche", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérez l’état et les résultats d’une opération de recherche approfondie", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "Affiché lorsque le format JSON est utilisé", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "Tâche de recherche introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Récupérer le solde de crédits de l’équipe authentifiée", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "Nombre de crédits restants pour l'équipe", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "Nombre de crédits inclus dans l’offre. Cela n’inclut pas les crédits issus de coupons, les packs de crédits ni les crédits provenant des recharges automatiques.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez le forfait gratuit", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous utilisez le forfait gratuit", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informations relatives à l'utilisation des crédits introuvables", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtenir l’historique d’utilisation des crédits de l’équipe authentifiée", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des crédits par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé API utilisée pendant la période de facturation. null si byApiKey vaut false (valeur par défaut)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Nombre total de crédits utilisés au cours de la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Récupérer le nombre de jetons restants pour l’équipe authentifiée (extraction uniquement)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "Nombre de jetons restants pour l’équipe", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "Nombre de jetons inclus dans l’offre. Les jetons issus de coupons ne sont pas comptabilisés.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Impossible de trouver les informations sur l’utilisation des jetons", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtenir l’historique d’utilisation des tokens de l’équipe authentifiée (extraction uniquement)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtenir l’historique d’utilisation des jetons par clé d’API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé API utilisée pour la période de facturation. null si byApiKey vaut false (par défaut)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Nombre total de tokens utilisés au cours de la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Rechercher et, éventuellement, extraire les résultats de recherche", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "La requête de recherche" + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de résultats à retourner", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "Paramètre de recherche temporel. Prend en charge des intervalles prédéfinis (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) et des plages de dates personnalisées (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Paramètre de localisation pour les résultats de recherche" + }, + "timeout": { + "type": "integer", + "description": "Délai d’attente en millisecondes", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclut des résultats de la recherche les URL qui ne sont pas valides pour d’autres endpoints Firecrawl. Cela permet de réduire les erreurs si vous réutilisez les données issues de la recherche dans d’autres endpoints de l’API Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "Options pour le scraping des résultats de recherche", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre du résultat de la recherche" + }, + "description": { + "type": "string", + "description": "Description du résultat de la recherche" + }, + "url": { + "type": "string", + "description": "URL du résultat de recherche" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenu en Markdown si le scraping a été demandé" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenu HTML si demandé parmi les formats" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut si demandé parmi les formats" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liens trouvés, si demandés, dans les formats" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la capture d’écran si elle est demandée parmi les formats" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Message d'avertissement en cas de problèmes" + } + } + } + } + } + }, + "408": { + "description": "Délai d’attente dépassé", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "Générer un fichier LLMs.txt pour un site Web", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL utilisée pour générer LLMs.txt" + }, + "maxUrls": { + "type": "integer", + "description": "Nombre maximal d’URL à analyser", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "Inclure l’intégralité du texte dans la réponse", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "La tâche de génération du fichier LLMs.txt a été lancée avec succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID de la tâche de génération de LLMs.txt" + } + } + } + } + } + }, + "400": { + "description": "Paramètres de requête invalides", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de génération du fichier LLMs.txt", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir l’état et les résultats d’une tâche de génération de LLMs.txt", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "Le contenu généré du fichier LLMs.txt" + }, + "llmsfulltxt": { + "type": "string", + "description": "Le contenu textuel complet lorsque showFullText vaut true" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Date d’expiration du contenu généré" + } + } + } + } + } + }, + "404": { + "description": "Tâche de génération de LLMs.txt introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Ne renvoyer que le contenu principal de la page, en excluant les en-têtes, éléments de navigation, pieds de page, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à inclure dans le résultat." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à exclure du résultat." + }, + "maxAge": { + "type": "integer", + "description": "Retourne une version mise en cache de la page si elle est plus récente que cet âge, en millisecondes. Si une version mise en cache de la page est plus ancienne que cette valeur, la page sera à nouveau explorée. Si vous n’avez pas besoin de données extrêmement fraîches, activer cette option peut accélérer vos opérations de scraping jusqu’à 500 %. La valeur par défaut est 0, ce qui désactive la mise en cache.", + "default": 0 + }, + "headers": { + "type": "object", + "description": "En-têtes HTTP à envoyer avec la requête. Ils peuvent servir à transmettre des cookies, un user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Indiquez un délai en millisecondes avant de récupérer le contenu, pour laisser à la page le temps de se charger.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Mettez cette option à true si vous souhaitez émuler le scraping depuis un appareil mobile. Utile pour tester des pages responsives et prendre des captures d’écran sur mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorer la vérification du certificat TLS lors des requêtes", + "default": false + }, + "timeout": { + "type": "integer", + "description": "Délai d’expiration de la requête (en millisecondes)", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "Contrôle la façon dont les fichiers PDF sont traités lors du scraping. Lorsque true, le contenu du PDF est extrait et converti au format Markdown, avec une facturation basée sur le nombre de pages (1 crédit par page). Lorsque false, le fichier PDF est renvoyé encodé en base64 avec un tarif forfaitaire de 1 crédit au total.", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "objet d’options au format JSON", + "properties": { + "schema": { + "type": "object", + "description": "Le schéma à utiliser pour l’extraction (optionnel). Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "Le prompt système à utiliser pour l’extraction (facultatif)" + }, + "prompt": { + "type": "string", + "description": "Le prompt à utiliser pour l’extraction sans schéma (optionnel)" + } + } + }, + "actions": { + "type": "array", + "description": "Actions à effectuer sur la page avant d’extraire le contenu", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Attendre un nombre spécifié de millisecondes" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Délai d’attente en millisecondes" + }, + "selector": { + "type": "string", + "description": "Sélecteur permettant de trouver l’élément par", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Prenez une capture d’écran. Les liens figureront dans le tableau `actions.screenshots` de la réponse." + }, + "fullPage": { + "type": "boolean", + "description": "Indique s’il faut effectuer une capture d’écran de la page entière ou se limiter à la zone d’affichage actuelle.", + "default": false + }, + "quality": { + "type": "integer", + "description": "La qualité de la capture d’écran, de 1 à 100. 100 indique la qualité maximale." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Cliquez sur un élément" + }, + "selector": { + "type": "string", + "description": "Sélecteur de requête pour rechercher l’élément par", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clique sur tous les éléments correspondant au sélecteur, et pas seulement sur le premier. Ne génère pas d’erreur si aucun élément ne correspond.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Saisir du texte dans un champ de saisie, une zone de texte ou un élément « contenteditable ». Remarque : vous devez d’abord donner le focus à l’élément à l’aide d’une action de type « click » avant d’écrire. Le texte sera saisi caractère par caractère pour simuler une saisie au clavier." + }, + "text": { + "type": "string", + "description": "Texte à saisir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Appuyez sur une touche du clavier. Voir https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html pour la liste des codes de touches.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Appuyez sur une touche de cette page" + }, + "key": { + "type": "string", + "description": "Touche à presser", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Faites défiler la page ou un élément spécifique" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sens de défilement", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Sélecteur CSS pour l’élément à faire défiler", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrait le contenu de la page en cours et renvoie l’URL et le HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Exécuter du code JavaScript sur la page" + }, + "script": { + "type": "string", + "description": "Code JavaScript à exécuter", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Générer un PDF de la page actuelle. Le PDF sera renvoyé dans le tableau `actions.pdfs` de la réponse." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "Le format de page du PDF obtenu", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Indique si le PDF doit être généré en mode paysage", + "default": false + }, + "scale": { + "type": "number", + "description": "Le facteur d’échelle du PDF généré", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Paramètres de localisation de la requête. Lorsqu’ils sont spécifiés, un proxy approprié sera utilisé si disponible et les paramètres de langue et de fuseau horaire correspondants seront reproduits. Si rien n’est précisé, la valeur par défaut est « US ».", + "properties": { + "country": { + "type": "string", + "description": "Code de pays ISO 3166-1 alpha-2 (par ex. « US », « AU », « DE », « JP »)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Langues et paramètres régionaux préférés de la requête, par ordre de priorité. Par défaut, utilise la langue du lieu spécifié. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Supprime toutes les images en base64 de la sortie, car elles peuvent être extrêmement volumineuses. Le texte alternatif de l’image est conservé dans la sortie, mais l’URL est remplacée par un placeholder.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Active le blocage des publicités et des pop-ups de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Spécifie le type de proxy à utiliser.\n\n - **basic** : Proxies pour le scraping de sites sans ou avec des solutions anti-bot basiques. Rapides et fonctionnent généralement bien.\n - **stealth** : Proxies furtifs pour le scraping de sites avec des solutions anti-bot avancées. Plus lents, mais plus fiables sur certains sites. Coût pouvant aller jusqu’à 5 crédits par requête.\n - **auto** : Firecrawl réessaiera automatiquement le scraping avec des proxies furtifs si le proxy basic échoue. Si la nouvelle tentative avec stealth réussit, 5 crédits seront facturés pour le scraping. Si la première tentative avec basic réussit, seul le coût normal sera facturé.\n\nSi vous ne spécifiez pas de proxy, Firecrawl utilisera basic par défaut." + }, + "storeInCache": { + "type": "boolean", + "description": "Si la valeur est true, la page sera stockée dans l’index et le cache Firecrawl. Définir ce paramètre sur false est utile si votre activité de scraping peut soulever des préoccupations en matière de protection des données. L’utilisation de certains paramètres associés à un scraping sensible (actions, headers) imposera la valeur false à ce paramètre.", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "Formats à inclure dans la sortie.", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "Options de suivi des modifications (bêta). Applicable uniquement lorsque 'changeTracking' est inclus dans les formats. Le format 'markdown' doit également être spécifié lors de l’utilisation du suivi des modifications.", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "Le mode à utiliser pour le suivi des modifications. « git-diff » fournit un diff détaillé et « json » compare les données JSON extraites." + }, + "schema": { + "type": "object", + "description": "Schéma d’extraction JSON utilisé en mode « json ». Définit la structure des données à extraire et à comparer. Doit respecter la spécification [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Invite (prompt) à utiliser pour le suivi des modifications en mode « json ». S’il n’est pas fourni, l’invite par défaut sera utilisée." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag à utiliser pour le suivi des modifications. Les tags peuvent séparer l’historique de suivi des modifications en « branches » distinctes : le suivi associé à un tag donné ne sera comparé qu’aux opérations de scraping effectuées avec ce même tag. Si aucun tag n’est fourni, le tag par défaut (null) sera utilisé." + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `html` figure dans `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `rawHtml` figure dans `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `screenshot` est inclus dans `formats`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `links` figure dans `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Résultats des actions spécifiées dans le paramètre `actions`. Uniquement présent si le paramètre `actions` a été fourni dans la requête.", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs de captures d’écran, dans le même ordre que les actions de capture d’écran fournies.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extraire le contenu dans le même ordre que les actions de scrape indiquées.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Les valeurs de retour JavaScript, dans le même ordre que les actions executeJavascript fournies.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDF générés, dans le même ordre que les actions PDF fournies.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d'état de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d'erreur de la page" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Affiché lors de l’utilisation de l’extraction LLM. Données extraites de la page selon le schéma défini.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Peut être affiché lors de l’utilisation de LLM Extraction. Un message d’avertissement vous signalera tout problème lié à l’extraction." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informations de suivi des modifications si `changeTracking` figure dans `formats`. Présentes uniquement lorsque le format `changeTracking` est demandé.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Horodatage du précédent scraping auquel la page actuelle est comparée. Null s’il n’existe aucun scraping précédent." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "Le résultat de la comparaison entre les deux versions de la page. « new » signifie que cette page n’existait pas auparavant, « same » signifie que le contenu n’a pas changé, « changed » signifie que le contenu a changé et « removed » signifie que la page a été supprimée." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilité de la page ou de l’URL en cours. « visible » signifie que l’URL a été découverte de manière organique (via des liens ou un sitemap), « hidden » signifie que l’URL a été découverte via la mémoire de crawls précédents." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff de type Git des modifications lors de l’utilisation du mode « git-diff ». Uniquement présent lorsque le mode est défini sur « git-diff »." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Résultats de comparaison JSON lors de l’utilisation du mode `json`. Uniquement disponible lorsque le mode est défini sur `json`. Retourne une liste de toutes les clés et de leurs valeurs issues des extractions `previous` et `current`, en fonction du type défini dans le `schema`. Exemple [ici](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Statut actuel du crawl. Peut être `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages pour lesquelles un crawl a été tenté." + }, + "completed": { + "type": "integer", + "description": "Le nombre de pages explorées avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Nombre de crédits consommés par le crawl." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La date et l’heure d’expiration du crawl." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo suivants de données. Fournie si le crawl n’est pas terminé ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données du crawl.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` est défini sur `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut `true`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens de la page si `includeLinks` vaut `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` est défini sur `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code de statut de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Jobs de scraping en échec et détails des erreurs", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Horodatage ISO de l’échec" + }, + "url": { + "type": "string", + "description": "URL collectée" + }, + "error": { + "type": "string", + "description": "Message d’erreur" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Liste des URL dont le scraping a été tenté mais bloqué par robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "État actuel du scraping par lot. Peut être `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages pour lesquelles un scraping a été tenté." + }, + "completed": { + "type": "integer", + "description": "Le nombre de pages extraites avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Le nombre de crédits consommés pour le scraping par lots." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La date et l’heure d’expiration du lot de scraping." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo suivants de données. Renvoyée si le scraping par lots n’est pas terminé ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données de l'extraction par lot.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` est à `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` vaut true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens de la page si `includeLinks` vaut `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d'état de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs est à true, il s’agit d’un tableau contenant les URL invalides spécifiées dans la requête. S’il n’y a aucune URL invalide, ce sera un tableau vide. Si ignoreInvalidURLs est à false, ce champ sera undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs vaut true, il s’agit d’un tableau contenant les URL invalides qui ont été spécifiées dans la requête. S’il n’y a aucune URL invalide, ce sera un tableau vide. Si ignoreInvalidURLs vaut false, ce champ sera undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "Le statut actuel de la tâche d’extraction" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/fr/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx b/fr/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx index 7de58aa6..d10dcbed 100644 --- a/fr/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx +++ b/fr/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "Annuler un scraping par lot" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' ---
diff --git a/fr/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx b/fr/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx index 6a6bef19..84e21312 100644 --- a/fr/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx +++ b/fr/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: "Récupérer les erreurs d'extraction par lot" -openapi: "v2-openapi GET /batch/scrape/{id}/errors" +openapi: "/fr/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors" ---
diff --git a/fr/v1/api-reference/v2-endpoint/batch-scrape-get.mdx b/fr/v1/api-reference/v2-endpoint/batch-scrape-get.mdx index 4d6b4bd9..1609246f 100644 --- a/fr/v1/api-reference/v2-endpoint/batch-scrape-get.mdx +++ b/fr/v1/api-reference/v2-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obtenir l’état d’une extraction par lot' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' ---
diff --git a/fr/v1/api-reference/v2-endpoint/batch-scrape.mdx b/fr/v1/api-reference/v2-endpoint/batch-scrape.mdx index 0b2764c3..36532479 100644 --- a/fr/v1/api-reference/v2-endpoint/batch-scrape.mdx +++ b/fr/v1/api-reference/v2-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: "Extraction par lots" -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' ---
diff --git a/fr/v1/api-reference/v2-endpoint/crawl-active.mdx b/fr/v1/api-reference/v2-endpoint/crawl-active.mdx index 6b812276..e81f0c5f 100644 --- a/fr/v1/api-reference/v2-endpoint/crawl-active.mdx +++ b/fr/v1/api-reference/v2-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: "Récupérer les crawls actifs" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' ---
diff --git a/fr/v1/api-reference/v2-endpoint/crawl-delete.mdx b/fr/v1/api-reference/v2-endpoint/crawl-delete.mdx index aab63b94..2ff82532 100644 --- a/fr/v1/api-reference/v2-endpoint/crawl-delete.mdx +++ b/fr/v1/api-reference/v2-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "Annuler un crawl" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' ---
diff --git a/fr/v1/api-reference/v2-endpoint/crawl-get-errors.mdx b/fr/v1/api-reference/v2-endpoint/crawl-get-errors.mdx index d3d09787..22cefac5 100644 --- a/fr/v1/api-reference/v2-endpoint/crawl-get-errors.mdx +++ b/fr/v1/api-reference/v2-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Récupérer les erreurs de crawl' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' ---
diff --git a/fr/v1/api-reference/v2-endpoint/crawl-get.mdx b/fr/v1/api-reference/v2-endpoint/crawl-get.mdx index a4a9549b..6b41bfc9 100644 --- a/fr/v1/api-reference/v2-endpoint/crawl-get.mdx +++ b/fr/v1/api-reference/v2-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l’état du crawl" -openapi: "v2-openapi GET /crawl/{id}" +openapi: "/fr/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}" ---
diff --git a/fr/v1/api-reference/v2-endpoint/crawl-post.mdx b/fr/v1/api-reference/v2-endpoint/crawl-post.mdx index 738c6cf6..48673992 100644 --- a/fr/v1/api-reference/v2-endpoint/crawl-post.mdx +++ b/fr/v1/api-reference/v2-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "Crawl" -openapi: 'v2-openapi POST /crawl' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -20,7 +20,6 @@ Décrivez en anglais simple ce qu’il doit explorer : } ``` -
### Meilleur contrôle du sitemap
diff --git a/fr/v1/api-reference/v2-endpoint/credit-usage-historical.mdx b/fr/v1/api-reference/v2-endpoint/credit-usage-historical.mdx index 1ae27ae0..935ddd90 100644 --- a/fr/v1/api-reference/v2-endpoint/credit-usage-historical.mdx +++ b/fr/v1/api-reference/v2-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Historique d’utilisation des crédits" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- Renvoie l’historique d’utilisation des crédits, mois par mois. Le point de terminaison peut aussi, en option, ventiler l’utilisation par clé d’API. \ No newline at end of file diff --git a/fr/v1/api-reference/v2-endpoint/credit-usage.mdx b/fr/v1/api-reference/v2-endpoint/credit-usage.mdx index b38c670c..631154e8 100644 --- a/fr/v1/api-reference/v2-endpoint/credit-usage.mdx +++ b/fr/v1/api-reference/v2-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: "Consommation de crédits" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' ---
diff --git a/fr/v1/api-reference/v2-endpoint/extract-get.mdx b/fr/v1/api-reference/v2-endpoint/extract-get.mdx index 000e7eef..7e74d8ce 100644 --- a/fr/v1/api-reference/v2-endpoint/extract-get.mdx +++ b/fr/v1/api-reference/v2-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: "Obtenir l'état de l'extraction" -openapi: "v2-openapi GET /extract/{id}" +openapi: "/fr/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}" ---
diff --git a/fr/v1/api-reference/v2-endpoint/extract.mdx b/fr/v1/api-reference/v2-endpoint/extract.mdx index 639460f7..26d6698b 100644 --- a/fr/v1/api-reference/v2-endpoint/extract.mdx +++ b/fr/v1/api-reference/v2-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: "Extract" -openapi: 'v2-openapi POST /extract' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /extract' ---
diff --git a/fr/v1/api-reference/v2-endpoint/map.mdx b/fr/v1/api-reference/v2-endpoint/map.mdx index e3f1cfcf..ac12b8ba 100644 --- a/fr/v1/api-reference/v2-endpoint/map.mdx +++ b/fr/v1/api-reference/v2-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map" -openapi: 'v2-openapi POST /map' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ Trois façons de gérer les sitemaps : } ``` -
### Découverte d’URL plus intelligente
diff --git a/fr/v1/api-reference/v2-endpoint/scrape.mdx b/fr/v1/api-reference/v2-endpoint/scrape.mdx index a3de3c37..e1a091cc 100644 --- a/fr/v1/api-reference/v2-endpoint/scrape.mdx +++ b/fr/v1/api-reference/v2-endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: "Scrape" -openapi: 'v2-openapi POST /scrape' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/fr/v1/api-reference/v2-endpoint/search.mdx b/fr/v1/api-reference/v2-endpoint/search.mdx index 56d0d998..38718bac 100644 --- a/fr/v1/api-reference/v2-endpoint/search.mdx +++ b/fr/v1/api-reference/v2-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Recherche' -openapi: 'v2-openapi POST /search' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -24,7 +24,6 @@ Recherchez simultanément le web, les images et l’actualité : } ``` -
### Format de réponse modifié
@@ -42,7 +41,6 @@ v1 : liste à plat des résultats. v2 : organisé par type de source : } ``` -
### Nouvelles fonctionnalités
diff --git a/fr/v1/api-reference/v2-endpoint/token-usage-historical.mdx b/fr/v1/api-reference/v2-endpoint/token-usage-historical.mdx index 552b3007..ed4ddd5d 100644 --- a/fr/v1/api-reference/v2-endpoint/token-usage-historical.mdx +++ b/fr/v1/api-reference/v2-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "Historique d’utilisation des jetons" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- Renvoie l’historique d’utilisation des jetons mois par mois. Le point de terminaison peut également ventiler l’utilisation par clé d’API. \ No newline at end of file diff --git a/fr/v1/api-reference/v2-endpoint/token-usage.mdx b/fr/v1/api-reference/v2-endpoint/token-usage.mdx index a3444342..fd26949d 100644 --- a/fr/v1/api-reference/v2-endpoint/token-usage.mdx +++ b/fr/v1/api-reference/v2-endpoint/token-usage.mdx @@ -1,4 +1,4 @@ --- title: "Utilisation des tokens" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/fr/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- \ No newline at end of file diff --git a/fr/v1/api-reference/v2-openapi.json b/fr/v1/api-reference/v2-openapi.json new file mode 100644 index 00000000..16c3b395 --- /dev/null +++ b/fr/v1/api-reference/v2-openapi.json @@ -0,0 +1,3261 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "API pour interagir avec les services Firecrawl afin d’effectuer des tâches de scraping et de crawling web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Scraper une seule URL et éventuellement en extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL à analyser" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si ce paramètre est défini sur true, cela désactivera toute conservation des données pour ce scraping. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Effectuer un scraping de plusieurs URL et, en option, en extraire des informations à l’aide d’un LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "L’URL à scraper" + } + }, + "webhook": { + "type": "object", + "description": "Un objet représentant une spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Ce dernier sera déclenché au démarrage du scraping par lot (batch_scrape.started), pour chaque page scrappée (batch_scrape.page) et lorsque le scraping par lot est terminé (batch_scrape.completed) ou échoue (batch_scrape.failed). La réponse sera identique à celle renvoyée par l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans tous les payloads de webhook de ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook (par défaut : tous).", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal de scrapes simultanés. Ce paramètre vous permet de définir une limite de parallélisme pour ce batch de scraping. S’il n’est pas spécifié, le batch de scraping respecte la limite de parallélisme définie pour votre équipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si des URL non valides sont spécifiées dans le tableau urls, elles seront ignorées. Plutôt que de faire échouer l’ensemble de la requête, un scraping par lot sera lancé avec les URL valides restantes, et les URL non valides seront renvoyées dans le champ invalidURLs de la réponse." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si cette valeur est définie sur true, aucune donnée ne sera conservée pour ce scraping par lot. Pour activer cette option, veuillez contacter help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping en lot", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer le statut d’un job de scraping par lots", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler un job de scraping par lot", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Tâche de scraping par lots introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de scraping par lots", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer les erreurs d'une tâche de scraping par lots", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’identifiant de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenir le statut d'une tâche de crawl", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Annuler un job de crawl", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Annulation réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tâche de crawl introuvable", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "L’ID de la tâche de crawl", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Récupérer les erreurs d’une tâche de crawl", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Explorer plusieurs URL selon les options", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle démarrer l’exploration" + }, + "prompt": { + "type": "string", + "description": "Invite à utiliser pour générer les options du crawler (tous les paramètres ci-dessous) à partir d’une description en langage naturel. Les paramètres définis explicitement auront priorité sur les équivalents générés." + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Des expressions régulières de chemin d’URL qui excluent de l’exploration les URL correspondantes. Par exemple, si vous définissez `\"excludePaths\": [\"blog/.*\"]` pour l’URL de base firecrawl.dev, tous les résultats correspondant à ce modèle seront exclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Motifs d’expressions régulières (regex) pour les chemins d’URL qui indiquent quelles URL inclure dans le crawl. Seuls les chemins correspondant aux motifs spécifiés seront inclus dans la réponse. Par exemple, si vous définissez `\"includePaths\": [\"blog/.*\"]` pour l’URL de base firecrawl.dev, seuls les résultats correspondant à ce motif seront inclus, comme https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profondeur maximale d’exploration en fonction de l’ordre de découverte. Le site racine et les pages provenant du sitemap ont une profondeur de découverte de 0. Par exemple, si vous définissez ce paramètre sur 1 et que vous activez ignoreSitemap, vous n’explorerez que l’URL saisie et toutes les URL liées depuis cette page." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Mode sitemap pour l’exploration. Si vous le définissez sur « skip », le crawler ignorera le sitemap du site web et n’explorera que l’URL fournie, puis découvrira les pages à partir de là.", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ne relancez pas le scraping du même chemin avec des paramètres de requête différents (ou sans paramètres)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de pages à explorer. La limite par défaut est de 10 000.", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Autorise le crawler à suivre les liens internes vers des URL de même niveau ou parentes, et pas seulement vers les chemins enfants.\n\nfalse : N'explore que les URL plus profondes (enfants).\n→ ex. /features/feature-1 → /features/feature-1/tips ✅\n→ Ne suivra pas /pricing ou / ❌\n\ntrue : Explore tous les liens internes, y compris ceux de même niveau et les parents.\n→ ex. /features/feature-1 → /pricing, /, etc. ✅\n\nUtilisez true pour une couverture interne plus large, au-delà des chemins imbriqués.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permet au crawler de suivre les liens vers des sites web externes.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Autorise le crawler à suivre les liens pointant vers les sous-domaines du domaine principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Délai en secondes entre chaque opération de scraping. Cela permet de respecter les limites de fréquence des sites web." + }, + "maxConcurrency": { + "type": "integer", + "description": "Nombre maximal d’opérations de scraping simultanées. Ce paramètre vous permet de définir une limite de parallélisme pour ce crawl. S’il n’est pas renseigné, le crawl respecte la limite de parallélisme définie pour votre équipe." + }, + "webhook": { + "type": "object", + "description": "Un objet de spécification de webhook.", + "properties": { + "url": { + "type": "string", + "description": "L’URL à laquelle envoyer le webhook. Celui-ci sera déclenché au démarrage du crawl (crawl.started), pour chaque page explorée (crawl.page) et lorsque le crawl est terminé (crawl.completed ou crawl.failed). La réponse sera identique à celle de l’endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer à l’URL du webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Métadonnées personnalisées qui seront incluses dans tous les payloads de webhook de ce crawl", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Type d’événements à envoyer à l’URL du webhook. (par défaut : tous)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Si la valeur est true, cela activera l’absence totale de conservation des données pour ce crawl. Pour activer cette fonctionnalité, veuillez contacter help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapper plusieurs URL selon les options", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de base à partir de laquelle lancer le crawl" + }, + "search": { + "type": "string", + "description": "Requête de recherche à utiliser pour la cartographie. Pendant la phase Alpha, la composante « intelligente » de la fonctionnalité de recherche est limitée à 500 résultats de recherche. En revanche, si map trouve davantage de résultats, aucune limite n’est appliquée." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "Mode sitemap lors du mappage. Si vous le réglez sur `skip`, le sitemap ne sera pas utilisé pour trouver des URL. Si vous le réglez sur `only`, seules les URL présentes dans le sitemap seront renvoyées. Par défaut (`include`), le sitemap est utilisé conjointement avec les autres méthodes pour trouver des URL.", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "Inclure les sous-domaines du site", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Ne retournez pas d’URL comportant des paramètres de requête", + "default": true + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de liens à retourner", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Délai d’expiration en millisecondes. Aucun délai d’expiration n’est défini par défaut." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraire des données structurées à partir de pages à l’aide de modèles de langage (LLM)", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "Les URL à partir desquelles les données seront extraites. Les URL doivent être au format glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt pour guider le processus d’extraction" + }, + "schema": { + "type": "object", + "description": "Schéma définissant la structure des données extraites. Doit être conforme à la [spécification JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Lorsque cette option est activée, l’extraction utilisera la recherche web pour trouver des données supplémentaires", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Si cette option est définie sur true, les fichiers sitemap.xml sont ignorés pendant l’analyse du site web", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Si la valeur est définie sur true, les sous-domaines des URL fournies seront également explorés", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Si la valeur est `true`, les sources utilisées pour extraire les données seront incluses dans la réponse sous la clé `sources`.", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Si des URL non valides sont spécifiées dans le tableau urls, elles seront ignorées. Plutôt que de provoquer l’échec de l’ensemble de la requête, une extraction sera effectuée en utilisant uniquement les URL valides restantes, et les URL non valides seront renvoyées dans le champ invalidURLs de la réponse." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extraction réussie", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Requête invalide", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID de la tâche d’extraction", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Consulter le statut d’une tâche d’extraction", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Récupérer tous les crawls actifs de l’équipe authentifiée", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "L’identifiant unique de l’exploration" + }, + "teamId": { + "type": "string", + "description": "ID de l’équipe propriétaire du crawl" + }, + "url": { + "type": "string", + "format": "uri", + "description": "L’URL de départ du crawl" + }, + "options": { + "type": "object", + "description": "Options du crawler utilisées pour ce crawl", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Paiement requis", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Trop de requêtes", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obtenir le nombre de crédits restants de l'équipe authentifiée", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "Nombre de crédits restants pour l'équipe", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "Nombre de crédits inclus dans le forfait. Cela n’inclut pas les crédits de coupons, les packs de crédits ni les recharges automatiques.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. Null si vous utilisez l’offre gratuite", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Impossible de trouver les informations sur l’utilisation des crédits", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtenir l’historique d’utilisation des crédits pour l’équipe authentifiée", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des crédits par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé d’API utilisée pour la période de facturation. null si byApiKey est false (valeur par défaut)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Nombre total de crédits utilisés sur la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obtenir le nombre de jetons restants de l’équipe authentifiée (uniquement pour Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "Nombre de jetons restants pour l’équipe", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "Nombre de jetons inclus dans l’offre. N’inclut pas les jetons issus de coupons.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation. null si vous utilisez le plan gratuit", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation. null si le plan gratuit est utilisé", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informations sur l’utilisation des jetons introuvables", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtenir l’historique d’utilisation des jetons pour l’équipe authentifiée (Extract uniquement)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Récupérer l’historique d’utilisation des jetons par clé API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Réponse en cas de succès", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Date de début de la période de facturation", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Date de fin de la période de facturation", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nom de la clé d’API utilisée pour la période de facturation. null si byApiKey est false (valeur par défaut)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Nombre total de jetons utilisés pendant la période de facturation", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erreur serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Rechercher et éventuellement scraper les résultats de recherche", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Requête de recherche" + }, + "limit": { + "type": "integer", + "description": "Nombre maximal de résultats à retourner", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Paramètre de recherche temporel. Prend en charge les plages temporelles prédéfinies (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) ainsi que les plages de dates personnalisées (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Paramètre de localisation pour les résultats de recherche" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Sources à utiliser pour la recherche. Détermine les tableaux disponibles dans la réponse.", + "default": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Paramètre de recherche temporel. Prend en charge des intervalles de temps prédéfinis (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) et des plages de dates personnalisées (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Paramètre de localisation pour les résultats de recherche" + }, + "timeout": { + "type": "integer", + "description": "Délai d’expiration (en millisecondes)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclut des résultats de recherche les URL invalides pour d’autres endpoints Firecrawl. Cela permet de réduire les erreurs si vous envoyez les données issues de la recherche vers d’autres endpoints de l’API Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "Options d’extraction des résultats de recherche", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Réponse réussie", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre du résultat de recherche" + }, + "description": { + "type": "string", + "description": "Description du résultat de recherche" + }, + "url": { + "type": "string", + "description": "URL du résultat de la recherche" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenu Markdown lorsque le scraping a été demandé" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenu HTML si ce format est demandé" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut si ce format est demandé" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liens renvoyés si demandés dans les formats" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la capture d’écran si ce format est demandé dans formats" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre du résultat de la recherche" + }, + "imageUrl": { + "type": "string", + "description": "URL de l’image" + }, + "imageWidth": { + "type": "integer", + "description": "Largeur de l’image" + }, + "imageHeight": { + "type": "integer", + "description": "Hauteur de l’image" + }, + "url": { + "type": "string", + "description": "URL du résultat de la recherche" + }, + "position": { + "type": "integer", + "description": "Position du résultat de recherche" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Titre de l’article" + }, + "snippet": { + "type": "string", + "description": "Extrait de l’article" + }, + "url": { + "type": "string", + "description": "URL de l’article" + }, + "date": { + "type": "string", + "description": "Date de l’article" + }, + "imageUrl": { + "type": "string", + "description": "URL de l'image de l'article" + }, + "position": { + "type": "integer", + "description": "Position de l’article" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Contenu Markdown si le scraping a été demandé" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Contenu HTML si demandé dans les formats de sortie" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut lorsqu’il est demandé dans les formats" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liens trouvés si demandés via formats" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL de la capture d’écran si ce format est demandé" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "Les résultats de la recherche. Les tableaux disponibles dépendront des sources que vous avez spécifiées dans la requête. Par défaut, le tableau `web` sera retourné." + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Message d'avertissement en cas de problème" + } + } + } + } + } + }, + "408": { + "description": "Délai d’attente dépassé", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erreur du serveur", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "Indique s’il faut réaliser une capture d’écran de la page entière ou la limiter à la zone actuellement visible (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "La qualité de la capture d’écran, sur une échelle de 1 à 100. 100 correspond à la qualité maximale." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "Largeur du viewport en pixels" + }, + "height": { + "type": "integer", + "description": "Hauteur du viewport en pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "Le schéma à utiliser pour la sortie au format JSON. Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Le prompt à utiliser pour la sortie JSON" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "Le mode de suivi des modifications à utiliser. « git-diff » fournit un diff détaillé, et « json » compare les données JSON extraites." + }, + "schema": { + "type": "object", + "description": "Schéma d’extraction JSON pour le mode « json ». Définit la structure des données à extraire et à comparer. Doit être conforme à [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt à utiliser pour le suivi des modifications en mode « json ». S’il n’est pas renseigné, le prompt par défaut sera utilisé." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag à utiliser pour le suivi des modifications. Les tags permettent de répartir l’historique du suivi des modifications en « branches » distinctes : le suivi associé à un tag donné ne se comparera qu’aux extractions effectuées avec ce même tag. S’il n’est pas renseigné, le tag par défaut (null) sera utilisé." + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Formats de sortie à inclure dans la réponse. Vous pouvez spécifier un ou plusieurs formats, soit sous forme de chaînes de caractères (par exemple, `'markdown'`), soit sous forme d’objets avec des options supplémentaires (par exemple, `{ type: 'json', schema: {...} }`). Certains formats nécessitent la définition d’options spécifiques. Exemple : `['markdown', { type: 'json', schema: {...} }]`.", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Retourner uniquement le contenu principal de la page, en excluant les en-têtes, barres de navigation, pieds de page, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à inclure dans le résultat." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Balises à exclure du résultat." + }, + "maxAge": { + "type": "integer", + "description": "Renvoie une version mise en cache de la page si elle a été mise en cache il y a moins de cette durée (en millisecondes). Si la version mise en cache de la page est plus ancienne que cette valeur, la page sera à nouveau scrapée. Si vous n’avez pas besoin de données extrêmement récentes, activer cette option peut accélérer vos scrapes jusqu’à 500 %. La valeur par défaut est de 2 jours.", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "En-têtes à envoyer avec la requête. Ils peuvent être utilisés pour envoyer des cookies, un user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Spécifiez un délai en millisecondes avant de récupérer le contenu, afin de laisser à la page suffisamment de temps pour se charger.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Définissez cette valeur sur true si vous souhaitez simuler le scraping depuis un appareil mobile. Utile pour tester des pages responsives et prendre des captures d’écran sur mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorer la vérification du certificat TLS pour les requêtes", + "default": true + }, + "timeout": { + "type": "integer", + "description": "Délai d'expiration de la requête, en millisecondes." + }, + "parsers": { + "type": "array", + "description": "Contrôle la façon dont les fichiers sont traités lors du scraping. Lorsque « pdf » est inclus (par défaut), le contenu du PDF est extrait et converti au format Markdown, avec une facturation basée sur le nombre de pages (1 crédit par page). Lorsqu’un tableau vide est transmis, le fichier PDF est renvoyé en encodage base64 avec un tarif fixe de 1 crédit au total.", + "items": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "Actions à effectuer sur la page avant de récupérer le contenu", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Attendre pendant un nombre spécifié de millisecondes" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Durée d’attente en millisecondes" + }, + "selector": { + "type": "string", + "description": "Sélecteur pour trouver l’élément par", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Prenez une capture d’écran. Les liens seront disponibles dans le tableau `actions.screenshots` de la réponse." + }, + "fullPage": { + "type": "boolean", + "description": "Indique s’il faut effectuer une capture d’écran de la page entière ou la limiter à la zone de visualisation actuelle (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "La qualité de la capture d’écran, entre 1 et 100, 100 correspondant à la meilleure qualité." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "Largeur du viewport en pixels" + }, + "height": { + "type": "integer", + "description": "La hauteur du viewport en pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Cliquez sur un élément" + }, + "selector": { + "type": "string", + "description": "Sélecteur de requête permettant de trouver l’élément", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clique sur tous les éléments qui correspondent au sélecteur, et pas seulement sur le premier. Ne lève pas d’erreur si aucun élément ne correspond au sélecteur.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Saisissez du texte dans un champ de saisie, une zone de texte ou un élément contenteditable. Remarque : vous devez d’abord donner le focus à l’élément à l’aide d’une action `click` avant d’écrire. Le texte sera saisi caractère par caractère pour simuler une saisie au clavier." + }, + "text": { + "type": "string", + "description": "Texte à saisir", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Appuyez sur une touche du clavier. Consultez https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html pour la liste des codes de touches.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Appuyez sur une touche" + }, + "key": { + "type": "string", + "description": "Touche à presser", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Faire défiler la page ou un élément spécifique" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sens de défilement", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Sélecteur CSS de l’élément à faire défiler", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrait le contenu de la page en cours et renvoie l’URL ainsi que le HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Exécuter le code JavaScript sur la page" + }, + "script": { + "type": "string", + "description": "Code JavaScript à exécuter", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Générer un PDF de la page actuelle. Le PDF sera renvoyé dans le tableau `actions.pdfs` de la réponse." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "La taille de la page du PDF généré", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Indique s’il faut générer le PDF au format paysage", + "default": false + }, + "scale": { + "type": "number", + "description": "Le multiplicateur d’échelle du PDF généré", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Paramètres de localisation pour la requête. Lorsqu’ils sont définis, un proxy approprié est utilisé, si disponible, et la langue ainsi que le fuseau horaire correspondants sont émulés. La valeur par défaut est « US » si non spécifié.", + "properties": { + "country": { + "type": "string", + "description": "Code de pays ISO 3166-1 alpha-2 (p. ex. « US », « AU », « DE », « JP »)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Langues et paramètres régionaux préférés pour la requête, par ordre de priorité. Par défaut, la langue du lieu spécifié est utilisée. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Supprime toutes les images encodées en base64 de la sortie, qui peuvent être excessivement longues. Le texte alternatif de l’image est conservé, mais l’URL est remplacée par un espace réservé.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Active le blocage des publicités et des fenêtres contextuelles de consentement aux cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Spécifie le type de proxy à utiliser.\n\n - **basic** : Proxies pour le scraping de sites avec peu ou pas de solutions antibot. Rapides et généralement efficaces.\n - **stealth** : Proxies furtifs pour le scraping de sites avec des solutions antibot avancées. Plus lents, mais plus fiables sur certains sites. Coût pouvant aller jusqu’à 5 crédits par requête.\n - **auto** : Firecrawl retentera automatiquement le scraping avec des proxies furtifs si le proxy basic échoue. Si la nouvelle tentative avec stealth réussit, 5 crédits seront facturés pour le scraping. Si la première tentative avec basic réussit, seul le coût normal sera facturé.\n\nSi vous ne spécifiez pas de proxy, Firecrawl utilisera auto par défaut.", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "Si ce paramètre est défini sur true, la page sera stockée dans l’index et le cache de Firecrawl. Le définir sur false est utile si votre activité de scraping peut soulever des problèmes de protection des données. L’utilisation de certains paramètres associés à un scraping sensible (actions, en-têtes) fera automatiquement passer ce paramètre à false.", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "Résumé de la page si `summary` est inclus dans `formats`" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `html` fait partie de `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `rawHtml` figure dans `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d'écran de la page si `screenshot` fait partie des `formats`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `links` fait partie de `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Résultats des actions spécifiées dans le paramètre `actions`. Uniquement présent si le paramètre `actions` a été fourni dans la requête.", + "properties": { + "screenshots": { + "type": "array", + "description": "Les URL de captures d'écran, dans le même ordre que les actions screenshot fournies.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extraire le contenu dans le même ordre que les actions d'extraction fournies.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valeurs renvoyées par JavaScript, dans le même ordre que les actions executeJavascript fournies.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDF générés dans le même ordre que les actions PDF fournies.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d’état HTTP de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Peut être affiché lors de l’utilisation de l’extraction LLM. Un message d’avertissement vous indiquera tout problème d’extraction." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informations de suivi des modifications si `changeTracking` figure dans `formats`. Uniquement présent lorsque le format `changeTracking` est demandé.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "Horodatage du précédent scraping auquel la page actuelle est comparée. Null s’il n’existe aucun précédent scraping." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "Le résultat de la comparaison entre les deux versions de la page. « new » indique que cette page n’existait pas auparavant, « same » indique que le contenu n’a pas changé, « changed » indique que le contenu a changé, « removed » indique que la page a été supprimée." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "La visibilité de la page/URL actuelle. « visible » signifie que l’URL a été découverte de manière organique (liens ou sitemap), « hidden » signifie que l’URL a été découverte à partir de la mémoire de crawls précédents." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff de style Git des modifications lors de l’utilisation du mode « git-diff ». Présent uniquement lorsque le mode est défini sur « git-diff »." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Résultats de comparaison au format JSON lors de l'utilisation du mode `json`. Uniquement présents lorsque le mode est défini sur `json`. Contient la liste de toutes les clés et de leurs valeurs issues des extractions `previous` et `current`, en fonction du type défini dans le `schema`. Exemple [ici](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Le statut actuel du crawl. Peut prendre les valeurs `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages ayant fait l'objet d'une tentative de crawl." + }, + "completed": { + "type": "integer", + "description": "Nombre de pages explorées avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Le nombre de crédits consommés par le crawl." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Date et heure d’expiration du crawl." + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL permettant de récupérer les 10 Mo de données suivants. Renvoyée si le crawl n’est pas terminé ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données issues du crawl.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` vaut true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` est défini sur true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens présents sur la page si `includeLinks` est à `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code de statut HTTP de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Tâches de scraping en échec et détails des erreurs", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Horodatage ISO de l'échec" + }, + "url": { + "type": "string", + "description": "URL explorée" + }, + "error": { + "type": "string", + "description": "Message d’erreur" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Liste des URL dont le scraping a été tenté mais qui ont été bloquées par le fichier robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "L’état actuel du scraping par lot. Les valeurs possibles sont `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "Nombre total de pages pour lesquelles un scraping a été tenté." + }, + "completed": { + "type": "integer", + "description": "Le nombre de pages extraites avec succès." + }, + "creditsUsed": { + "type": "integer", + "description": "Le nombre de crédits utilisés pour le scraping par lots." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "La date et l’heure d’expiration du lot de scraping." + }, + "next": { + "type": "string", + "nullable": true, + "description": "L’URL permettant de récupérer les 10 Mo de données suivants. Renvoyée si le scraping par lots n’est pas terminé ou si la réponse dépasse 10 Mo." + }, + "data": { + "type": "array", + "description": "Les données du lot de scraping.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Version HTML du contenu de la page si `includeHtml` est défini sur `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Contenu HTML brut de la page si `includeRawHtml` est défini sur true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Liste des liens sur la page si `includeLinks` vaut `true`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Capture d’écran de la page si `includeScreenshot` vaut true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Le code d'état de la page" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Le message d’erreur de la page" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs vaut true, ce champ est un tableau contenant les URL invalides indiquées dans la requête. S’il n’y a aucune URL invalide, ce tableau est vide. Si ignoreInvalidURLs vaut false, ce champ est non défini (undefined)." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Si ignoreInvalidURLs est true, il s’agit d’un tableau contenant les URL invalides spécifiées dans la requête. S’il n’y a aucune URL invalide, ce sera un tableau vide. Si ignoreInvalidURLs est false, ce champ sera undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "L’état actuel de la tâche d’extraction" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "Nombre de jetons utilisés par le job d’extraction. Disponible uniquement une fois le job terminé." + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/fr/v1/features/alpha/llmstxt-npx.mdx b/fr/v1/features/alpha/llmstxt-npx.mdx index 19557660..12e46d6c 100644 --- a/fr/v1/features/alpha/llmstxt-npx.mdx +++ b/fr/v1/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Vous pouvez exécuter ce package avec NPX sans l’installer. Il existe deux man npx generate-llmstxt --api-key VOTRE_CLEF_API_FIRECRAWL ``` -
### 2. Utiliser des variables d’environnement
@@ -47,7 +46,6 @@ Puis exécutez la commande sans l’option --api-key : npx generate-llmstxt ``` -
### Options
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## Prérequis
diff --git a/fr/v1/features/change-tracking.mdx b/fr/v1/features/change-tracking.mdx index 4d83ab63..b0dc74f8 100644 --- a/fr/v1/features/change-tracking.mdx +++ b/fr/v1/features/change-tracking.mdx @@ -69,7 +69,6 @@ Exemple de réponse : } ``` -
### Options avancées
@@ -106,7 +105,6 @@ if (result.changeTracking.json) { } ``` -
### Exemple de résultats de Git-Diff :
@@ -120,7 +118,6 @@ if (result.changeTracking.json) { ... ``` -
### Exemple de résultats de comparaison JSON :
@@ -134,7 +131,6 @@ if (result.changeTracking.json) { } ``` -
### Interface TypeScript
@@ -183,7 +179,6 @@ interface ScrapeParams { } ``` -
## SDK Python
@@ -208,7 +203,6 @@ print("Visibilité :", result.changeTracking.visibility) # « visible » ou « print("Date de l’extraction précédente :", result.changeTracking.previousScrapeAt) # Horodatage ISO de l’extraction précédente ``` -
### Options avancées
@@ -243,7 +237,6 @@ if 'json' in result.changeTracking: print(result.changeTracking.json.title.current) # Titre actuel ``` -
### Modèle de données Python
@@ -262,7 +255,6 @@ class ChangeTrackingData(pydantic.BaseModel): json: Optional[Any] = None ``` -
## Modes de suivi des modifications
@@ -289,7 +281,6 @@ La représentation JSON structurée du diff comprend : * `chunks` : sections de modifications dans un fichier * `changes` : modifications de lignes individuelles avec un type (add, delete, normal) -
### Mode JSON
@@ -313,7 +304,6 @@ Exemple de sortie : Pour utiliser le mode JSON, vous devez fournir un schéma qui définit les champs à extraire et à comparer. -
## Faits importants
@@ -364,7 +354,6 @@ Voici quelques points clés à connaître lors de l’utilisation de la fonction } ``` -
### Exemple d’exploration
@@ -379,7 +368,6 @@ Voici quelques points clés à connaître lors de l’utilisation de la fonction } ``` -
### Suivi des variations de prix des produits
@@ -425,7 +413,6 @@ if result.changeTracking.changeStatus == 'changed': print(f"Le prix est passé de {result.changeTracking.json.price.previous} à {result.changeTracking.json.price.current}") ``` -
### Suivi des modifications de contenu avec git-diff
@@ -459,7 +446,6 @@ if result.changeTracking.changeStatus == 'changed': print(result.changeTracking.diff.text) ``` -
## Facturation
diff --git a/fr/v1/features/extract.mdx b/fr/v1/features/extract.mdx index c7785e1a..b69352f2 100644 --- a/fr/v1/features/extract.mdx +++ b/fr/v1/features/extract.mdx @@ -33,7 +33,6 @@ Le point de terminaison `/extract` simplifie la collecte de données structurée Nous avons simplifié la facturation afin que Extract utilise désormais des crédits, comme tous les autres points de terminaison. Chaque crédit équivaut à 15 tokens. -
## Utilisation de `/extract`
diff --git a/fr/v1/features/search-v0.mdx b/fr/v1/features/search-v0.mdx index 86fb1372..a61f5f07 100644 --- a/fr/v1/features/search-v0.mdx +++ b/fr/v1/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Avec le SDK Python
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### Rechercher une requête
@@ -94,7 +92,6 @@ result = app.search(query="Qu’est-ce que Firecrawl ?") La réponse sera similaire à celle illustrée par la commande curl ci-dessus. -
### Avec le SDK JavaScript
@@ -107,7 +104,6 @@ La réponse sera similaire à celle illustrée par la commande curl ci-dessus. npm install @mendable/firecrawl-js ``` -
#### Rechercher une requête
@@ -124,7 +120,6 @@ const result = await app.search('Qu’est-ce que Firecrawl ?'); La réponse sera similaire à celle affichée dans la commande curl ci-dessus. -
### Avec le SDK Go
@@ -137,7 +132,6 @@ La réponse sera similaire à celle affichée dans la commande curl ci-dessus. go get github.com/mendableai/firecrawl-go ``` -
#### Rechercher une requête
@@ -165,7 +159,6 @@ func main() { } ``` -
### Avec le SDK Rust
@@ -188,7 +181,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### Rechercher une requête
diff --git a/fr/webhooks/events.mdx b/fr/webhooks/events.mdx index 9cbe2298..cb265e0e 100644 --- a/fr/webhooks/events.mdx +++ b/fr/webhooks/events.mdx @@ -24,7 +24,6 @@ Tous les événements webhook suivent cette structure de base : } ``` -
### Champs communs
@@ -60,7 +59,6 @@ Envoyé au début d’une opération de crawl. } ``` -
### `crawl.page`
@@ -99,7 +97,6 @@ Envoyé pour chaque page individuelle extraite pendant un crawl. pour chaque page correctement extraite. -
### `crawl.completed`
@@ -116,7 +113,6 @@ Envoyé lorsque l’opération de crawl complète s’achève avec succès. } ``` -
## Événements de scraping par lot
@@ -139,7 +135,6 @@ Envoyé lorsqu’une opération d’extraction par lots commence. } ``` -
### `batch_scrape.page`
@@ -178,7 +173,6 @@ Envoyé pour chaque URL individuelle extraite dans le lot. événement `batch_scrape.page` pour chaque URL extraite avec succès. -
### `batch_scrape.completed`
@@ -195,7 +189,6 @@ Envoyé lorsque l’opération de scraping par lot est entièrement terminée. } ``` -
## Événements d’extraction
@@ -218,7 +211,6 @@ Envoyé lorsqu’une opération d’extraction démarre. } ``` -
### `extract.completed`
@@ -247,7 +239,6 @@ Envoyé lorsqu’une opération d’extraction s’achève avec succès. } ``` -
### `extract.failed`
@@ -265,7 +256,6 @@ Envoyé lorsqu’une opération d’extraction échoue. } ``` -
## Filtrage des événements
diff --git a/fr/webhooks/testing.mdx b/fr/webhooks/testing.mdx index cc7d6ac9..9db73382 100644 --- a/fr/webhooks/testing.mdx +++ b/fr/webhooks/testing.mdx @@ -43,7 +43,6 @@ Utilisez l’URL fournie dans la configuration de votre webhook : } ``` -
## Débogage des problèmes courants
diff --git a/fr/x402/search.mdx b/fr/x402/search.mdx index 8a7df98c..56e45931 100644 --- a/fr/x402/search.mdx +++ b/fr/x402/search.mdx @@ -1,6 +1,6 @@ --- title: "Recherche à la demande" -openapi: 'v1-openapi POST /x402/search' +openapi: '/fr/api-reference/v1-openapi.json V1-OPENAPI POST /x402/search' --- diff --git a/gt-lock.json b/gt-lock.json index 924eaaee..8f1cd235 100644 --- a/gt-lock.json +++ b/gt-lock.json @@ -17135,114 +17135,144 @@ "3a66180082da1487450288f7fc0623bd2eda2a9d200f0498591097cb55a78045": { "c38e67be1484dae8fc3042e3269657f643258b82fbbc05edbf7a20580d63c644": { "ja": { - "updatedAt": "2025-12-01T18:59:35.538Z" + "updatedAt": "2025-12-08T15:00:22.035Z", + "postProcessHash": "7e0c43c3a18efd508bd796c1193b80c2935e6083a003a59dc13926f5dca6632a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.556Z" + "updatedAt": "2025-12-08T15:00:22.118Z", + "postProcessHash": "7618413beb82e093dc9ce1dd4d70d32df04650cc5b5363ef966e5c5b5851b882" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.557Z" + "updatedAt": "2025-12-08T15:00:22.119Z", + "postProcessHash": "e879a94de0ea556658b4170d8e542284546ec8544edb368e278159529a67046f" }, "es": { - "updatedAt": "2025-12-01T18:59:35.557Z" + "updatedAt": "2025-12-08T15:00:22.128Z", + "postProcessHash": "ce71f17db8e2612dcc5eb38dda2924e59063b2009c7b9a2459f1367166f6d369" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.558Z" + "updatedAt": "2025-12-08T15:00:22.132Z", + "postProcessHash": "77088829b0b1d4117ae7a6226c0baca4bb8a63a936ecec45484a0ed1a787d828" } } }, "c82e5f7ad76e1f86115c538fc654cec710687f0d1a69fa64c1383d71029c038b": { "6625066a71166a859103c6fb4252241c5e4a23381ac4ea2be8ed5945de8b0e99": { "fr": { - "updatedAt": "2025-12-01T18:59:35.520Z" + "updatedAt": "2025-12-08T15:00:22.035Z", + "postProcessHash": "6fa80d61370043da85fedf8d84f51af84d5711313563dd5101433acaf374d6c1" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.521Z" + "updatedAt": "2025-12-08T15:00:22.036Z", + "postProcessHash": "2c3fe4da23b3042249a060d89f0a81971a8f2979c970e4a4ed9c49b34631eab1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.521Z" + "updatedAt": "2025-12-08T15:00:22.024Z", + "postProcessHash": "1d40f3c6aaadfbfb96ac32e2265bf5081980af68037c29998b39202bb07dd7f5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.522Z" + "updatedAt": "2025-12-08T15:00:22.014Z", + "postProcessHash": "b28a108535e8cb5ea7c75d302d216001faf0eea8298414d974381fb0560cff3e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.524Z" + "updatedAt": "2025-12-08T15:00:22.028Z", + "postProcessHash": "c970de1ac7f01e0e49d83b6e37126f84527a82cead79f931376ddce05675d3ef" } } }, "8e24abf2f15a0f3d7215c91dd89d1d4ad90ab988d82a40be4496ab50fe314cd2": { "5859f673a78ba95d010f17093cd96bc5c8f340622455dcafda943427310f04d3": { "zh": { - "updatedAt": "2025-12-01T18:59:35.521Z" + "updatedAt": "2025-12-08T15:00:22.036Z", + "postProcessHash": "06a43ce745d65f3f9c7c18d17d9f7cfae3cf1c9590495a21ba8d0c746cf12f23" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.522Z" + "updatedAt": "2025-12-08T15:00:22.037Z", + "postProcessHash": "92d42c142c777f14d88b18aa4815347424fb80084fe6c7f7ddc91a0809ea0562" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.523Z" + "updatedAt": "2025-12-08T15:00:22.039Z", + "postProcessHash": "2e5d0761c130643bd898f7572dd6009d315d8c86de448c4a6e2f9ea2fd6993c9" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.535Z" + "updatedAt": "2025-12-08T15:00:22.076Z", + "postProcessHash": "41f17767ca3121e09622e9fd2b0bf62d7efd91bb055a42cd8b079a3073daabcd" }, "es": { - "updatedAt": "2025-12-01T18:59:35.537Z" + "updatedAt": "2025-12-08T15:00:22.078Z", + "postProcessHash": "000d290839e81d663bc4c7b8748f044a5398c2df3528accfff35b0db9ba183ef" } } }, "4ab5d2ad88f95b3869594747afa572fdbde80f7d7c914955b775526c28ef5f83": { "12b565b5d95836f1a235c2110fb3920828747276d8b8ffa63521dc95affcbeb8": { "ja": { - "updatedAt": "2025-12-01T18:59:35.522Z" + "updatedAt": "2025-12-08T15:00:22.038Z", + "postProcessHash": "4de05b6ed9883881e6d4b061d6def2f7ca07087cf5c620d373a682a8d34d301f" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.524Z" + "updatedAt": "2025-12-08T15:00:22.034Z", + "postProcessHash": "e05ec475705809b79be8f3dc71d44b674dc3d9e97cdc0e9fb8e7d1afb03f8b92" }, "es": { - "updatedAt": "2025-12-01T18:59:35.526Z" + "updatedAt": "2025-12-08T15:00:22.033Z", + "postProcessHash": "f2557b2f7a9529bec125cf9ed23c2433d710b134d85c15d931c43cf588c6d26c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.538Z" + "updatedAt": "2025-12-08T15:00:22.044Z", + "postProcessHash": "69cf69986f8358d4bbf7532b923d2994d8ce7a6b93fa36eeeffda96fcd3ef412" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.527Z" + "updatedAt": "2025-12-08T15:00:22.050Z", + "postProcessHash": "b09875472e312f0e1514326c0838917e5283a4d6534c8cbfff76e62d84c6b82b" } } }, "215971909d51c53e3d01e7aa9e8f7ca9a6b515db7742f2295f75f454257ad6c8": { "f516f86916e96e1b78d6c677cd1013acbbbc5cb1abf8cae66425489897043fc6": { "fr": { - "updatedAt": "2025-12-01T18:59:35.523Z" + "updatedAt": "2025-12-08T15:00:22.039Z", + "postProcessHash": "e1ba92e9f1dd6f390e4356fb9f9ebe339b4d8b93e04d9c72eb604a786af801e6" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.523Z" + "updatedAt": "2025-12-08T15:00:22.040Z", + "postProcessHash": "140d24e7399529c9271c7d784df168341587b6ab3abf245e9e45f94c9949c65a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.528Z" + "updatedAt": "2025-12-08T15:00:22.059Z", + "postProcessHash": "b18d623a7bd82e4cb5a37ab337a6e0c21d6bba2abf875dff394c333dafb80155" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.536Z" + "updatedAt": "2025-12-08T15:00:22.077Z", + "postProcessHash": "e51b07c7c3159cab86031e6f57c3f83339e02b4031f77a161db5b4355ff33ee6" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.537Z" + "updatedAt": "2025-12-08T15:00:22.078Z", + "postProcessHash": "4e61a660c1c2cdc6b857b4e263efd84d745086824023ee1c8742c0c0e1ea7305" } } }, "20569f63663914a0dbf7bdc92ac23af09e5c0b43c36c4e047eec6584e49ca571": { "52e0dfb9cb84dc5fe59d560c40723fc41de4bbafeb0364388fdcd26bdfa3f907": { "es": { - "updatedAt": "2025-12-01T18:59:35.523Z" + "updatedAt": "2025-12-08T15:00:22.040Z", + "postProcessHash": "b3f85f3fc95d6c8cf8a6b5d388e39979ddf4f74fb4d8f1ed93a14c996f8348be" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.524Z" + "updatedAt": "2025-12-08T15:00:22.041Z", + "postProcessHash": "573ff815b5eb1570df73b6e1d3a9a7fc56283bfe3acc4982f18c9299a8d401c2" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.525Z" + "updatedAt": "2025-12-08T15:00:22.042Z", + "postProcessHash": "e2034163da12c9e5f0afc07aa576ac252a930f02c8dc580c6aa58992816d58ae" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.528Z" + "updatedAt": "2025-12-08T15:00:22.055Z", + "postProcessHash": "45560ba4e2c8e75e7403527988c2bafd776ddd3bcf6a14a6d0f4ad0503b3b915" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.529Z" + "updatedAt": "2025-12-08T15:00:22.108Z", + "postProcessHash": "90101166f0bc721e0a381acd809bf144d1c54748cb4b8e20bd86056b730f5a26" } } }, @@ -17266,95 +17296,120 @@ }, "0660586f770f000f6e4fa938ebf7901d7489c8ea0260a753bd37e7aea2cbadd4": { "ja": { - "updatedAt": "2025-12-01T18:59:35.506Z" + "updatedAt": "2025-12-08T15:00:22.006Z", + "postProcessHash": "31743457609ab66835e10a1ad413f03a83eea108c70a24feb758f3a081cfa86b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.507Z" + "updatedAt": "2025-12-08T15:00:22.022Z", + "postProcessHash": "25fbea8819ddd96e2f1ddecee99e1e27670377e8466c286792704581da8bdd1e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.508Z" + "updatedAt": "2025-12-08T15:00:22.029Z", + "postProcessHash": "6d85eec6b1fcc69b2d42c2fd1183f7ffa58b962b60e4d4cb4a08e73b456d6fd4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.509Z" + "updatedAt": "2025-12-08T15:00:22.026Z", + "postProcessHash": "a07c97f63b20770cdd43f237148651ea03417b451c43c44250b446c342169cbb" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.509Z" + "updatedAt": "2025-12-08T15:00:22.031Z", + "postProcessHash": "ed995b110a405bc8e2710f2bb5a0daf96fac9fb402531aad4bd17de3e30c2b5d" } } }, "3c10419c1599dbac4204b3ed274e3d2e9d25d6dffa3b3720fba7abcc52a6a66f": { "0557668c55c37cb9b1434cbcfa1c817a2b6b18556a4c63d7a0b2debe4d344d0f": { "zh": { - "updatedAt": "2025-12-01T18:59:35.525Z" + "updatedAt": "2025-12-08T15:00:22.042Z", + "postProcessHash": "32d592bb5080d86e1668889ba33f3193d71a8b048bd981bb500586d7f63aecbb" }, "es": { - "updatedAt": "2025-12-01T18:59:35.526Z" + "updatedAt": "2025-12-08T15:00:22.043Z", + "postProcessHash": "e491ca2ce863501ec62fbf0ec78fd2a564ee1e21d9db8a839389cb87770450f7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.526Z" + "updatedAt": "2025-12-08T15:00:22.044Z", + "postProcessHash": "7f56c8081fe1587ccc2917e89d0e167d9a8a36ca80f5aa4494317e2dfef981f1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.527Z" + "updatedAt": "2025-12-08T15:00:22.048Z", + "postProcessHash": "25e11e4289c2ac400b6a7da2853220aace4c577a77410d4da4275568bd9b5afc" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.538Z" + "updatedAt": "2025-12-08T15:00:22.134Z", + "postProcessHash": "a7c988340dfd1949ad9b724b17e5893db98d951a4fa9b61548dc0bf65ade1ce7" } } }, "8cb0114c2d9c9d4a4c2158987c617e309be9dc80442442a825d520fbcc79ef9b": { "15a2fcdd296ae1022e2a8022986854404cb36941f2bfc917dba2e5a145d98b19": { "fr": { - "updatedAt": "2025-12-01T18:59:35.539Z" + "updatedAt": "2025-12-08T15:00:22.019Z", + "postProcessHash": "10ef0382a9fd680ba31eeeb31887cb8d6244b5a2f35c80f7395be0ab78fca3d7" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.539Z" + "updatedAt": "2025-12-08T15:00:22.045Z", + "postProcessHash": "0b4cb9ed7efe3e2ba7f6321c66f100ff34dffaf5e46ea52a6ad5705d35e4967c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.540Z" + "updatedAt": "2025-12-08T15:00:22.051Z", + "postProcessHash": "e853be329b87f7229dd4ab4f00abd2b1afdef8a4624cdbb0fadda08a98b357a1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.542Z" + "updatedAt": "2025-12-08T15:00:22.053Z", + "postProcessHash": "3d746405595960e25bb2bd67ce8ab1fb2eacbf06059b3c379958325075930b04" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.543Z" + "updatedAt": "2025-12-08T15:00:22.021Z", + "postProcessHash": "53dea0c5217bd48868f6cb832140ffa2b795cc5d6f2539695d90ff4e2a6bc22d" } } }, "9a6238e8523691188be985449b47c1dc046b5f08bc7bc1b0bd6e50399259daaa": { "8fda259d7fbaf1bbdbf55e0bd004d10aae0c8e6b50ed63c995a269aa6990ac59": { "fr": { - "updatedAt": "2025-12-01T18:59:35.539Z" + "updatedAt": "2025-12-08T15:00:22.046Z", + "postProcessHash": "9c51ac1f86f065f72e7887e5f58bdb2ff590c15babc6eaa467b5b50c429776e9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.545Z" + "updatedAt": "2025-12-08T15:00:22.027Z", + "postProcessHash": "f2fdfd8a44141229d0c4562bc8260b42ae86f0b870989fe716e2f4fc21944ca5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.546Z" + "updatedAt": "2025-12-08T15:00:22.020Z", + "postProcessHash": "b6d39e499a080d321f563acaf5e1e271dd482614e87802fa5379bc619fc149b8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.548Z" + "updatedAt": "2025-12-08T15:00:22.064Z", + "postProcessHash": "7adf4635ff0060bc064cfc48c57aa2effa38a4cd73a2a7fa61c9e5f18d9e70e3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.549Z" + "updatedAt": "2025-12-08T15:00:22.030Z", + "postProcessHash": "c64d5f35b1ab65ef1ead99253f53becaebba69ea645e18bb2a1b88b14b7d2ada" } } }, "35937f92a3c360f26ff9c9bf448eb325efb9994c18a26e2179501804e202aa9c": { "4b7a0434dd4fb48782d0b651fdb571b5238e1b5276f25d04111e909a17661827": { "ja": { - "updatedAt": "2025-12-01T18:59:35.526Z" + "updatedAt": "2025-12-08T15:00:22.047Z", + "postProcessHash": "b12c13fffd513ff5c00e60f32abef9802114902e5281198764a4d0bc8e1c391c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.528Z" + "updatedAt": "2025-12-08T15:00:22.054Z", + "postProcessHash": "dcfeb0ffe3d3ee123373f5f70fc0b4b877549356176fe28cc67bbfda3c9e0a73" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.528Z" + "updatedAt": "2025-12-08T15:00:22.061Z", + "postProcessHash": "9d5ab952e5df21f5b782a7a482238adc414cbcbc82f6464b6495c781c61edfa3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.529Z" + "updatedAt": "2025-12-08T15:00:22.062Z", + "postProcessHash": "8b0339d89c9b7d47723846d513e92c8088973b66bbedc26835bb9b4d962774fc" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.529Z" + "updatedAt": "2025-12-08T15:00:22.069Z", + "postProcessHash": "12c9881404daf6a383c0a4ad1c0a92441fef25f4db61dce72574cd9328e1d083" } } }, @@ -17378,418 +17433,528 @@ }, "13cb8eeb1305fcafd4e7b368c27b95dfaa0e3de49a8b6752623a8471a25b8fa0": { "es": { - "updatedAt": "2025-12-01T18:59:35.510Z" + "updatedAt": "2025-12-08T15:00:22.007Z", + "postProcessHash": "f3c8e9f779cfb31839de24ded2bd7acb1de2cf787edc44fe904687efe3846c71" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.518Z" + "updatedAt": "2025-12-08T15:00:22.008Z", + "postProcessHash": "71d2101c4f4281b33b18a0b6f4dc74fd2b51f529f312a211685331438fd683ed" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.518Z" + "updatedAt": "2025-12-08T15:00:22.010Z", + "postProcessHash": "bd7e10842bc6739ef740c086e7c36b79660c2fc6850fc5cc8391d8aaee7ac148" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.519Z" + "updatedAt": "2025-12-08T15:00:22.010Z", + "postProcessHash": "7bc7fe91f46a35f308d56d913e6c4f08576e7a13542fc2dfbe8e85ac684ab012" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.519Z" + "updatedAt": "2025-12-08T15:00:22.012Z", + "postProcessHash": "e8ac08ae27b7593139144f7624cc9128a71772a1528aad5bf28f3fb94cf5c36e" } } }, "d4d02feb18c59697791274f6e30786c457860cc98c9222f8b807186abab52f7b": { "cac95031daf98dd701c31d470ddf75b255bed5a8bd261adb1a0bfbd804b06a30": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.530Z" + "updatedAt": "2025-12-08T15:00:22.070Z", + "postProcessHash": "bf60a977e624271ea57f2be5fb44f77fedffa01d6135d87631f744ff12508768" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.530Z" + "updatedAt": "2025-12-08T15:00:22.033Z", + "postProcessHash": "741f4f0996063cbefe06ad480a3fdeb3a6b6af89c519fb6f21d5a76cdbc77e71" }, "es": { - "updatedAt": "2025-12-01T18:59:35.531Z" + "updatedAt": "2025-12-08T15:00:22.032Z", + "postProcessHash": "f5a4702149bdb75b2a6b90848eefa60654a51bc2d05889a148caedb617678bcf" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.531Z" + "updatedAt": "2025-12-08T15:00:22.071Z", + "postProcessHash": "d1edb4d7f6108713f06c6d31e4eb7eb353fd1acf2847455056ab2ff750dd3a85" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.533Z" + "updatedAt": "2025-12-08T15:00:22.073Z", + "postProcessHash": "cd6a42052c49ef2d0be07d523f05e34981478ed73c5f2ff8132c5cb7968af621" } } }, "44764bb0f47adf52c86f6e300940469f9d1e69258f6d6b5f53c9b402a7cc0647": { "a14301d3416675604d24b6a91eb06982059e3f67874cf939a1ae7608cb84394b": { "ja": { - "updatedAt": "2025-12-01T18:59:35.530Z" + "updatedAt": "2025-12-08T15:00:22.014Z", + "postProcessHash": "525f2b85ce401ef1ade2200c69bb23768101aac4ffca86a549ed71ac991b6730" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.530Z" + "updatedAt": "2025-12-08T15:00:22.124Z", + "postProcessHash": "abfcd22e129bb518631c8a664a95fca82ede5b958ee97ea710369acc6701d1e5" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.531Z" + "updatedAt": "2025-12-08T15:00:22.030Z", + "postProcessHash": "c890925da7d307e68e401216291759b9328523a1d9da6532d34d74ef62726064" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.532Z" + "updatedAt": "2025-12-08T15:00:22.072Z", + "postProcessHash": "e97dc7545e559421fb33877c6169b3bb46d5da91660b2051f01b81f70f1212cf" }, "es": { - "updatedAt": "2025-12-01T18:59:35.532Z" + "updatedAt": "2025-12-08T15:00:22.072Z", + "postProcessHash": "bf11c57d1d18f191064d8542244270d73d1ef16cdc9dbe9c44861e7c1bb036fa" } } }, "bbc61eb9c499aa3bbb48a08a27c0daf9e7f9c80a032b3de565ceaaba12eea558": { "9c1d88cec96b1086b2a439845f48c3b5129ab6c693719bd00b97e8d3921d96fd": { "zh": { - "updatedAt": "2025-12-01T18:59:35.533Z" + "updatedAt": "2025-12-08T15:00:22.074Z", + "postProcessHash": "9a528f1ee5c2736a52c8fc8a00f4770268e46f42d16b55ef3d97da5e383f8971" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.534Z" + "updatedAt": "2025-12-08T15:00:22.074Z", + "postProcessHash": "6b975306c4b8e54e0474245f03b6a9677ebda11e48c330513969822022679b42" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.534Z" + "updatedAt": "2025-12-08T15:00:22.075Z", + "postProcessHash": "17775c12f716ba6a815fa0d92a73b844e4402d3d85226881b4bf25d5b485ceba" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.535Z" + "updatedAt": "2025-12-08T15:00:22.075Z", + "postProcessHash": "ca5cbaae49c48ccc5518dd59bae370f870c018a6084485f5d28a2d3350bc3b57" }, "es": { - "updatedAt": "2025-12-01T18:59:35.536Z" + "updatedAt": "2025-12-08T15:00:22.077Z", + "postProcessHash": "189f6757b5edfdbbf5a8400fa80bbce51580147bf32668050d214a4004135dd1" } } }, "39ff7ed320633a83d1ee309782412c2a39894d5b67c842627cf84d8bff2a3464": { "df59ba6a086515a93472d54c0c1312900f9b5b6f1d9c42335dfe822c8aec9f14": { "zh": { - "updatedAt": "2025-12-01T18:59:35.539Z" + "updatedAt": "2025-12-08T15:00:22.047Z", + "postProcessHash": "6604181b0c0af4f24aca92c61719f818421b394438a3ec511c5a766c8d04ac6b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.547Z" + "updatedAt": "2025-12-08T15:00:22.059Z", + "postProcessHash": "a5816cc2590867ae5591ba8a14b08edd820e1db2f00cf17defdde70884bfb38b" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.547Z" + "updatedAt": "2025-12-08T15:00:22.060Z", + "postProcessHash": "d90410b907b5ef8e3983690e75d37a9fb864c2eed46e8fe55d8ad2e63bfd2b4c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.547Z" + "updatedAt": "2025-12-08T15:00:22.061Z", + "postProcessHash": "283da02dda1abdbb0a93ce0b54912f88dc5af4d70e4d16549a5801ebe4291537" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.547Z" + "updatedAt": "2025-12-08T15:00:22.063Z", + "postProcessHash": "3fcf239fa6ad29a977bb4da0b91271c7f5e58b5ff9857dd9132dfe38f886ca66" } } }, "64dff4466616a81f47d3f914253ba172d15425638e13dad1aab85c07c0e37f66": { "fe5bd5ecc972d70f8450cfc141bac5f553468b35b09c7ea59d1fe0319d04d3af": { "es": { - "updatedAt": "2025-12-01T18:59:35.540Z" + "updatedAt": "2025-12-08T15:00:22.049Z", + "postProcessHash": "33c03a0596c5f8b715009fb80fd3da6f368dc7f0ce744283be2e0ff8f31092c7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.550Z" + "updatedAt": "2025-12-08T15:00:22.104Z", + "postProcessHash": "d495f3ae42a3d07c1654f36e62267ef960615d88c8b61f6a5e8d4070b73ce9e5" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.552Z" + "updatedAt": "2025-12-08T15:00:22.110Z", + "postProcessHash": "850e760884c30713c2a216566357097d398252323a4ddcf478b2cc276f88b1a5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.554Z" + "updatedAt": "2025-12-08T15:00:22.114Z", + "postProcessHash": "e30e2983ceecffdbbc49a8c18eb2f2021a74898d0f613988b961fda33595267a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.555Z" + "updatedAt": "2025-12-08T15:00:22.115Z", + "postProcessHash": "c1acc57febcdb9ae12ac06a745ea1e315a2a11f3c840d0fadc31be16d7da4e9a" } } }, "67fb87dba37067715ce4dca829d396a8a73849f07a1cc006a4ba1fbeb0e91d87": { "bb5ba83a2a1cb2076fd62f9259a376111eb4656576a56abfdc54bd7a0da31ee0": { "fr": { - "updatedAt": "2025-12-01T18:59:35.540Z" + "updatedAt": "2025-12-08T15:00:22.049Z", + "postProcessHash": "37025ac5b3018326715793fd66f6a2e4cca7bc884580e7a714a71f157dd0ec20" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.541Z" + "updatedAt": "2025-12-08T15:00:22.052Z", + "postProcessHash": "a693e3546916bbdb885af0690a934109266f7f44949152ec2fd88fea70b440e1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.541Z" + "updatedAt": "2025-12-08T15:00:22.053Z", + "postProcessHash": "e6d7c9cb992fbdca30d731d525ac0b9c3842eb3ccdba0c6eab225367d35b365f" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.542Z" + "updatedAt": "2025-12-08T15:00:22.054Z", + "postProcessHash": "5806dcad91050041d254c23afdd7d8afc4ef108cacaf30dfb4f8ff802eecd0db" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.557Z" + "updatedAt": "2025-12-08T15:00:22.130Z", + "postProcessHash": "62bd4c84a9757974036348f5373acfeebd9d4cafed4c250ff93ee7481d198b46" } } }, "8979a149e634e36003bf0326c021e780e95c0cb682f5118f4d5d7d312d338d46": { "ded302e6cf7caeaef571fe2e7de08f774a8b5fb2c8bc3a3841ec5dc8a9244cd7": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.566Z" + "updatedAt": "2025-12-08T15:00:22.016Z", + "postProcessHash": "a1c4f22e0dd0c627e156bdda4462345c5b0a23f1c60e70987fdc0fbb6d0bf939" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.567Z" + "updatedAt": "2025-12-08T15:00:22.017Z", + "postProcessHash": "49a6d65da6513ef30e41d34a8019e8ee154eb041560c83fe9f54f57761ea88cf" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.569Z" + "updatedAt": "2025-12-08T15:00:22.107Z", + "postProcessHash": "f40bb82783f3a7716f37b6ca88e3a4215c88f32c92f0e7ff7c321a6c864c895c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.570Z" + "updatedAt": "2025-12-08T15:00:22.013Z", + "postProcessHash": "316e7fea1765ae76b9592a7dda83a116166883eecefdc4425d4c924251dfb7dd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.573Z" + "updatedAt": "2025-12-08T15:00:22.015Z", + "postProcessHash": "d4f52b69dd84408aa11396fd1da6f7e11e22fa0ba480713694029f03335e131b" } } }, "16d5fcbe57a38dfffb6ff960385feb102e6e2c519363d28dc433a54b6b976d37": { "9cc858745c97c91e2af58ea48dc961904c70799dacff507159f8b252b1f7fb97": { "zh": { - "updatedAt": "2025-12-01T18:59:35.567Z" + "updatedAt": "2025-12-08T15:00:22.051Z", + "postProcessHash": "7079f8dc0645ce07959e26912634216f26d8fc097ba038b8cf78b35f24051dbd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.573Z" + "updatedAt": "2025-12-08T15:00:22.117Z", + "postProcessHash": "bfe8c0764d427540963d7162e23c0e418a10935e0d5442dba63bf1fe2ce67ce8" }, "es": { - "updatedAt": "2025-12-01T18:59:35.573Z" + "updatedAt": "2025-12-08T15:00:22.118Z", + "postProcessHash": "3f27a4ccd26eb8c26db3f2e53b285126a6c0442b06927f72e5091045ea0980f6" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.575Z" + "updatedAt": "2025-12-08T15:00:22.119Z", + "postProcessHash": "ed779fd13ffb190b6619f0af33ba4ef76c1dcf516c3c61663b6c1154302de18b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.575Z" + "updatedAt": "2025-12-08T15:00:22.120Z", + "postProcessHash": "adc78d659ac1715867515360e38c7150fb5874ba23216b94ae1713c0bfbb7328" } } }, "0d536a6ebd8a8c05fbdb402ea74defe73e8aed56328603ab4b268912b6a52b04": { "5accedfc33911a3d6ecc54415c04b22e4519c0319e934d8264e58962d509787d": { "fr": { - "updatedAt": "2025-12-01T18:59:35.567Z" + "updatedAt": "2025-12-08T15:00:22.198Z", + "postProcessHash": "608cbbcde9b0158f675920b35f6c18b46e685cac998f2c4724b7a9845728b1ed" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.572Z" + "updatedAt": "2025-12-08T15:00:22.200Z", + "postProcessHash": "5667038896204b4ef6aa19f27d8a5a99131cffda8060fc7758289e4b44913763" }, "es": { - "updatedAt": "2025-12-01T18:59:35.574Z" + "updatedAt": "2025-12-08T15:00:22.201Z", + "postProcessHash": "aa03bafe4c8ea9ceea5ff3daaf94061dd465eae78468773583aa466faf4b74dd" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.574Z" + "updatedAt": "2025-12-08T15:00:22.201Z", + "postProcessHash": "eea1525834604b865e12557cad0e3820672b59eb4606f0528857df650c921220" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.584Z" + "updatedAt": "2025-12-08T15:00:22.247Z", + "postProcessHash": "f3c86095d59fb7a4451d853833f6c4fda35d78fb4d0ab70601d869385084c9d9" } } }, "8f7632dcdb16fb24c76d1e36ea98bc0bb92e2fc03ef0969238f10241cf1f53dd": { "62c9b538dad163ca45d4d1c6ce48a6f9ed33bdac7a6938b92e12d4e878fa0c67": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.543Z" + "updatedAt": "2025-12-08T15:00:22.056Z", + "postProcessHash": "3cde8e9fc507b0e77470e0989b7d98e1f00734b43af8106b3ba490df4afdec38" }, "es": { - "updatedAt": "2025-12-01T18:59:35.544Z" + "updatedAt": "2025-12-08T15:00:22.057Z", + "postProcessHash": "9df3ebaa348c91a30ecf5afd06441ea804271a8bef9b3c958319ef27dd3540c1" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.544Z" + "updatedAt": "2025-12-08T15:00:22.057Z", + "postProcessHash": "6ed5d7033d1b5b194ed392d51f2850da832e95f24e05669aa2b3fc8760807878" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.545Z" + "updatedAt": "2025-12-08T15:00:22.058Z", + "postProcessHash": "92e86efb3b01c8553819bb44219a56c496030c6ab2f4a2b2a49003edcefae0a8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.546Z" + "updatedAt": "2025-12-08T15:00:22.028Z", + "postProcessHash": "fb3562223d28c5d62c64e5b3033c433c971b616769576cf6980a7ab33aa57f9b" } } }, "1c4b6c36f2c5c08f9786e6b47cb417c08896f4388577235a1a4eb3447e00547e": { "80004cf226ca34db6aa0e861416d9ea12e274167353b773d17d0b0f9d323002c": { "ja": { - "updatedAt": "2025-12-01T18:59:35.549Z" + "updatedAt": "2025-12-08T15:00:22.065Z", + "postProcessHash": "a43bfccbd870822b9af21d44d4e4bc98304c36a759c23bb850f71c8f506e6784" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.551Z" + "updatedAt": "2025-12-08T15:00:22.105Z", + "postProcessHash": "a3d89925b8f9be69b041dced1bb0f9fa43eb31f35e8d17d57f5d0ac2940eb199" }, "es": { - "updatedAt": "2025-12-01T18:59:35.551Z" + "updatedAt": "2025-12-08T15:00:22.106Z", + "postProcessHash": "3dc079cdce3166ac90042c56029789db0608727660974951bef13ef2a7fe398b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.551Z" + "updatedAt": "2025-12-08T15:00:22.106Z", + "postProcessHash": "15e5dafe69b8a72060ed9578d57d0571d8bb8476323277c61e85dfa429b798d4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.554Z" + "updatedAt": "2025-12-08T15:00:22.113Z", + "postProcessHash": "28837f1919f3621d96b90e7344e9248c193021e0af17f9a985cfafce47ff1fd4" } } }, "3668137cefe79876b2b67bad177147722d3fe5e41fd0ee2d33f3b2155d231d8e": { "fb71a22a1501b14e24f54ab2bec8ba8b5e4c7c1dbf69e325cfe68e743f1c5089": { "es": { - "updatedAt": "2025-12-01T18:59:35.549Z" + "updatedAt": "2025-12-08T15:00:22.023Z", + "postProcessHash": "3fcbebe7b2f47a312885122babf4f86e711d44c224693f35d44bc03f31558dd1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.550Z" + "updatedAt": "2025-12-08T15:00:22.065Z", + "postProcessHash": "d3bfa72db73a088daab43eaef3b7693198f918400659a5baa7055acd25ccb9f6" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.553Z" + "updatedAt": "2025-12-08T15:00:22.112Z", + "postProcessHash": "21622417689f08e9048b2141ac52443b1479c2cee52000631b800a37335162c0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.554Z" + "updatedAt": "2025-12-08T15:00:22.026Z", + "postProcessHash": "f42a4a17c52827215ec23f4045245fc5f3aaf57a479b3317f038ecaa87abdd1c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.556Z" + "updatedAt": "2025-12-08T15:00:22.116Z", + "postProcessHash": "63b0d0d26018b592416158d5abad3a566d21a8ac4cc3391a6c8b98b41b83e43c" } } }, "e80fab9839b1abba124fc18845668d0b60d60a1e51207298e91b78f5e7df0ab1": { "ccfa5d646fde57b9ff6be1c5670cc867d400900832ceb8ec8290036907eca9c5": { "zh": { - "updatedAt": "2025-12-01T18:59:35.568Z" + "updatedAt": "2025-12-08T15:00:22.068Z", + "postProcessHash": "58aead309c791c13da5572f45db1c85e09444d2175b3c17dccb1044277992776" }, "es": { - "updatedAt": "2025-12-01T18:59:35.568Z" + "updatedAt": "2025-12-08T15:00:22.103Z", + "postProcessHash": "5fedfe83bdd44781bb907d2cf203b6b7610da539e7786b839016cdb7af98dfae" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.568Z" + "updatedAt": "2025-12-08T15:00:22.104Z", + "postProcessHash": "36d4f730ed611fddbfacf9f0392f275fc9db722608d3da83d85fe0fa8528fa55" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.570Z" + "updatedAt": "2025-12-08T15:00:22.109Z", + "postProcessHash": "bcfea5416cc467fb4d85be69819b346eea3052c9be88676dc80f76c70d7af280" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.571Z" + "updatedAt": "2025-12-08T15:00:22.110Z", + "postProcessHash": "7c234ccb1bcb9d9252d1615441ecf4c7ad5442dd3166be9702199419b2d98297" } } }, "a514a9d886363174db31b68fdaf92724222813d11c225da86058a4fa96bd68e4": { "06523c190fd57a3511208a1eccf5629e50f06bf896f877d2e423d441404b2c0c": { "fr": { - "updatedAt": "2025-12-01T18:59:35.552Z" + "updatedAt": "2025-12-08T15:00:22.107Z", + "postProcessHash": "8e8aa1bba2582e132cd3d22a7ad0b3562e3ec81a56d5be022db6307471a95eb7" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.552Z" + "updatedAt": "2025-12-08T15:00:22.111Z", + "postProcessHash": "9e22c39e7cd3f7d8860a614738557cca43a9732ccc914f4e700deadc2dcd4c67" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.553Z" + "updatedAt": "2025-12-08T15:00:22.112Z", + "postProcessHash": "7fcd521fa66d17babd617f591c882687af0dd3b5bca7da94023c07595b44558c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.556Z" + "updatedAt": "2025-12-08T15:00:22.115Z", + "postProcessHash": "1a1bbf42df97f9b93651e0d3f567d70f2846c9a9611f8128acc2619bc1cea59e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.557Z" + "updatedAt": "2025-12-08T15:00:22.128Z", + "postProcessHash": "a5b2ac61dec341d4c2aa6c7993b780c898532616033ce38d8a31e717d7bdf5fd" } } }, "219528ce36087d373df3f612211f8dea1d103601dbcf8e81e98442fda1dcce89": { "a703c1b9dfcd4247a57751cf216eddbc638542dbb714b90dce603716ddf89007": { "fr": { - "updatedAt": "2025-12-01T18:59:35.559Z" + "updatedAt": "2025-12-08T15:00:22.134Z", + "postProcessHash": "76b2b7a3505e3becdc043ab52f43d4a4aec21629fbaf7a5c325d00e6933a675c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.559Z" + "updatedAt": "2025-12-08T15:00:22.135Z", + "postProcessHash": "8706a1edf4e6bef3f4cad4796e14ea399dff5ae29d4043f85c45aa2d822c111e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.561Z" + "updatedAt": "2025-12-08T15:00:22.139Z", + "postProcessHash": "18c47ab461ec7f40253fb71e29d212bea32bab381851928763c45837edb3bbf8" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.585Z" + "updatedAt": "2025-12-08T15:00:22.139Z", + "postProcessHash": "f36030da7ea5c3bcd6834d96b0aa9b6f55dbd7e5d9101098cba767f20a263418" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.586Z" + "updatedAt": "2025-12-08T15:00:22.140Z", + "postProcessHash": "56146f9da195dd57e1d3956beb9f0f410b22ed19d3940f4cd3adef8ab344e850" } } }, "922c0111f5f902d3a6da2b7360a8a30025005a55135b8957b87261fd37440b07": { "57f80c3b026ef2f77addd56bc6a3ce5f046fad1680c198965e361adf0ca1fe0d": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.559Z" + "updatedAt": "2025-12-08T15:00:22.136Z", + "postProcessHash": "3f0af1d7664501a37a1bed0c893273fab5553434a78ab573640e870fed603562" }, "es": { - "updatedAt": "2025-12-01T18:59:35.560Z" + "updatedAt": "2025-12-08T15:00:22.136Z", + "postProcessHash": "a3cfff0a375a7224d8f98b6b5dcdf1df40903b8079605efe0d6e00ab5d278d4e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.560Z" + "updatedAt": "2025-12-08T15:00:22.137Z", + "postProcessHash": "cd9f863db7e8ba44bc95d10da46837cbcb29d0f0afdc3ad155d19d403c87c4cf" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.560Z" + "updatedAt": "2025-12-08T15:00:22.138Z", + "postProcessHash": "6fc13d8d48f65b679bc0df9ade08a67f7cdc4b926f5f7533abaf349c518c1be6" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.561Z" + "updatedAt": "2025-12-08T15:00:22.018Z", + "postProcessHash": "176438abe136266f237be736ed67d4ed78db61c75a4ee896810234d5073ed59d" } } }, "5081b843b6feea397b253414a925783ce16d2781aec2a2a7851c0842df2ed4e2": { "66c0c42a62f1cc7d39733b3896f127c0f598c14c1c9ef37cc65838fcf9fa0ed6": { "fr": { - "updatedAt": "2025-12-01T18:59:35.562Z" + "updatedAt": "2025-12-08T15:00:22.141Z", + "postProcessHash": "c7a1549535b064ac1154f0dd97b5364c27606ca84d869f5de1550e7567122aa7" }, "es": { - "updatedAt": "2025-12-01T18:59:35.562Z" + "updatedAt": "2025-12-08T15:00:22.025Z", + "postProcessHash": "18d4e1b2fd2b714bd0288e2fac8762926b33ef8f6d5bf19b42db60a1b4263501" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.562Z" + "updatedAt": "2025-12-08T15:00:22.142Z", + "postProcessHash": "79545b114c76881a706ed32900a2b6242db3735fd93d76a061b5f4b74bd2e2aa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.562Z" + "updatedAt": "2025-12-08T15:00:22.187Z", + "postProcessHash": "5d736a356deb0a80a58e8b35fd1f7d462cbbe06d328656f09f226604f1dacaaa" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.563Z" + "updatedAt": "2025-12-08T15:00:22.188Z", + "postProcessHash": "edf7a3e6b0288644ddf2fb912e9de0d4bb911322adf74ba62ef98aa203c8f1dc" } } }, "59ac65a8aed153a73f4ca0d93821fd6aba1b2b505354ce3be66905839307fba5": { "70df5d5a926e05033457e3d827b53ed3980834764bc255dd9824e4b179cdb976": { "ja": { - "updatedAt": "2025-12-01T18:59:35.592Z" + "updatedAt": "2025-12-08T15:00:22.087Z", + "postProcessHash": "86ca35e50cfde1367da7e8733ad24225cf02314690e9af05b7d7655a2f08b21b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.595Z" + "updatedAt": "2025-12-08T15:00:22.101Z", + "postProcessHash": "be0cef23e539d69090e9f228a6b92f8550464795eb821a44f35bb7b06a1405dd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.596Z" + "updatedAt": "2025-12-08T15:00:22.095Z", + "postProcessHash": "da828d5b93b6f0466808e9a7638af18030ebf61069f15819c0bdc97f4d5a3324" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.601Z" + "updatedAt": "2025-12-08T15:00:22.088Z", + "postProcessHash": "1cd0e9d891554f9cb1599639cfa8a45492bb46c98a5af385d2cea6797fb63ff1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.604Z" + "updatedAt": "2025-12-08T15:00:22.217Z", + "postProcessHash": "12b4737befe14718dab0828b62cbcadb5e6bc4b664cc16cdbfab0156a9516900" } } }, "5b4063066f697c392b8165fd66551160e811642dfe83046ec972be7d8be36abe": { "3d38d671f420676214d0efc9ffc2e0999b8c56ab8724ade16652c1ddd74e4632": { "es": { - "updatedAt": "2025-12-01T18:59:35.592Z" + "updatedAt": "2025-12-08T15:00:22.197Z", + "postProcessHash": "95a19d97924949a8ddad4a4e8e5f08ed920c71675a3a9efb0613dac786e51c9e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.594Z" + "updatedAt": "2025-12-08T15:00:22.093Z", + "postProcessHash": "94f184a6188928e4089c062031984614e18c46ee66655a63e69dd148b27785e4" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.597Z" + "updatedAt": "2025-12-08T15:00:22.206Z", + "postProcessHash": "4d210c258b66c3ade1d18f635c82b8e0f163ba8c83fa868b3d92d56acba8cd8b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.599Z" + "updatedAt": "2025-12-08T15:00:22.098Z", + "postProcessHash": "e4aa7e403d4263e911e09c8be94c926e74d2b8542d63b77d6e8f3d4d7ad8d545" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.601Z" + "updatedAt": "2025-12-08T15:00:22.099Z", + "postProcessHash": "25497d9a7cbe31f65a2211ea82f33f334a323529e79a1ad4d4e19d259ec5c963" } } }, "1381077efd503fdb9f45e95f463f62cb11ee8f95ee46752c36147db738446944": { "208d2a65d5a6ffdd114abb270ecaa82d49cd9d316494ad58c745abc9ac69d0f3": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.571Z" + "updatedAt": "2025-12-08T15:00:22.199Z", + "postProcessHash": "b920e4071c661af46a59a018cbb93aa990adc764ba08f521062c63005365c27d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.572Z" + "updatedAt": "2025-12-08T15:00:22.195Z", + "postProcessHash": "825d418268a9851d96604fb0e58a3b61a5a0540b02852caf6dbda4c54c546702" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.576Z" + "updatedAt": "2025-12-08T15:00:22.204Z", + "postProcessHash": "e48187bb7f2091e5157ed8a32d82a70f39b1925ca206efd9d220835f83775cc1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.576Z" + "updatedAt": "2025-12-08T15:00:22.204Z", + "postProcessHash": "3696b6bbcc4ceba2e444859049511863b7cfbb1dea4e8e04a562207e3270180d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.576Z" + "updatedAt": "2025-12-08T15:00:22.205Z", + "postProcessHash": "7c4abe58974ea13aff2792d060876f257457bb25a5bfd153d81cc1596fb5a96c" } } }, "7d9c9e40eadc75e00ae6c334baa31320c93e55516f01370c2198afacf8777167": { "acd87823db7fdfa54499c15eba103d0299ba8d2257450d9ebc5a2b51e9760820": { "fr": { - "updatedAt": "2025-12-01T18:59:35.593Z" + "updatedAt": "2025-12-08T15:00:22.200Z", + "postProcessHash": "b1c86e96c2e81837bd0e77a4ee6207539b42c815a02f6faa352166473afa4807" }, "es": { - "updatedAt": "2025-12-01T18:59:35.596Z" + "updatedAt": "2025-12-08T15:00:22.203Z", + "postProcessHash": "632df2ffd9425617848815163041a2bfcaae1f6bae11c2d46e275bb7cc72dfa2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.597Z" + "updatedAt": "2025-12-08T15:00:22.206Z", + "postProcessHash": "24d7d95611867e182a9806a68be74a96f2be1a6ede981697792bedff87fb6332" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.597Z" + "updatedAt": "2025-12-08T15:00:22.207Z", + "postProcessHash": "4df77fde73c98c6deb5e0e8472e405660b572cf6dca13a79dbc6d8149a04e088" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.601Z" + "updatedAt": "2025-12-08T15:00:22.211Z", + "postProcessHash": "ec998354c2995d469cb88aee2a481593f620939d986726ee1194ac7d0913cf0b" } } }, @@ -17813,95 +17978,120 @@ }, "6730914ccb90be680e9ecb1200a7dc1e009244362540aace930d27b1fe6e2365": { "es": { - "updatedAt": "2025-12-01T18:59:35.563Z" + "updatedAt": "2025-12-08T15:00:22.079Z", + "postProcessHash": "1dce3eed3dee431078d3da6224e63dd1c725cc5aca26f2c3e6bb4ac6ff250935" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.564Z" + "updatedAt": "2025-12-08T15:00:22.080Z", + "postProcessHash": "c2909145f0a9a2f4a6acb86a7db883d7ccdc5f956f6fb7ca6ed268aefa9e06d3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.564Z" + "updatedAt": "2025-12-08T15:00:22.080Z", + "postProcessHash": "ea812f3db4ab3e6528bb7363a39871a1622d7adc8e8fb9acd8b40ed09955ab8c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.565Z" + "updatedAt": "2025-12-08T15:00:22.081Z", + "postProcessHash": "e0c44410dc710e37ba0ffb2b99cf218ce70a6f08f3109716b7f704140fcfcc58" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.565Z" + "updatedAt": "2025-12-08T15:00:22.082Z", + "postProcessHash": "552654af12db0668b54fa776aced24ac5283a9448e7b7875907ed62d482d9bde" } } }, "40f479a0a7fd8f0ca63373ec9554fbb1cb7bace17eca14bfdf9a98d92e4c89d2": { "79cbc2223c1433028017c946b1c2cc324dbf97f8c91f8605b1426b2b1f9b1315": { "es": { - "updatedAt": "2025-12-01T18:59:35.593Z" + "updatedAt": "2025-12-08T15:00:22.202Z", + "postProcessHash": "a427e34631a6cfe5b44274a01a2643b9826f8c9ca99cae1819af3f257a0525f9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.593Z" + "updatedAt": "2025-12-08T15:00:22.203Z", + "postProcessHash": "36432c1c8cb2da18bdb3960f58f06a920816d8637f8680a42a2972573e083d3e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.594Z" + "updatedAt": "2025-12-08T15:00:22.096Z", + "postProcessHash": "fca18e753fdc99651db220ac3ab87f5880170187c454d3f253bea317bde9b8a1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.598Z" + "updatedAt": "2025-12-08T15:00:22.207Z", + "postProcessHash": "c83b0a482b59d0d3b445f738d2692839cd6546820bb69f389cb474e9dd65a43c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.607Z" + "updatedAt": "2025-12-08T15:00:22.086Z", + "postProcessHash": "3c01a18af95581b135c6e9924eeb3254ad3b8434f4c6a39b7e2501279d5f79e1" } } }, "1023df753732f509ff13e0a1690c09823f23fa113f4eab51cabb0aed48cce5a4": { "141aaf8ada09e7eff2d13fd6210548c8d1f868279e33574f1ccd229fd38aaa39": { "es": { - "updatedAt": "2025-12-01T18:59:35.577Z" + "updatedAt": "2025-12-08T15:00:22.120Z", + "postProcessHash": "8c9568f03571a62f2003ea0f8d558eeeea6aa212c30555048b82ec616de4ace9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.577Z" + "updatedAt": "2025-12-08T15:00:22.121Z", + "postProcessHash": "2df89631003d0fe3cdcb2f885660fc77400b919e4994961326acd9ab5da09d9e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.577Z" + "updatedAt": "2025-12-08T15:00:22.122Z", + "postProcessHash": "55dd2041bbdeaef2497f65a0e52773e935da10151c4225faa234729b9075ca7a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.583Z" + "updatedAt": "2025-12-08T15:00:22.131Z", + "postProcessHash": "a7cedb86267326c173fb5f3211112716b637a61220e583090e62d2c3d297a511" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.584Z" + "updatedAt": "2025-12-08T15:00:22.133Z", + "postProcessHash": "661b1b783bcdb04540c9df8d3d685de640a5faff4e93965af65373265eb794c2" } } }, "0138a38c91e983d7e974831a48dae24dafbd54e3440a6c156482a82854c10521": { "c3674b169ec4fd67eed4db12a6babb8965d86b1a7dc2a350844243d878bd3546": { "zh": { - "updatedAt": "2025-12-01T18:59:35.578Z" + "updatedAt": "2025-12-08T15:00:22.122Z", + "postProcessHash": "d83a53ccda4360a4c3ff2f3cd15c5aa2b79cc7f8c25dad3730763170259feb36" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.578Z" + "updatedAt": "2025-12-08T15:00:22.123Z", + "postProcessHash": "931f0b4eb259beb487f578ec4ed76ce0807099ebd3be90db86d6e4a8e50fbf9b" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.579Z" + "updatedAt": "2025-12-08T15:00:22.123Z", + "postProcessHash": "5d21ecec6dc183288c55a1187cb68baf7aadd77ce930cf9b1fc90c795be819f6" }, "es": { - "updatedAt": "2025-12-01T18:59:35.579Z" + "updatedAt": "2025-12-08T15:00:22.124Z", + "postProcessHash": "6fdd2e800bb745cb85c499e425649dbb5cd4dc32a21c1f95a9fdc02ef58dd16f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.582Z" + "updatedAt": "2025-12-08T15:00:22.129Z", + "postProcessHash": "d332a6c3b6c9b4e4a604636c12285ec3e28b6f26a0d809b280e47ce7b55045d9" } } }, "acf8cc5f6aee9bdff6a0154f18acefd494708d2545da3cadd6d5f6b5508baa36": { "1e53b9f2ffdb01442e10e7675a214d877257c723ba97210e4e02816e365915f7": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.579Z" + "updatedAt": "2025-12-08T15:00:22.125Z", + "postProcessHash": "65ad6722c016f49f2f1c8b333b3f5587b1b574e6f226d8c1cfddc0ed10e1169f" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.580Z" + "updatedAt": "2025-12-08T15:00:22.126Z", + "postProcessHash": "baaa39f7b702ac200ed80a5210c0da880cae6ebd8e85e3422dd91683e92bc231" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.580Z" + "updatedAt": "2025-12-08T15:00:22.126Z", + "postProcessHash": "9699011111feb88bb609601b767c52560c2b968cd582785d281ad95da96636f4" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.580Z" + "updatedAt": "2025-12-08T15:00:22.127Z", + "postProcessHash": "cd9b89da613f0d0e11c98955264cd1ea3bfb2af7c99b2de2af32129f228fbe34" }, "es": { - "updatedAt": "2025-12-01T18:59:35.581Z" + "updatedAt": "2025-12-08T15:00:22.127Z", + "postProcessHash": "e77268010bf21cc505f11c5507966d5239254e7f06d5502a2542c860be668e43" } } }, @@ -17925,1311 +18115,1656 @@ }, "c9f2c86acea4f2ff5842635a685237953041b0a1fe933caeca6f15924eee8936": { "es": { - "updatedAt": "2025-12-01T18:59:35.566Z" + "updatedAt": "2025-12-08T15:00:22.082Z", + "postProcessHash": "3717d3d0a3fdc73469619a87749c33a2437c9afc40b84f75ac334ab70c02289d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.590Z" + "updatedAt": "2025-12-08T15:00:22.083Z", + "postProcessHash": "058f0c7bed750dccf715194f0043dda969c5b1fce8ab4a1b8e6e1a2d531cb5ec" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.591Z" + "updatedAt": "2025-12-08T15:00:22.084Z", + "postProcessHash": "c14abb59db073cb569698b720ce78056b464add64f886effb707205166ae6634" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.591Z" + "updatedAt": "2025-12-08T15:00:22.084Z", + "postProcessHash": "f308c1fb377bf291c91fa44757dbf99f4e3144aa5e490ddbaa6f5fe68da05693" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.566Z" + "updatedAt": "2025-12-08T15:00:22.085Z", + "postProcessHash": "e4e946d2ad3257692ed94699a89baaf0ded2fafeb8dd1facb40c05f9bcdb3936" } } }, "e72094b2212a6960403c3fc123e88f7da56aacc33ef76502a4ab2198b2d81a7a": { "60bd9859576b59cd10d6405924ed14f9c4a461554f54ee90f535f40f65498b6b": { "zh": { - "updatedAt": "2025-12-01T18:59:35.582Z" + "updatedAt": "2025-12-08T15:00:22.245Z", + "postProcessHash": "c2652b031630aead4d41312f70bc7a5b73e213a78c9204b148927f8dc37f9fea" }, "es": { - "updatedAt": "2025-12-01T18:59:35.582Z" + "updatedAt": "2025-12-08T15:00:22.130Z", + "postProcessHash": "dfb79c523a0d7a29f7dc52f5fcc5f305645836d208656cf96b3108299324b576" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.583Z" + "updatedAt": "2025-12-08T15:00:22.246Z", + "postProcessHash": "94dc6949a58788965dd6d37949821b0fdc2662a425410fbcf53ff6b2255490d8" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.584Z" + "updatedAt": "2025-12-08T15:00:22.132Z", + "postProcessHash": "ed1352a9ee1f8f3c7d00308b91f8f6b5bd93c427e84b499f47502e1588c2f3d3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.585Z" + "updatedAt": "2025-12-08T15:00:22.247Z", + "postProcessHash": "684053976e0ec812909418f73cfa12ca97bc26aee9db2aa0b9f1eec5b755c3d2" } } }, "8237eca89a3667b62801881596de8cd97c882f43ef87fb222399e12fe109fa03": { "2f7cd9d51f6b829ddaabf6c8c16066653fefc82e26a1af297b266b8ed12e3f20": { "fr": { - "updatedAt": "2025-12-01T18:59:35.586Z" + "updatedAt": "2025-12-08T15:00:22.249Z", + "postProcessHash": "62e2bb9d4d3a711d5d016234c848e7ffb24f9c7259f6dee04a5225152b1e0c32" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.587Z" + "updatedAt": "2025-12-08T15:00:22.249Z", + "postProcessHash": "7143752e1ed25b07af1dc828e5cbdda94b8745e2e0257b9f4a21285d96455d26" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.587Z" + "updatedAt": "2025-12-08T15:00:22.195Z", + "postProcessHash": "2506eb0b4478968a5c8027db2a2e05003266a07f5202c2992c9b805caa7d74f9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.588Z" + "updatedAt": "2025-12-08T15:00:22.250Z", + "postProcessHash": "f6a3c98d527c5a0abf7e68bdb26315177a660d243ebc02ede6c44c99dc7942e0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.588Z" + "updatedAt": "2025-12-08T15:00:22.102Z", + "postProcessHash": "aae307e0583c4211c483c9ef6339f5cfa83f28a024de3a351d98985a0ea43c29" } } }, "a53db4177bde0e5f91d19e21414ee0bda23d763845af9e96e6a1c1d04b5309c9": { "9621411a1cea36c592cd7752040a2eb596fd95fc7cfe993e527ec3afe7e9c5ab": { "ja": { - "updatedAt": "2025-12-01T18:59:35.588Z" + "updatedAt": "2025-12-08T15:00:22.141Z", + "postProcessHash": "7507e49746e1468370751235b75e3628cb3ce86f323c9cebfa687fca568ad582" }, "es": { - "updatedAt": "2025-12-01T18:59:35.589Z" + "updatedAt": "2025-12-08T15:00:22.186Z", + "postProcessHash": "168c7de141fe44c542f426982af2546ae5466891100964f99fe6757502303f35" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.589Z" + "updatedAt": "2025-12-08T15:00:22.188Z", + "postProcessHash": "982c36ba49f09fb6a69bc5bb8f70157bc976c026930bab4c51da3a2c0697e7ac" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.590Z" + "updatedAt": "2025-12-08T15:00:22.189Z", + "postProcessHash": "09841612caab5611685af8ce081fad7bc1dafb3397f200ecb351b856805ff435" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.590Z" + "updatedAt": "2025-12-08T15:00:22.190Z", + "postProcessHash": "ddee55b5abd611fa7977b7a1f4a7af8d534517b808e354155f3cc8f56971afdc" } } }, "44a5095d281e079c0ff3511835e2b9b099cc914a4dff5dd22f34b9d7f569984f": { "022d006894e93dd891ecc6a9be49672e095d79790373c7404ec05f73bf8fbdfa": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.613Z" + "updatedAt": "2025-12-08T15:00:22.196Z", + "postProcessHash": "0bf1cb7005bcf4b14435786524618b3d0d97205638d16f17c5b5a70546d29d44" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.618Z" + "updatedAt": "2025-12-08T15:00:22.229Z", + "postProcessHash": "f35fd36db5fe7899df26a1e9690386566d329341ab5e11eb410a55fadebe037a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.618Z" + "updatedAt": "2025-12-08T15:00:22.230Z", + "postProcessHash": "1e5b9ab6fcd228fddfab013f80ba5d97034bd1474dc66ff877bbc31b5b009382" }, "es": { - "updatedAt": "2025-12-01T18:59:35.632Z" + "updatedAt": "2025-12-08T15:00:22.351Z", + "postProcessHash": "5b4ee29b09592abe70b0c40c18089b85f9bbfeb82bd61e37921e326192a9e8f5" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.634Z" + "updatedAt": "2025-12-08T15:00:22.367Z", + "postProcessHash": "22736e68d08ec5759ddf929ab51afc62813b0fd5690e2458a29ac913a57084f1" } } }, "707152e1b14447b0dfc3bfa89fefc734ec338164a0c647d9295bd2f2494b40dd": { "249d7e391b086c1aabd551ee11d1b43627a135a928fb5fb32121fa5e1ac89aca": { "es": { - "updatedAt": "2025-12-01T18:59:35.613Z" + "updatedAt": "2025-12-08T15:00:22.197Z", + "postProcessHash": "3d7fd74c798b872b0f84e68e1a3d8563a8ddeb1856ec932e6de876c8c7df08e1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.621Z" + "updatedAt": "2025-12-08T15:00:22.236Z", + "postProcessHash": "f13932f9bc3417abc86b558735200ddca95cc7e4c19ee28d9f87c79fc6307051" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.626Z" + "updatedAt": "2025-12-08T15:00:22.309Z", + "postProcessHash": "4d01291ee77940e3244b3148178cbdfe551bab9817839db4e14109d51fbc82f3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.627Z" + "updatedAt": "2025-12-08T15:00:22.311Z", + "postProcessHash": "10824b9d297ca457f30db11553811fce002958e9389d39acbff84b210624de57" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.634Z" + "updatedAt": "2025-12-08T15:00:22.368Z", + "postProcessHash": "d5926a5e8f77793e521b51cbbd89dfb70bf61b5e23377f7fe59ece3f4931d191" } } }, "5fd98bd11a476eab9009db4d38c61e7cbc646d79725e0bf5cad6a7495ea389b2": { "9919332fa79fe8693cab53800139253db12966fc9cd71cd8c77cd8dffc149ef6": { "fr": { - "updatedAt": "2025-12-01T18:59:35.595Z" + "updatedAt": "2025-12-08T15:00:22.099Z", + "postProcessHash": "cf4ad4b1a247673f1177a906412f620bfeae5041e649a3ba75713aa31be6a54a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.596Z" + "updatedAt": "2025-12-08T15:00:22.101Z", + "postProcessHash": "e5dea7b9c171c71b52b4ece16e10df7f8a1e5ff76d22c6d669301d0aa2310d6a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.596Z" + "updatedAt": "2025-12-08T15:00:22.092Z", + "postProcessHash": "e4ec735f29890c0eb040f12b213338771796a55410a56c318e9ca628ea40b4db" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.602Z" + "updatedAt": "2025-12-08T15:00:22.096Z", + "postProcessHash": "9adfac90284b9cd28bb023eb192b9fa44498b2cbf0a1f850800f4c94beff7389" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.604Z" + "updatedAt": "2025-12-08T15:00:22.217Z", + "postProcessHash": "86d06f30c954aa661826544d1296ab9a2d0e242498a6706342e298de95418a70" } } }, "e7ff5c5b302138e4dfa77d363e22b08bfed434904a9672786a76c74e430face5": { "cc648b15ae8db18b7be26577ec401775a207bc1aa075f18b438c6dc3781a18ac": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.597Z" + "updatedAt": "2025-12-08T15:00:22.094Z", + "postProcessHash": "7c344013196ef9da464a382243cb4a0401e03319a041a365f50fa7ec3fc36717" }, "es": { - "updatedAt": "2025-12-01T18:59:35.598Z" + "updatedAt": "2025-12-08T15:00:22.097Z", + "postProcessHash": "7e1565d32d90fe64ca16f05043aa3197d753097e45a1ecea7d89947ff7e6f3ee" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.598Z" + "updatedAt": "2025-12-08T15:00:22.208Z", + "postProcessHash": "3a4918d04354df980b72e3da71d0d745198e592c6a925b9718cbc8128d14f82a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.598Z" + "updatedAt": "2025-12-08T15:00:22.094Z", + "postProcessHash": "58231cf0ad305ca8737c56a0c57afe30e4a80c71a8a61cacfbcd9789bceeef4a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.599Z" + "updatedAt": "2025-12-08T15:00:22.208Z", + "postProcessHash": "118cd4cdfbc90fa35c1f11faeb0b103f23a16a19e57877aa96c3881d977d01b9" } } }, "77c3dad182131fdcd58b9516cb02111c68c07d10d8de008c00fb650d69039792": { "effaa4a8130ce10a846b71edd69f9ce5ff2493f2d597dd9e498ee84444f53757": { "fr": { - "updatedAt": "2025-12-01T18:59:35.600Z" + "updatedAt": "2025-12-08T15:00:22.209Z", + "postProcessHash": "22cad3f3f9b68dab87831ffeab6967e2ccbf33cf9b19590afef33ecc86d275d1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.606Z" + "updatedAt": "2025-12-08T15:00:22.224Z", + "postProcessHash": "10afe44950e69d6fca9583e76aba3aa0d4e190c26e85226f503d3e71b5210514" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.607Z" + "updatedAt": "2025-12-08T15:00:22.225Z", + "postProcessHash": "15c5dcf774acf97d6bd2d1b08f09bc44bb821cbe6cc7a8d07e61b81c4d18ab2f" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.608Z" + "updatedAt": "2025-12-08T15:00:22.233Z", + "postProcessHash": "07ddb33c499e7c7ccb07e65511c1560e336ec284519ba16ff627c20e444e12b4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.612Z" + "updatedAt": "2025-12-08T15:00:22.248Z", + "postProcessHash": "96fc4c9ccadd00f4a2ded368cdb06b3dd16e1cb37f410ed6099b8e55d8e68c66" } } }, "23029af301508636d8229fbff9109f712eefd90b0cd78002ab432819632c5a08": { "c60e87665a84d0a3c8dd459fdd5c2adf38b553bec8f3d7f57ee3028f4eb08378": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.600Z" + "updatedAt": "2025-12-08T15:00:22.209Z", + "postProcessHash": "0c3c325666eddec38d3905b368a625d06d9a983636c297ebaee8253249e0d22b" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.601Z" + "updatedAt": "2025-12-08T15:00:22.211Z", + "postProcessHash": "ca11ff85e51b71e03cbe8cb0d4dde1787a452f5d114a67567ca096ebde2010bf" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.605Z" + "updatedAt": "2025-12-08T15:00:22.219Z", + "postProcessHash": "6855ec369b4315a43636508f2a89d306cafbeb96a54bb085abd665a7ed0b9c8c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.606Z" + "updatedAt": "2025-12-08T15:00:22.223Z", + "postProcessHash": "6e0f0e619b6cb9cf5e11871e0d5b32dbbb93cec636d9e8deff7627fdc41e86f1" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.611Z" + "updatedAt": "2025-12-08T15:00:22.246Z", + "postProcessHash": "c6adca3d974c34a54120eec19decde9918430b095e223353bd1b46a46fa2431b" } } }, "ce6b03eab27c8ff9e6069b365bacea4ad7464d93b9e3484e67a60e61e407456e": { "b5f3b1fe7784edf1f04b9f9a7368438d45955c90f1cb164864596024089e2f61": { "fr": { - "updatedAt": "2025-12-01T18:59:35.600Z" + "updatedAt": "2025-12-08T15:00:22.210Z", + "postProcessHash": "b442e0dd1cbbd4f006e359199690e03f37d4e9298136df2fa289e0d468ee47c6" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.608Z" + "updatedAt": "2025-12-08T15:00:22.232Z", + "postProcessHash": "c251bf7c8b6a9e8305f36cf5edd7b7bc39b384b9b5fee130dc46db517a1d9ffe" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.608Z" + "updatedAt": "2025-12-08T15:00:22.232Z", + "postProcessHash": "54e0bb15c55498b871f709351770be76cb64dbed0f531cfe6bea4e9cd836e55b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.611Z" + "updatedAt": "2025-12-08T15:00:22.352Z", + "postProcessHash": "e8ec170b3a8e62b9a5ca252761957e478f1607d7e0e6367391c6142acb4d7468" }, "es": { - "updatedAt": "2025-12-01T18:59:35.612Z" + "updatedAt": "2025-12-08T15:00:22.353Z", + "postProcessHash": "4d871a149db820da0dd2ee08f56c3a50251888e9e35228ca885cfe887e98558c" } } }, "f0101822175f1060122905fae616913957796e89f7b5f33e92d98e563866c3a1": { "0a5a7267baf9ef942006f9371ec80b3392b30f3518672cf38d55e582fc463e47": { "zh": { - "updatedAt": "2025-12-01T18:59:35.602Z" + "updatedAt": "2025-12-08T15:00:22.089Z", + "postProcessHash": "e2c49f5bc49d50e93fb4971ccf56829d61f0ca41819b03ae4f0952c5672871b0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.602Z" + "updatedAt": "2025-12-08T15:00:22.212Z", + "postProcessHash": "fbeda0bbe39a2cdf59b438de708c280c967f4ee12d5ac9000d64c21af78c3f42" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.603Z" + "updatedAt": "2025-12-08T15:00:22.089Z", + "postProcessHash": "6e0ff19f0fc012b91106e300263e1b7a62868ccd61f45a45d39d61addc2c1e5b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.605Z" + "updatedAt": "2025-12-08T15:00:22.218Z", + "postProcessHash": "d2de17129c80b9e050f7950d5598bfbb07fda90c606c009c622073cbd9d6f16c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.607Z" + "updatedAt": "2025-12-08T15:00:22.100Z", + "postProcessHash": "e08e9d5532512bdc1d97e15a1e7ed63aac957ad147e47c8a7b9155daa97cccdc" } } }, "54a0dc794cea8f4ea3f8953d00bd05f08a08d84c309deb79f3237dfd93dab15f": { "ff3b380c91b8a7d4f6384ea37ba696f8dd4105cbb077e05b935923ae0710a5f3": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.613Z" + "updatedAt": "2025-12-08T15:00:22.213Z", + "postProcessHash": "747ecf749bb43ebbc32d417100ef89e236ae334ef1e30058a57d1e3b50822feb" }, "es": { - "updatedAt": "2025-12-01T18:59:35.609Z" + "updatedAt": "2025-12-08T15:00:22.233Z", + "postProcessHash": "131cb6a38fdf7a57fb80f6ffe23f39d775f94c62ee73636961c0e6cdf03e4e12" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.615Z" + "updatedAt": "2025-12-08T15:00:22.220Z", + "postProcessHash": "f3010dc087fd8cf3e62acc826c13344ca88cdd4ffdaa99fd33e014e1549ef3fd" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.629Z" + "updatedAt": "2025-12-08T15:00:22.316Z", + "postProcessHash": "40c82cffa14abe11da906a366f18f0ab779eaa1e1eaa75cc8ab9b3e0ae1e0c2c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.635Z" + "updatedAt": "2025-12-08T15:00:22.370Z", + "postProcessHash": "2981691521a8ab16ff7d690fb008d22d517f45489b07e04677ce4a494e7f9b21" } } }, "34c5898079d39e0e13012f12b9a91b2d2d737fb5201180369d4b3f48c09ded77": { "10a829b96a488546129cdfdc8810a3c5737a4e732c55c956c8a560b9aaca27f4": { "ja": { - "updatedAt": "2025-12-01T18:59:35.603Z" + "updatedAt": "2025-12-08T15:00:22.214Z", + "postProcessHash": "aa8de7f4d4d78890b2e54a004b7bdc0129474ecd8961bca2646db2a272ebe0b9" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.603Z" + "updatedAt": "2025-12-08T15:00:22.214Z", + "postProcessHash": "8688c3d2ff833932f8311e01dcf04416c3349792aed306e0956dcd7e3c89c315" }, "es": { - "updatedAt": "2025-12-01T18:59:35.609Z" + "updatedAt": "2025-12-08T15:00:22.241Z", + "postProcessHash": "1f6eb02adcf362e837050f389ee45f756cd966bd37d27c4c3992f5d75d630deb" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.610Z" + "updatedAt": "2025-12-08T15:00:22.242Z", + "postProcessHash": "7591c510af1e22ab4f838e4b47bebcd75b524c190319050b044109f933049d21" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.610Z" + "updatedAt": "2025-12-08T15:00:22.245Z", + "postProcessHash": "3a15d44ad6b04b3de51bcc5a9d090d392eb81d0eee0592094a0b0d310fa85251" } } }, "f52b1e5a63eb71df3e89c17eda94e09c67fa5a8b285815ad51d93e0dce669d44": { "ae13b0f991fa1f25612521827c720b3988d416ba285e20ecec0ee8ac49f4bf3a": { "zh": { - "updatedAt": "2025-12-01T18:59:35.604Z" + "updatedAt": "2025-12-08T15:00:22.215Z", + "postProcessHash": "e3260e0237c754da30fab3f0a1fbc378d1eb387eac60785c80354e635a1ef87a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.604Z" + "updatedAt": "2025-12-08T15:00:22.215Z", + "postProcessHash": "e1d870f63b02cebfe0e9bec7533ca95d297e76d9c80da2e2539b5aae310be8c4" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.605Z" + "updatedAt": "2025-12-08T15:00:22.219Z", + "postProcessHash": "9c0e562274022c8683fc397fa4bd45ffef72dd33b3e169783f3e9b8a94dc7c05" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.606Z" + "updatedAt": "2025-12-08T15:00:22.220Z", + "postProcessHash": "9936510448beffedba7f30dabd5f2e9857a2cf3d8f9347d406a717497a8a955a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.606Z" + "updatedAt": "2025-12-08T15:00:22.222Z", + "postProcessHash": "f648bd4e7b6a03060879d36c79466237957172a8bcb80fbc1edd234340f90055" } } }, "a910e5cb01fab75458fec1b09154bacc4bda2f689192acfc3b724c686a2d2ccc": { "be5e56f9d69e18ecb7f543c760c6ed69958b974b2b4c1bf8d724668d6174c152": { "zh": { - "updatedAt": "2025-12-01T18:59:35.614Z" + "updatedAt": "2025-12-08T15:00:22.216Z", + "postProcessHash": "432382f77a7d57740df4a0d135d0a8da34911352c6e2d26ef58bfb9ebdf456b4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.616Z" + "updatedAt": "2025-12-08T15:00:22.222Z", + "postProcessHash": "ee4b240b05f8cd5dd4a0b182b69c25785141f5bd6a4905baa7c44046663e9934" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.621Z" + "updatedAt": "2025-12-08T15:00:22.235Z", + "postProcessHash": "0009b1e5cb3c0b0781af7b067a768100efb161ad3ecc7876d172d30ce981305d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.622Z" + "updatedAt": "2025-12-08T15:00:22.237Z", + "postProcessHash": "6d71ecc66ae714be5ee6d5c1f912200e5ee5f257ccddd2d5ec57034bde09fd8b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.635Z" + "updatedAt": "2025-12-08T15:00:22.371Z", + "postProcessHash": "c66800fb7e03a1625ad1e69724490379e7cebd7203a00232ef9c1c371936f37e" } } }, "11d57a46cc6c0cceeafcda0e7dc8daa0ecb389614d1bef4b2c984ca0f55b7f71": { "ca6b2a735a42b74a1b8835fff45a1b1efd9ed5449d2d5d1cdaf8cf6bdc4ca2bd": { "ja": { - "updatedAt": "2025-12-01T18:59:35.614Z" + "updatedAt": "2025-12-08T15:00:22.218Z", + "postProcessHash": "1f5d3b856190e1642b4165bdff7d0614c5d9097584bf3363c23680b46fd71b65" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.615Z" + "updatedAt": "2025-12-08T15:00:22.221Z", + "postProcessHash": "44ae80a5fa6b0b59cd729c4a117985a2b681a902d9c7f6d7270cf02ee3e4c13b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.616Z" + "updatedAt": "2025-12-08T15:00:22.223Z", + "postProcessHash": "d9d9c501df36da2ef3b2388b19d674e2ae6ce3460cd1b53ee02b2b38105fea74" }, "es": { - "updatedAt": "2025-12-01T18:59:35.620Z" + "updatedAt": "2025-12-08T15:00:22.235Z", + "postProcessHash": "dc007d87a841528d947a435c1ea4ca9bf74d077e9b008814800f62ef59224b6e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.623Z" + "updatedAt": "2025-12-08T15:00:22.239Z", + "postProcessHash": "0fb1647090f5ff272e0b4f5f9b99131042c7bf197c70774bb98e3cafcb96ba9d" } } }, "832eb41b884c30db8c1ad53e9bfc4f367f862fa727635ce6d1bb6edfd1057ac1": { "700969ed760101fd64d10b26e3cefcaa0947cbaeb1a43d10736a5418c276744f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.635Z" + "updatedAt": "2025-12-08T15:00:22.194Z", + "postProcessHash": "b65767c138238ffb2c41ce0cc92d6ab4dada363301f4a2dec935eccab4763642" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.637Z" + "updatedAt": "2025-12-08T15:00:22.192Z", + "postProcessHash": "017578f3856033bf73936b85d024dbd20a141edabbe0aeea33123057ec145a22" }, "es": { - "updatedAt": "2025-12-01T18:59:35.647Z" + "updatedAt": "2025-12-08T15:00:22.191Z", + "postProcessHash": "54c33e8ae6d9a65e259c89d395eba88ca607f9cf83502649da7ae2da12a83c6f" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.647Z" + "updatedAt": "2025-12-08T15:00:22.190Z", + "postProcessHash": "91c1c2d5d7f0e3a9291d20e443a8b9c8a39124f15f4fc7ad8710b2e70380570a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.648Z" + "updatedAt": "2025-12-08T15:00:22.260Z", + "postProcessHash": "cac7e45d75dcd25ffc1b4b1a010abeb6a5bf97d34ffa16b0bb2b506a10a09160" } } }, "f95d216f7ca4b3d58ca4c696351851f701bedd35617d1f040758e9eab47a6643": { "71e593465652152ff4a6e9327a868cbca2c6623e4064032b32213adfb907964f": { "es": { - "updatedAt": "2025-12-01T18:59:35.635Z" + "updatedAt": "2025-12-08T15:00:22.198Z", + "postProcessHash": "eb6a81a72675325b7d27d4ec6df10a4535b76c64c887d6eea145eb9ca4675365" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.644Z" + "updatedAt": "2025-12-08T15:00:22.328Z", + "postProcessHash": "3173fe4120f99ff8d3235adb09683a8d3d532dd50f220e50906b9ba36d20745b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.645Z" + "updatedAt": "2025-12-08T15:00:22.331Z", + "postProcessHash": "958a402b5a2ecfe6a6f86060e20a7576af79eac349cf5a8ab4ca04ef240f1d16" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.649Z" + "updatedAt": "2025-12-08T15:00:22.337Z", + "postProcessHash": "03529ca88bf4e1d949aa8af9c30de4fa727f9a36d7985a7b1b4bd970acbb48b6" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.650Z" + "updatedAt": "2025-12-08T15:00:22.346Z", + "postProcessHash": "60a0a52be29bd33c92ba15afb9251b7c7144f836d86d854df71c3d60b85fe55b" } } }, "fab9aab6475278945bb7fab130f4038a6f7983caebb35a634f708fbb4530ac8e": { "e44d91421930592dfc031a68fa577758e4418670b0558d65fccdb2d77e4d42bb": { "es": { - "updatedAt": "2025-12-01T18:59:35.636Z" + "updatedAt": "2025-12-08T15:00:22.301Z", + "postProcessHash": "dd71710f4f4e4abbc883f199d8600884b56e725f9c9f6a0bf2c7b3fa99ab4a95" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.638Z" + "updatedAt": "2025-12-08T15:00:22.305Z", + "postProcessHash": "59779607c4dccf0cecfdc9c3ad722e63cc69d655f45977147ddf64b1987ff22c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.653Z" + "updatedAt": "2025-12-08T15:00:22.379Z", + "postProcessHash": "2577af62ddf2e27e7c6ea0079fd7feb57771bb136db6dff31dc2353e84f1f0db" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.653Z" + "updatedAt": "2025-12-08T15:00:22.380Z", + "postProcessHash": "6eb481e0c064d75fe6ac2b4bc853612a8fd6b9a27896ed02f8f9b5a0684c0821" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.664Z" + "updatedAt": "2025-12-08T15:00:22.386Z", + "postProcessHash": "04c5e8ca84a4d88be118a2c6e0df14c216078e811c165fd1e2feaa53e94a7339" } } }, "9dc9a67ef2514aef41a1f26aed9efa61a081996aa027f36c3743c7c57189f87b": { "684284124d53176a12b1bdc0a0ed0d99f4dbff2a2c730cf95be39f13139ee1d6": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.636Z" + "updatedAt": "2025-12-08T15:00:22.225Z", + "postProcessHash": "8b7f3dfe51c1e6da629229a9189670087e533a5d87c26e6a396c94a5d8c99b81" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.642Z" + "updatedAt": "2025-12-08T15:00:22.193Z", + "postProcessHash": "8fd5e3e06afbcf729249f34bb18bdb37b890b1f35b66f929c3403280f494c31a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.646Z" + "updatedAt": "2025-12-08T15:00:22.333Z", + "postProcessHash": "66ed384f93eb635856ad0369ba46aaab458bbdd8b6c06ff322f3bb9687516140" }, "es": { - "updatedAt": "2025-12-01T18:59:35.646Z" + "updatedAt": "2025-12-08T15:00:22.334Z", + "postProcessHash": "99205f3eb7f8118971a719a53a07055b05b77b465f74c1f953a3c775e5a12ab4" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.647Z" + "updatedAt": "2025-12-08T15:00:22.193Z", + "postProcessHash": "991b3566ecc309fa52482d277012aa478187c0c6db6cb1391b812fcb9192545d" } } }, "6c13291af1fcb759241f292105143a36e3bbf1ab9081ab255a8b5c4bff72fa62": { "ae7ac6f309bb06834858f8b9a0cdf63b44e9f2a93e7ce130cef993006b09ba82": { "es": { - "updatedAt": "2025-12-01T18:59:35.616Z" + "updatedAt": "2025-12-08T15:00:22.228Z", + "postProcessHash": "e792b81c09de9bd4539802b4e44d2e2986c6777367eaa413f1f0cdf17d843e34" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.624Z" + "updatedAt": "2025-12-08T15:00:22.090Z", + "postProcessHash": "4cc66cd2b2027627e8b07612b22b332cdeda719d41311a3f2158b546353af28d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.624Z" + "updatedAt": "2025-12-08T15:00:22.091Z", + "postProcessHash": "fdf629707cb6b934a2921e764bb33f5d247429343ec37c196c936e7b642c66fa" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.625Z" + "updatedAt": "2025-12-08T15:00:22.243Z", + "postProcessHash": "00b1198c1f45b984bf416f3480002c13640a8546426d9433ba0a19b5c91c266a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.625Z" + "updatedAt": "2025-12-08T15:00:22.087Z", + "postProcessHash": "ecfab177283bf38a4dfe512008326056f847e0927543219b46a651580e59ae2e" } } }, "0b9159f892538239bf20c4a0102c3e910e01464c17f158febb7eb494df4c39b5": { "9ff0c27bce29b874872c67fb11f58d6beaf6a7f6a1e267a7fbe6a8d06cce5b2a": { "es": { - "updatedAt": "2025-12-01T18:59:35.617Z" + "updatedAt": "2025-12-08T15:00:22.228Z", + "postProcessHash": "c3413db5b96e2302a1a564fdb31f98a8a7d0728c373eb7522d616f44bcbd8f85" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.617Z" + "updatedAt": "2025-12-08T15:00:22.229Z", + "postProcessHash": "f1227de65d3dc6072cd593947ea6a3e8dc845682c9b0a4d9c9d5cc5f669ea522" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.620Z" + "updatedAt": "2025-12-08T15:00:22.234Z", + "postProcessHash": "68378616ef102b6189444d2c36dca7ef8fbd57c5632302f26e2d9861a26605ff" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.625Z" + "updatedAt": "2025-12-08T15:00:22.243Z", + "postProcessHash": "7e760dd85ce35840a382177abdec4449e927c57cff50b94ec97973eeb54a77e5" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.626Z" + "updatedAt": "2025-12-08T15:00:22.244Z", + "postProcessHash": "bf970d66f11c8283738feb0e992333031c8a2fae84c2892bbff423ac6f32dc10" } } }, "71f1a92aab95ab5f58bd35bbd84b6ffb3c7bf0e2cebebd6a356ce84e186b3560": { "04ba52abd080e4c5337b1027d2e3430dc224c32a37d901f9302bdfbb8377d767": { "fr": { - "updatedAt": "2025-12-01T18:59:35.618Z" + "updatedAt": "2025-12-08T15:00:22.230Z", + "postProcessHash": "367828ce2218c37f5f3b4b3e858e4d547bdb37e7271bb50d7c473edb5d9487f4" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.621Z" + "updatedAt": "2025-12-08T15:00:22.236Z", + "postProcessHash": "b05a45a2d0ebd933b486b3db98162afcf9b575bcc845dbefdddc9105afa5b70a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.622Z" + "updatedAt": "2025-12-08T15:00:22.237Z", + "postProcessHash": "de6c282ae1e8b2c1379b31cbe80d48a3df8f0a91dd6ae4bb5649e5681204e8a5" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.633Z" + "updatedAt": "2025-12-08T15:00:22.365Z", + "postProcessHash": "390aee77891f441abf807e0ae5a6767439834ebf25b61a33fe04614ffd7f38dd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.634Z" + "updatedAt": "2025-12-08T15:00:22.369Z", + "postProcessHash": "18d92767742e5343795ae213a313a96e703d8041d41ab7157164dd8ad6316935" } } }, "fd00ab7e4758e60069960757191c4bce5352e1538b69413ee1b532d80bf8a7b5": { "4fee019b28efa279400b9bff6c30280f45394366e4e35d5301825054872dac35": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.619Z" + "updatedAt": "2025-12-08T15:00:22.231Z", + "postProcessHash": "6dbd0a6fa973ab86da7d7a3f3e4ab1531976ab4839698914817e8a712526b199" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.622Z" + "updatedAt": "2025-12-08T15:00:22.238Z", + "postProcessHash": "e071dc26617f791f0ae2f1ecfc022c3b2ee7e62ecfb200f2565dfdce30418eec" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.624Z" + "updatedAt": "2025-12-08T15:00:22.241Z", + "postProcessHash": "7ded703982bffe4592e49c45c95717dfcf837d482b019d7f0ff9f132ff53ee44" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.628Z" + "updatedAt": "2025-12-08T15:00:22.314Z", + "postProcessHash": "e7bedaa16e4679aa4297a4d5edcfd06a96365d4da80722579ba0d818fde01052" }, "es": { - "updatedAt": "2025-12-01T18:59:35.633Z" + "updatedAt": "2025-12-08T15:00:22.365Z", + "postProcessHash": "502714c67063e12ea23165060a316f2e6f9fd18bbad5cd7cb99e2f49747720cf" } } }, "e8c948a95059f85e20eaf8309e6a79c85e0d55fc152a1cdeeccf05ea7034c19f": { "cb47bba669c9c9c6019f7ec1a909c42f9ecb617ce8b2901cd0613bed7d9db11b": { "ja": { - "updatedAt": "2025-12-01T18:59:35.619Z" + "updatedAt": "2025-12-08T15:00:22.234Z", + "postProcessHash": "30362202e4ae0279abe6ba13f53c13740594fcc2285c98e4ff04fe345ff4732b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.623Z" + "updatedAt": "2025-12-08T15:00:22.239Z", + "postProcessHash": "983261c3955abdd454fbf10b1453a3ed9c41968c46be5cc685de216d531429a3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.627Z" + "updatedAt": "2025-12-08T15:00:22.313Z", + "postProcessHash": "d2c861f1d876ba6a7feb174539f808f57f0dbd0c663f288dd2f9e3f53a5cb169" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.628Z" + "updatedAt": "2025-12-08T15:00:22.314Z", + "postProcessHash": "8df280df22e25c42ee4cb2182fa6907d65d2eb8ff4999eb10ccf31626530d311" }, "es": { - "updatedAt": "2025-12-01T18:59:35.633Z" + "updatedAt": "2025-12-08T15:00:22.366Z", + "postProcessHash": "8fe6c253ccee13837573e6afd2e16b3cb304103bfd089ac7bba662deb46259f5" } } }, "855e6138d15eb0ff005194743dd02e3f8601c013f48a93f46a06c180d089d0b8": { "bf86064742c6c1f6881a3eabbfbf6b183f98d36d0a6d644e340486c83d68e29c": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.623Z" + "updatedAt": "2025-12-08T15:00:22.240Z", + "postProcessHash": "25bf217291121ee0e45a4847b4a97431288663f4a5e09e8d3b9e6613c816977a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.626Z" + "updatedAt": "2025-12-08T15:00:22.310Z", + "postProcessHash": "40251742f1d12dad8c4dc8aa85ac7b8dc77ce31cc1963d3970141aa3deee9c6c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.627Z" + "updatedAt": "2025-12-08T15:00:22.312Z", + "postProcessHash": "d626c774f1a23cbb2142d2aa130250106c88ce3ffc5ba90eba0e909993729519" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.631Z" + "updatedAt": "2025-12-08T15:00:22.324Z", + "postProcessHash": "40ba77a168cb4807625f3bfd006d9b989dcbaafd2d18ad76e721b132594fb584" }, "es": { - "updatedAt": "2025-12-01T18:59:35.631Z" + "updatedAt": "2025-12-08T15:00:22.324Z", + "postProcessHash": "9e2287398ea53a721be03ddd9eaf54c431bdf54046c6c800086c0ed20b5a2b14" } } }, "3f110e82c5620245e60085476c772a93c3fdcb49cca2cd18e76a4e1e1562081c": { "9716089e0b7048abfddff7417d9838e50edabd3f0a9149cc4517d7d2c36425fb": { "zh": { - "updatedAt": "2025-12-01T18:59:35.628Z" + "updatedAt": "2025-12-08T15:00:22.315Z", + "postProcessHash": "fb90ecbb236f290382d2982bc4ac10bf32ec7fdd6d7b4170909b5a8e265a2b0b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.628Z" + "updatedAt": "2025-12-08T15:00:22.316Z", + "postProcessHash": "63d933f61c8c71871650e36b8e9fe135831ef02944fab41b67152199c9ad2406" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.629Z" + "updatedAt": "2025-12-08T15:00:22.317Z", + "postProcessHash": "95d42b4b667d94cb073334e2dc2853805cd965deee1a569f365ba0dcb9ce93ce" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.630Z" + "updatedAt": "2025-12-08T15:00:22.319Z", + "postProcessHash": "ae14a82f2b59e7e4ca0945249d1891634ab3e7eb2b3a827c85a621fa49d48e88" }, "es": { - "updatedAt": "2025-12-01T18:59:35.632Z" + "updatedAt": "2025-12-08T15:00:22.354Z", + "postProcessHash": "8db5cf7f03806f03cae1ffd61aa682b36d92561d898e2d3c5b4f6e771429e677" } } }, "5c691bef50758e30064fe0a93a50f678ba52febc517d2e92244d17d0f63049f6": { "7702dae0fed0f7d28df7c95dd919db78ee84d1fe55d5112fe38edc41007a7c22": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.629Z" + "updatedAt": "2025-12-08T15:00:22.318Z", + "postProcessHash": "835992208e341137ae422691539be7acb3f41c4a370a9161c7b773b2061e646d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.630Z" + "updatedAt": "2025-12-08T15:00:22.318Z", + "postProcessHash": "fa5d4c0483e879160b2198d2182ed94b49e80fdc20300d5cc2238007bd77f33e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.630Z" + "updatedAt": "2025-12-08T15:00:22.319Z", + "postProcessHash": "749c6a9bace672d1e8e2d3eeff3be3f1756f8b1f70a0540b910a7ab6b1125458" }, "es": { - "updatedAt": "2025-12-01T18:59:35.631Z" + "updatedAt": "2025-12-08T15:00:22.320Z", + "postProcessHash": "f5e889ffb2c17b8883c9dd6a2db6091eccc2ad2485244db705bd3a7afacd2555" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.632Z" + "updatedAt": "2025-12-08T15:00:22.325Z", + "postProcessHash": "3eea9600b9228e3e482b551b4701163fba7a9403de1a943a9fc3657e5349ee15" } } }, "21509ea473faa433fed948f17893d4bf351155f77020fbd76564aecf43e182d2": { "aa0e767260b7680c0b4548789e277ba78cfa3415a3b5392e2c76b8e3b1b77a39": { "fr": { - "updatedAt": "2025-12-01T18:59:35.637Z" + "updatedAt": "2025-12-08T15:00:22.285Z", + "postProcessHash": "125ecd0dea2a482534c0db1e1e1b1fa55c83829d6682822c7adfb1bdc462ce67" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.651Z" + "updatedAt": "2025-12-08T15:00:22.250Z", + "postProcessHash": "a21a71db1545945b566f8d37b117f2c644607b91543076c75de7a94072c5ab32" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.651Z" + "updatedAt": "2025-12-08T15:00:22.298Z", + "postProcessHash": "a702fff637a2050aaf0f492a838b28b96821d0f8fe1e238168485fe1aefef465" }, "es": { - "updatedAt": "2025-12-01T18:59:35.652Z" + "updatedAt": "2025-12-08T15:00:22.252Z", + "postProcessHash": "2d5cbfd9e9d12492c435f38349a424d8305f6480e14913b77c386b00ae9d5d56" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.653Z" + "updatedAt": "2025-12-08T15:00:22.259Z", + "postProcessHash": "e0ace04a0d2998e1e18674115dd9d357a9c84f56dd3301cac0a4d3cea8ba9483" } } }, "41707c14265858bbfe9674cbdb0526dbcd3dd6f8000153c20f68e98cce078502": { "22dfc576ad4ee2e99a91e5fc975126985f833aaa7114512b66ab1f97233dee9f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.659Z" + "updatedAt": "2025-12-08T15:00:22.302Z", + "postProcessHash": "081ea2b51d4c940f7cfd55f0cfe2347f7f6447d62bca468b895bb96c6266720e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.659Z" + "updatedAt": "2025-12-08T15:00:22.304Z", + "postProcessHash": "ebdc9f30e5c44054f71ec06431badac81f78a7091516f836c826f5cd0c492170" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.659Z" + "updatedAt": "2025-12-08T15:00:22.308Z", + "postProcessHash": "7016898af36b072ab4f0610521693ce468051fb865b631a82844fbee72ba5ca4" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.675Z" + "updatedAt": "2025-12-08T15:00:22.469Z", + "postProcessHash": "2cacc61d7c20ed80f82a482c81b29fdba8dffd03f5dd184dbfa6a8e57f476eff" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.676Z" + "updatedAt": "2025-12-08T15:00:22.497Z", + "postProcessHash": "1a2015847660165fa8bc7a7c1f3e2f3487ffd4f3298011d4837c8a4257567840" } } }, "4d0d4530af9090d81526c3e70d3100ab1424133e203cc6b5618aacaff9268968": { "213f289de5d7fb3b58e19c17ef3ae7d3b52e1387a1500ed3c29b8f27a28c25bb": { "zh": { - "updatedAt": "2025-12-01T18:59:35.637Z" + "updatedAt": "2025-12-08T15:00:22.226Z", + "postProcessHash": "c03ee1d13c84119021f74c426d8c55bbdb6762361ea0ae591c0ee96fcfd4e1f6" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.641Z" + "updatedAt": "2025-12-08T15:00:22.322Z", + "postProcessHash": "67c91781a9b020b12ff1fd26b9921af8178c82b82427cca904525d78120660ce" }, "es": { - "updatedAt": "2025-12-01T18:59:35.642Z" + "updatedAt": "2025-12-08T15:00:22.323Z", + "postProcessHash": "64cb01d28bb8391d3c96e4792cf1054f9b356e5eba2a28d7c7e15e9947411a75" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.645Z" + "updatedAt": "2025-12-08T15:00:22.331Z", + "postProcessHash": "6532ca1be9be56b423a11cab20d435472a6ddc5b393f02b83cf1143cd7eaa156" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.646Z" + "updatedAt": "2025-12-08T15:00:22.333Z", + "postProcessHash": "5589b1a322ff23b716b0bfa8fa6a27e3538e5f9540dd900361884031ab1d1347" } } }, "a17dc70673238bd0590874c69eeed476086fdfb2bc9cabdb32b8e6e37feb3ee9": { "cf3066a4f7ec5900414896ada66ee4836a8e65009b7e95874dc2221e993d37da": { "es": { - "updatedAt": "2025-12-01T18:59:35.638Z" + "updatedAt": "2025-12-08T15:00:22.226Z", + "postProcessHash": "b75e3fa65a6e695d17267f83f0718cc722b4f15b84bacadd8152133cdf4a6242" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.646Z" + "updatedAt": "2025-12-08T15:00:22.332Z", + "postProcessHash": "17bc83603280ec1b1e5fd22f65d88cf1508b0912ed2daa604714de5475a08347" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.648Z" + "updatedAt": "2025-12-08T15:00:22.334Z", + "postProcessHash": "87dbe8c8c48843167401eca8180495d924c8cf3d2afe76c6b665e4e40ff894c5" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.649Z" + "updatedAt": "2025-12-08T15:00:22.336Z", + "postProcessHash": "ec97156e893a641281f23225f064f84fef4d343f7c062108ee5c699dc3d3b0bf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.650Z" + "updatedAt": "2025-12-08T15:00:22.339Z", + "postProcessHash": "114dacf9c41b868744334b391205194922bff385d78e6f86dbb5762860557bfe" } } }, "4e68e9491c7ab1ce6416c713b279212fef419cb5fccbb4c696874fad661fe4b0": { "50e2544bb028f146ebc806739c57d35274405a18c0c03a8017c2bef692ec5574": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.638Z" + "updatedAt": "2025-12-08T15:00:22.305Z", + "postProcessHash": "7389945c4ce39338db53986ff31e2fc75bffa3fd9bbaf5c7fa63559434501c24" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.639Z" + "updatedAt": "2025-12-08T15:00:22.306Z", + "postProcessHash": "052ef4d98183396c85e52f500765a8d6e80f4218543ee94f8cccf713caa04aae" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.652Z" + "updatedAt": "2025-12-08T15:00:22.378Z", + "postProcessHash": "5694185e3dce9af413f60dc55c7567809ed27a99084d33120cf2e87a017587c6" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.655Z" + "updatedAt": "2025-12-08T15:00:22.386Z", + "postProcessHash": "e3ed38cd0987023f836c42a963fc6430c152e6185bb2b3c570d2a404c84a93b1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.658Z" + "updatedAt": "2025-12-08T15:00:22.498Z", + "postProcessHash": "145ea21049ecc5c49df55b93681152ba7865b5c773a4a975f3ed36af872703f4" } } }, "e33a3b3c1b39a819bfeaecbe2020986a794526c1835d6aaef31f25b853029c1f": { "a248f80efddea956e32fe1baa1370962884d42b6fcf8e81a07c8a781daad3dc3": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.638Z" + "updatedAt": "2025-12-08T15:00:22.227Z", + "postProcessHash": "0ad0d93fba2b2509382bfad59a3d9778d7202869987ab0a04ea1ada65c2868c9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.644Z" + "updatedAt": "2025-12-08T15:00:22.329Z", + "postProcessHash": "d2e6bcdb606f4ee4271f4da880447b5787fbb248f4bd030a88fe53776827b710" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.648Z" + "updatedAt": "2025-12-08T15:00:22.335Z", + "postProcessHash": "3cc08f9a5587154cf19edf4d008196c9282df9d8396401e6ca7a541bbad026da" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.648Z" + "updatedAt": "2025-12-08T15:00:22.335Z", + "postProcessHash": "14a0f0e590698f44ab73235a480710014822d363e2f89fe95f74951edf4ae15c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.650Z" + "updatedAt": "2025-12-08T15:00:22.338Z", + "postProcessHash": "246973276422258f5e84790cbeb5c19894922d05ff58596268a301d1b21b6483" } } }, "17815cf471570e11fbca424ec432e03c0ad51c093c88f27090b68605327b2708": { "06764b2c92cffc206cd4fdd92dd2c727b6fa209e579658cd4c38f811cc2e81dd": { "es": { - "updatedAt": "2025-12-01T18:59:35.639Z" + "updatedAt": "2025-12-08T15:00:22.321Z", + "postProcessHash": "adb7b0a90cb2232c4d4c4b924545bd9416d17e6db2c44006a0b133d6c963bf8e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.640Z" + "updatedAt": "2025-12-08T15:00:22.321Z", + "postProcessHash": "8193280a8024af128fef3839434f0e61840e93e618164126263325aca55daa6d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.641Z" + "updatedAt": "2025-12-08T15:00:22.322Z", + "postProcessHash": "7eee8a8a85875fac2ac4644bd128f8cbd269719771f892af1a72ad9b75915252" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.643Z" + "updatedAt": "2025-12-08T15:00:22.325Z", + "postProcessHash": "606df3dd85c17897452a7a73d77b74a89d11785012a27f7dbf6434df8ed2fff8" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.643Z" + "updatedAt": "2025-12-08T15:00:22.326Z", + "postProcessHash": "45fb193a573afd02b00ebf9f67d3a73a7ca4cca1473dd902f64a40cbb1a731ed" } } }, "278e21b389ce7fe0475a3a8bf8e251f62df0dfe8f2a3579c150a373e797dd021": { "526c4f1d930106a699f4a1dc0551ed56d468386be0684e74ace6073821014b21": { "es": { - "updatedAt": "2025-12-01T18:59:35.643Z" + "updatedAt": "2025-12-08T15:00:22.327Z", + "postProcessHash": "1249ab31623ba72e0cc86880d0b198b388428b9c305600e81802db7d1c2e0d59" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.645Z" + "updatedAt": "2025-12-08T15:00:22.329Z", + "postProcessHash": "90184146ace9e85b85830e8bfc4cd50136120794e992997411ebc5a7029fe207" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.645Z" + "updatedAt": "2025-12-08T15:00:22.330Z", + "postProcessHash": "9930fc5c81c02083baad65cd2cc42edd88a2f1487004ba2c663fcc7cf4faede7" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.649Z" + "updatedAt": "2025-12-08T15:00:22.336Z", + "postProcessHash": "ddfcfbeecaa0112db9fab2985c5138500e93c2b5211328438638a78c2eb9f610" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.657Z" + "updatedAt": "2025-12-08T15:00:22.366Z", + "postProcessHash": "8c9078e14ccbac89ec588f96100458e2dc05318a07ea8b6a6a4d333a449dc966" } } }, "80e512d85991ee77384fc280f398ed9c57eed858cc2799eb2bb405865b4cc2a8": { "eaaa5b7616877321a1ca04f5a29642a4271a404b1a336af1ec78174920b608de": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.659Z" + "updatedAt": "2025-12-08T15:00:22.254Z", + "postProcessHash": "ff4d0d303f6b61b09f4e4515d4f94fe10234dade8b71711f624434218d2d9d22" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.660Z" + "updatedAt": "2025-12-08T15:00:22.348Z", + "postProcessHash": "9120b661a649599d2dabffe32927a83dc0a82b5e27aa9edc4fe9dca0d6514853" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.660Z" + "updatedAt": "2025-12-08T15:00:22.349Z", + "postProcessHash": "8bb5785b9188ef0bfeabee4cd88c7f405dd99b358785bcbd7327100171b0cc2e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.662Z" + "updatedAt": "2025-12-08T15:00:22.258Z", + "postProcessHash": "4d2a9fc637c0aefbf9689af67c5d1c5644c9f8f9b635bcd7ebb7a3539571543b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.666Z" + "updatedAt": "2025-12-08T15:00:22.251Z", + "postProcessHash": "2330efc1f2bb0370f52dee6cbad5cd243ba5e350d48ba410a317b54a54ef7295" } } }, "5f66170bbc21465ae99c7f5416df17729d3afe47436fd4a68e7b6c43b00ebda4": { "a213d573bea35d9b9ed58442902ca2f82a099465facf4504a1211e45b377c3d4": { "es": { - "updatedAt": "2025-12-01T18:59:35.660Z" + "updatedAt": "2025-12-08T15:00:22.347Z", + "postProcessHash": "1f6586426dd8fc6ae243ed7388980f36796f20f6921e8349dfe11350c3240989" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.661Z" + "updatedAt": "2025-12-08T15:00:22.350Z", + "postProcessHash": "e24713fe437fad841a91533c3a68b2dfd559a2bda54c4455c16ee65fccaccd35" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.661Z" + "updatedAt": "2025-12-08T15:00:22.350Z", + "postProcessHash": "a90af65a599fd797ea649a85bc84e0dc1eff84e1c3ba8d793aaac278a84ee02b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.661Z" + "updatedAt": "2025-12-08T15:00:22.376Z", + "postProcessHash": "49b36640d0cafeac31c53974ea293a78c744713f78234dff670f9f40356b1cc3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.662Z" + "updatedAt": "2025-12-08T15:00:22.381Z", + "postProcessHash": "18142dd6a47beee4e341d3098e40b3be052c909480de8123606c949bb18d1f52" } } }, "f2456d28a8f0732d48fa09f7acf0d8de78f3138428a1258e63d463bbb45fe99a": { "0b8d162980b23d07dcf33617b816071de6a9154129be9c3727857fb5f85d24a2": { "zh": { - "updatedAt": "2025-12-01T18:59:35.652Z" + "updatedAt": "2025-12-08T15:00:22.378Z", + "postProcessHash": "86df3f363c5fd507dd3c8a44e205c8244665e8ba8205da5ebdd4aeaca146062f" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.654Z" + "updatedAt": "2025-12-08T15:00:22.256Z", + "postProcessHash": "a61be7249dcac3c6f16fa478ecb83bfece315e1f9be53f0f5d6b6ade69f97937" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.654Z" + "updatedAt": "2025-12-08T15:00:22.255Z", + "postProcessHash": "8578c6f7347d6a88845075fb6ee111441b811846d53bf2e0d4f1317965a6ccf8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.654Z" + "updatedAt": "2025-12-08T15:00:22.253Z", + "postProcessHash": "1e9ca803ef1584a5dd3fecf8cd0c3bfabe6430c3e9447ac903d97a6ee9100de1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.655Z" + "updatedAt": "2025-12-08T15:00:22.300Z", + "postProcessHash": "1ef2796d3579591c0c9a33e2537262ad33339e69675eac3d56b27b356d1b65a7" } } }, "77dc8065fb7729e364c1b5039ca3369ef2d7f2a9d34ce22754518bd9826dca5b": { "b89712e2f22eedbdfbbc3f0f2741ee4578ac0acf28c8cc36ca68ba833d760a5b": { "es": { - "updatedAt": "2025-12-01T18:59:35.656Z" + "updatedAt": "2025-12-08T15:00:22.425Z", + "postProcessHash": "eb67d5c85db1ecdc2ca171d11911f5d9542202eaf34cdcddc48499deef2a80a0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.656Z" + "updatedAt": "2025-12-08T15:00:22.437Z", + "postProcessHash": "3048ded033f5586f9a58bef7196518e1655e7ec87f04a675d2cc6a083eff9e5c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.656Z" + "updatedAt": "2025-12-08T15:00:22.438Z", + "postProcessHash": "5619a2ec766ff66864740449209125b4c75da524218c8a36557121b0cd72d45c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.658Z" + "updatedAt": "2025-12-08T15:00:22.479Z", + "postProcessHash": "0d578f750b2478cc3b26055f305d9a466789cd84c51681e457120100caed877b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.658Z" + "updatedAt": "2025-12-08T15:00:22.480Z", + "postProcessHash": "d2fbb8f4b82fa2b3d8a0e2693c3da4273043aec441d0a2c47d9528503e62c510" } } }, "cb8a2998ba66ed984f22200b7026bfa5b2a2f3be3493cd7881370696e35119ff": { "bb8da168cfb1d018887cded5606f75a692d47388ce3b02f24e807f38e5b4b19d": { "es": { - "updatedAt": "2025-12-01T18:59:35.662Z" + "updatedAt": "2025-12-08T15:00:22.377Z", + "postProcessHash": "8f096b5750d2404261c0933af2707d2aed818d06c11fc9e5cc86a702cf1c32b0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.662Z" + "updatedAt": "2025-12-08T15:00:22.381Z", + "postProcessHash": "7d9c53284e2fb52890315239e1f657edf1e065bd80ebe9a7d3ee28fe485f17fd" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.664Z" + "updatedAt": "2025-12-08T15:00:22.388Z", + "postProcessHash": "09875609ec290ad7f620d2cd644debfa097b4bcb1c94b6d963e686a2a564d21d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.665Z" + "updatedAt": "2025-12-08T15:00:22.388Z", + "postProcessHash": "9b27fd928b57c0c88b614136677d0ecd3b37bcca2c062edc034f89ab0488ab37" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.666Z" + "updatedAt": "2025-12-08T15:00:22.407Z", + "postProcessHash": "7c9e183c04834cee62a889b9e4728df90cf24f2bc45af1089f7a9b619ac71ff1" } } }, "ea1835afd68346b5a0ac034fbc0df886eeeb8592474f704a7888852edbbc32c5": { "cae1ef62a414b171a82eb69cd3cfa82c5de699dc1f32b92de3300c2e3a42cb27": { "fr": { - "updatedAt": "2025-12-01T18:59:35.663Z" + "updatedAt": "2025-12-08T15:00:22.382Z", + "postProcessHash": "f1a38b4a4f208b79250758da88e7e18d0fba4375869d27c1fe372c9e93df25ed" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.663Z" + "updatedAt": "2025-12-08T15:00:22.383Z", + "postProcessHash": "2a7017a2d6da8f0b83cf5840934bf270f7937c28056f8d770a9a55c1f4341e5e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.667Z" + "updatedAt": "2025-12-08T15:00:22.410Z", + "postProcessHash": "01199b29201220a024b5b7bf6a71d5cefbc9914555c7a22bbded9558bd5c380d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.668Z" + "updatedAt": "2025-12-08T15:00:22.411Z", + "postProcessHash": "5bb8c59fa59873711a7f563f84165eb11e30d137e6e64c733bc1635727814003" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.668Z" + "updatedAt": "2025-12-08T15:00:22.412Z", + "postProcessHash": "4192638c980c35f3afd6834aba502af7f9b075f20560dd0d7c4508b93e3e8b47" } } }, "a3bc44b0227183b0036d2dd862554ea7e049bd0438880f4df808684590c87b3b": { "94b2c0841b6cb8a637cc6474a2845b69e48cb25715597c7969bc7b3cb95a11e2": { "es": { - "updatedAt": "2025-12-01T18:59:35.663Z" + "updatedAt": "2025-12-08T15:00:22.383Z", + "postProcessHash": "236ecd70f7eaf204f6a0f6f285b52b4de8c6b9c69fa17c19bf3b14406109d244" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.663Z" + "updatedAt": "2025-12-08T15:00:22.384Z", + "postProcessHash": "760b22e3425eecd7b8e098f3a7ae35054688ea6f82e8941fa492ec5cd31956db" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.668Z" + "updatedAt": "2025-12-08T15:00:22.413Z", + "postProcessHash": "6cdcabfd38e2eecf356d8db0526f8add7331570f4e8ffe6f0c593b948d534db3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.668Z" + "updatedAt": "2025-12-08T15:00:22.413Z", + "postProcessHash": "fe102e929548b54ff8c188bfa2ca904f230971aa796542d59272c989e77505fd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.670Z" + "updatedAt": "2025-12-08T15:00:22.419Z", + "postProcessHash": "8d188d2dd2cacd1b515fe9a2d34a8ebcdf529af197bd9cf2dca909aad2895438" } } }, "09f951cbb93ff25070d6ccc2aaad86f8de9472a1866dfa2f6a3599104e42ff8a": { "425df7773a5c18401f38cd18c6cf15f316cb912cf3d5e0501f891ed434ffa7b9": { "ja": { - "updatedAt": "2025-12-01T18:59:35.663Z" + "updatedAt": "2025-12-08T15:00:22.385Z", + "postProcessHash": "d976d32a13c5822f777555dbb29b2b84f818b08e06bf58c64c3cb6ff9b7a2124" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.669Z" + "updatedAt": "2025-12-08T15:00:22.414Z", + "postProcessHash": "f90119d80c367386f8ad08b38ae5e4e733c3d72aeda413154f84fbcd609e3031" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.669Z" + "updatedAt": "2025-12-08T15:00:22.417Z", + "postProcessHash": "4be086daa3405527fbdef3bcb3bfb4edce5fe6bcb3fa92b23a78769f57e14573" }, "es": { - "updatedAt": "2025-12-01T18:59:35.670Z" + "updatedAt": "2025-12-08T15:00:22.418Z", + "postProcessHash": "8973b8875d8484b1e74504d8e932171825aa85c3e2805a2c95a55fc24e80191c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.672Z" + "updatedAt": "2025-12-08T15:00:22.432Z", + "postProcessHash": "3c390d2380dc33e47fc42fc8fddac064295a9f5a287d1f3e5f2167b2bc3a16b6" } } }, "52343c809e72e29fcc0d09ba572be022ab524799f2b2af28f8bb4ce0d9838c42": { "ec294fcbb85ea7c893a7119483c5dd75741a12a3046043a1d13b5df9e3275d35": { "zh": { - "updatedAt": "2025-12-01T18:59:35.664Z" + "updatedAt": "2025-12-08T15:00:22.387Z", + "postProcessHash": "210d98deb548c77d1b6c497ed51f471ef77f0b67bb28dc771a187137b113297f" }, "es": { - "updatedAt": "2025-12-01T18:59:35.669Z" + "updatedAt": "2025-12-08T15:00:22.416Z", + "postProcessHash": "4305d38a15534d3651d1cde775f4d6e771c6af19841c9d5a50916a359ddecc52" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.674Z" + "updatedAt": "2025-12-08T15:00:22.438Z", + "postProcessHash": "da7ebe03a197a426696e5814785b8d6d2750b30efddb7b3e893afe7b4ff43318" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.675Z" + "updatedAt": "2025-12-08T15:00:22.478Z", + "postProcessHash": "9b7ae35abf4fa60bdc7692483651ed121f2526cecbc010fd497baa44221c00fa" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.676Z" + "updatedAt": "2025-12-08T15:00:22.478Z", + "postProcessHash": "49a7558a0e9cb102b1aaa115acf5651b7ca04930f1d91b53042e45b2b862b73e" } } }, "bbb5dd109b4c00cb3179e482c7bf2fa632f11f1449a73ee8a6fbf34c0b8901cd": { "bca3d4e09eeb9f8375dc026b3c908b066cb2d46d7981e3dccfcacb2b9611be5c": { "ja": { - "updatedAt": "2025-12-01T18:59:35.677Z" + "updatedAt": "2025-12-08T15:00:22.402Z", + "postProcessHash": "db84aa6a760c56ee885a7377d894215ba89ed220370f72d07bfad8dc521bc5b9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.678Z" + "updatedAt": "2025-12-08T15:00:22.422Z", + "postProcessHash": "ec4b3bebcc7b1f683d8e905a2e653315ee8ddc5978010ddd6c524175785869f0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.679Z" + "updatedAt": "2025-12-08T15:00:22.424Z", + "postProcessHash": "505a58016e61d5427a9dfcccbbae6592be278a748e34961b5cc6df3342a26175" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.680Z" + "updatedAt": "2025-12-08T15:00:22.436Z", + "postProcessHash": "10d31e0e31aec8d2d36ab2466b49974f881b18c9c75a8be9dc4054e665d441ed" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.681Z" + "updatedAt": "2025-12-08T15:00:22.441Z", + "postProcessHash": "52b50dfdd078dda682405f2e85c6be60842494069a10d7e9d68ca89c44bd6e3e" } } }, "e2a61a10ff97ffd503a04d18494f72069c7535ef65f7948e7380815f52c412be": { "7e935816b3f4be15ce1833c3105a56be60582e38d087c2c9adabd07f093ec094": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.677Z" + "updatedAt": "2025-12-08T15:00:22.261Z", + "postProcessHash": "3021b04f6282d074a4afb6a140cb71e2b9fa355e29f53c6f32bbfc4def86a9c7" }, "es": { - "updatedAt": "2025-12-01T18:59:35.674Z" + "updatedAt": "2025-12-08T15:00:22.291Z", + "postProcessHash": "3941375a7e7244323577640c59481610e247855d6b8137d604eb1db574a74fde" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.674Z" + "updatedAt": "2025-12-08T15:00:22.287Z", + "postProcessHash": "3ba7236e3746d2d1c496c53715547a9de8d4073b967454aeab71f62a4afb221d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.675Z" + "updatedAt": "2025-12-08T15:00:22.266Z", + "postProcessHash": "fe27782c2f909deff49c6a7e8deda174d7dcd7a066ec5d9118e3a5efc81ae3cc" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.681Z" + "updatedAt": "2025-12-08T15:00:22.257Z", + "postProcessHash": "c7f71dc0a6b50fa8c593ccb60da3bb25f684840a1cc960cfad96f39eb7d5700d" } } }, "59fca6f525edfb569dacc8d3bd6c8571300bae8371f7549c5a433362026b9c45": { "0c6aed1d611bb91b8c7ffa73e5e2caa0bfcc3f5091cd3d5b899d311894f1ddf6": { "es": { - "updatedAt": "2025-12-01T18:59:35.677Z" + "updatedAt": "2025-12-08T15:00:22.403Z", + "postProcessHash": "10a307a1d23e98237cfdc9e7b95840227320eaaea1573b7ac626af0cea4cd237" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.677Z" + "updatedAt": "2025-12-08T15:00:22.404Z", + "postProcessHash": "e22c0d5034bb1ac23aa6d8e173f383578768569c8fe65943563469a3aa037118" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.679Z" + "updatedAt": "2025-12-08T15:00:22.423Z", + "postProcessHash": "c78c8938c96d1d907ff2843d7d82d67090519f4054c394d62132f74a64166313" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.680Z" + "updatedAt": "2025-12-08T15:00:22.439Z", + "postProcessHash": "f14fc1c19905b4b9213254bff19e38c8bac78a1e1cca67f6a52306b5af4d3eb1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.680Z" + "updatedAt": "2025-12-08T15:00:22.440Z", + "postProcessHash": "39790b320e5452f8cb8eaf5c1b65f8ad39bfc33d5ad5daaa21cbd50522fefe74" } } }, "adc99b1fab3999d228699d573302c74ceab451375bfe64f57d9d39bc7f1b63fb": { "db75129335344e5b3d5b6002ece349fcfb76c55420a398a19d67a737d9b164ae": { "fr": { - "updatedAt": "2025-12-01T18:59:35.678Z" + "updatedAt": "2025-12-08T15:00:22.404Z", + "postProcessHash": "054a05fdd5630057ad8a450b28bc80ffc97143e53e90d82ab7458332ee7f5a3e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.678Z" + "updatedAt": "2025-12-08T15:00:22.405Z", + "postProcessHash": "762fbbcc92e215903d37ffbf9d35af0ae790ae9b0e670687553d76493f71a2ef" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.678Z" + "updatedAt": "2025-12-08T15:00:22.406Z", + "postProcessHash": "01e0654492da61dadf2c7020e387083e34ce1be4a72a69690b11d95e62ac0928" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.681Z" + "updatedAt": "2025-12-08T15:00:22.442Z", + "postProcessHash": "b8d29bb8f142def18d4fa1cb473d553a78fa4a53bb55db0ac5458cce344c1c99" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.682Z" + "updatedAt": "2025-12-08T15:00:22.445Z", + "postProcessHash": "18f40b1c4b354359e4cb3203a2d7808d9c773ad7e31007eb100d410f761d18dc" } } }, "082f0d33093c995f86ce4ea6c2e5315179efbeab08a0b3108c0e097529749a1c": { "9e6a182a80f23065d09833d1782475506d54dd90601d0d4850d7d03ea7fb1271": { "es": { - "updatedAt": "2025-12-01T18:59:35.665Z" + "updatedAt": "2025-12-08T15:00:22.406Z", + "postProcessHash": "61a2d7659feeb076d310cb6e6f5fe0e40a05f1a9256d9f23eb53891281b55048" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.666Z" + "updatedAt": "2025-12-08T15:00:22.408Z", + "postProcessHash": "689b4586dc8fc376d313bc36ef4a7f1ac9a8f81113d6081fb3b150e78ba80c21" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.667Z" + "updatedAt": "2025-12-08T15:00:22.408Z", + "postProcessHash": "95f1393fc2a9ef3fe5a457271ea26e081aa503f589875e32cf88fa854840ebb3" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.667Z" + "updatedAt": "2025-12-08T15:00:22.409Z", + "postProcessHash": "f74a817a5bb5d47c44cd3d1de3719e0e65dde4606bce2314be19d0b7bc0694df" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.667Z" + "updatedAt": "2025-12-08T15:00:22.409Z", + "postProcessHash": "1c8f4b229ff0a40fb367dddbaa05aa41785189a3cb4391d3bd0c5439b67c8fa0" } } }, "a3531e0c0c021fd3c66c31757082d32db10e5f77a3f0f99f496b46d900947fd6": { "f5454a1c7388c663b92c47e8024b961849964c9f3ec40147c9b86a6a57f01f9c": { "ja": { - "updatedAt": "2025-12-01T18:59:35.670Z" + "updatedAt": "2025-12-08T15:00:22.417Z", + "postProcessHash": "09f2f4caf71d04ef9c446a701aff883cb3e40fd98b11c7110cf1c622434db204" }, "es": { - "updatedAt": "2025-12-01T18:59:35.670Z" + "updatedAt": "2025-12-08T15:00:22.420Z", + "postProcessHash": "57f9d9c8f91942a5e1381ea7d568798e6d49743941373e5848d8b75a653520de" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.671Z" + "updatedAt": "2025-12-08T15:00:22.420Z", + "postProcessHash": "6254b52869f626dd8bc43a9587c1f38fd460ac877edb2921863703d353d6880a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.671Z" + "updatedAt": "2025-12-08T15:00:22.422Z", + "postProcessHash": "efeed62416e9551136365cde639eb23b7243254cfc92834b27b058c9edd00c90" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.673Z" + "updatedAt": "2025-12-08T15:00:22.433Z", + "postProcessHash": "b4c4aea8f8dbc3c4d99808187fb3df5bc94df670cb505514cb9fad76b7510fe9" } } }, "036fd680a50fe0f72f63e2282ea1a9c70c83259a8fd46ec269831aa557f247c1": { "b3f88eb324ef66d428e5f9e75f715b15ecd01474b2e6e27caee326024b437ad5": { "ja": { - "updatedAt": "2025-12-01T18:59:35.671Z" + "updatedAt": "2025-12-08T15:00:22.421Z", + "postProcessHash": "318cf4f259963d3c5b2d44840361cf4b78c4f78a48202c2ef7b9d395adda76bf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.672Z" + "updatedAt": "2025-12-08T15:00:22.429Z", + "postProcessHash": "a345dba446ffa70c0790588bcf1da2ec62c76d324397626a581020c30549a3ef" }, "es": { - "updatedAt": "2025-12-01T18:59:35.672Z" + "updatedAt": "2025-12-08T15:00:22.430Z", + "postProcessHash": "911777ce5c27372c55077447cdfbb06c4eb9e318f714ed4834ab0f7fee9536f1" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.672Z" + "updatedAt": "2025-12-08T15:00:22.431Z", + "postProcessHash": "78f4eaa81b7f5a0bf0d93b66b8ef4efb02839886937ca1c8bd511b4f12b05f20" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.673Z" + "updatedAt": "2025-12-08T15:00:22.435Z", + "postProcessHash": "6b6bee0d4812e7009e3cf5e54c116c885304ec343a9db5491d3435ebd3a3d35a" } } }, "cdb6a66b1f63dd018c0b1830e2f55839314ec8328dd3191f0175947b1686e2d0": { "db738848cb277bcdc57bc5d99aabe9972ee142edcf3a83dbf29dfbcf9b42ae92": { "ja": { - "updatedAt": "2025-12-01T18:59:35.671Z" + "updatedAt": "2025-12-08T15:00:22.421Z", + "postProcessHash": "b5dbb31657c6e3a26bad1e62aeefc93d36a683b033eeb1a2978de7ae2773e023" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.673Z" + "updatedAt": "2025-12-08T15:00:22.433Z", + "postProcessHash": "5d33f35044afe51651c407fc96056856d6573f38d5527eaa8cde2209de0610e1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.673Z" + "updatedAt": "2025-12-08T15:00:22.434Z", + "postProcessHash": "9f09dea207052ede6c511f6d6549bbeae7a65d85ecb32e5b4449bbec41a76ce3" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.673Z" + "updatedAt": "2025-12-08T15:00:22.255Z", + "postProcessHash": "7497684b2ccb42be98f03c190ec59388082e5e2d4b254c0da7e5859ad67f8b5d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.674Z" + "updatedAt": "2025-12-08T15:00:22.442Z", + "postProcessHash": "6da84dba79ad7a4a2687ca3dc444b826b583151ca419f7554cddda78ceb58784" } } }, "07015df1ac37ca1d85c9754f84f508596ad5cd8347ea5200b1128195347b3fc0": { "cce24dd1d30bdfc0b0d50fa82b0f001372547522fb754e3ca597b33b7aa22096": { "ja": { - "updatedAt": "2025-12-01T18:59:35.695Z" + "updatedAt": "2025-12-08T15:00:22.375Z", + "postProcessHash": "b02c0454fd654498600a191f47ff62a4c595c690dfa09bd5373ce258b63fd8d4" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.699Z" + "updatedAt": "2025-12-08T15:00:22.534Z", + "postProcessHash": "8dac08e88eba503c88401e40a2392950b57c0be91a775f4f6938f3a49eb1a0b6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.701Z" + "updatedAt": "2025-12-08T15:00:22.536Z", + "postProcessHash": "7c6ccaee4751a2a4121befc9b3e2a2a64f00c325d89c0c1f457274d3908803d0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.702Z" + "updatedAt": "2025-12-08T15:00:22.541Z", + "postProcessHash": "d88a2adde31d9ca847cfbad4c52e4b420d2ca2821d9e6b5eb207b75a5bd86da1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.714Z" + "updatedAt": "2025-12-08T15:00:22.573Z", + "postProcessHash": "1ab39e20928be7d777a9ede119b89dd0866d7b0f3ac8872e99341ae92f57635d" } } }, "14d36cd305f2c8c927c6c2c793a727222beb60f55fd92f34f9ae37766a69fa75": { "74dda50940d70cc62116496ae11ed60299f94aa19615a8d1569da2910f9efeb1": { "es": { - "updatedAt": "2025-12-01T18:59:35.695Z" + "updatedAt": "2025-12-08T15:00:22.525Z", + "postProcessHash": "e1c5dfe866c2b2102fc76ce0d0b92e57f6ee14d59ef776d2a8a78c6469a19ab9" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.708Z" + "updatedAt": "2025-12-08T15:00:22.568Z", + "postProcessHash": "bccec67fb38a81afd098fb2eb3423350057cdddfd0dcbfd1d5cbffec8dd531f0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.710Z" + "updatedAt": "2025-12-08T15:00:22.605Z", + "postProcessHash": "ea4b9a17651593d82f1f9ac26dbf1afbd8a4a78b296b0c953283bc5cf5a9d9b9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.712Z" + "updatedAt": "2025-12-08T15:00:22.610Z", + "postProcessHash": "b5000280a833d9fb9f7da2fd033bb9430a05c12deeeaab2212787179db40d035" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.715Z" + "updatedAt": "2025-12-08T15:00:22.623Z", + "postProcessHash": "330e73f7268b9f63aa4b68bd31e30dd3289606611421c9d168d6468a3dabd024" } } }, "ff71b26dc63ff87187913b0b7a56a0646974789cc83be11a22c0356a8f3eb4e1": { "a387eeb396f3e18d3da25159ce881d0bd0a70bcebe6dcb1045f9687f46097726": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.696Z" + "updatedAt": "2025-12-08T15:00:22.526Z", + "postProcessHash": "196d6474cd55465ba398c19b47fdcf2167d0d46f954e565c84a69ad41f2c286c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.703Z" + "updatedAt": "2025-12-08T15:00:22.551Z", + "postProcessHash": "3eab197def1d1bf8908a7153ef28578aa8cad21bb9b159e29d4604ecc5720f7e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.708Z" + "updatedAt": "2025-12-08T15:00:22.567Z", + "postProcessHash": "0a98510d1b7358774b91246c8a923077203c322e3448b9c3d9ade89886697757" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.708Z" + "updatedAt": "2025-12-08T15:00:22.568Z", + "postProcessHash": "cdccc00acb26e848a12051040836b3062f5e6329b39a5b32dd624b4933f7a881" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.715Z" + "updatedAt": "2025-12-08T15:00:22.624Z", + "postProcessHash": "b8f0eabd6db232732485ba61920d1abf607d0ac1beea8982fb8ff9db915cb00c" } } }, "c7ffc278a14c2d29b6fafe093d5d6d6b4ad5048406de2b895c2c91cc25538a8d": { "86417666353a5a998fcc830b8b3172b493f95ae13a75766fefbe302b4ffc17aa": { "fr": { - "updatedAt": "2025-12-01T18:59:35.696Z" + "updatedAt": "2025-12-08T15:00:22.527Z", + "postProcessHash": "7b9946d3a14a7a950db3ed1b016d437cb03fdfa51eab45677840a3475b1afcf8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.709Z" + "updatedAt": "2025-12-08T15:00:22.569Z", + "postProcessHash": "fb330eb28c499bb9100e041477e00458aa6a49dfa418ffbe77ccbac26cdaaa61" }, "es": { - "updatedAt": "2025-12-01T18:59:35.709Z" + "updatedAt": "2025-12-08T15:00:22.570Z", + "postProcessHash": "20c69725cd5f5458ceab64f4272368f46f7ac423da999d91cb0f46bfc25d8863" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.711Z" + "updatedAt": "2025-12-08T15:00:22.605Z", + "postProcessHash": "bd7e8991ec42e25c068b9bf0c45aa42724b153b2c82735a68f0218fe26432f39" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.712Z" + "updatedAt": "2025-12-08T15:00:22.611Z", + "postProcessHash": "4a554ae13291f5dd8359231355456b718e8f74d49cb500a5d658381ed4c859b5" } } }, "6269ebcdfda344a1027264a912c4b4b0c58dd4fed47abea854eebebca077d9c5": { "0145719a1b2207c1aee811aec616b33c173e533a9686607440af6a301e31793a": { "es": { - "updatedAt": "2025-12-01T18:59:35.679Z" + "updatedAt": "2025-12-08T15:00:22.424Z", + "postProcessHash": "b56438b7fce71f50e7e7029c15730ff2d7f8f1380909f965c44e411efb5bc556" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.682Z" + "updatedAt": "2025-12-08T15:00:22.443Z", + "postProcessHash": "7b7c8b9cd560160d2ae8291ae3b58b71fbb3c2b5fa0a6b7cfb58939a06d8074b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.682Z" + "updatedAt": "2025-12-08T15:00:22.444Z", + "postProcessHash": "19d03322380f1d87112e698bdfb4de1c8b0f4200785500d3733487165ae10930" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.682Z" + "updatedAt": "2025-12-08T15:00:22.446Z", + "postProcessHash": "150b109c21093007c1237fca7099d38c3158cdbec826cf7f8f6a77887ce9e3c6" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.683Z" + "updatedAt": "2025-12-08T15:00:22.447Z", + "postProcessHash": "cb42bc046988b877c085f2866807a5ad835bc93b6eed9a725f0ba6e246c6b0a7" } } }, "f32801a38faf074c9dbde03f1fb1030bf44e03c201593f6f379686d985e9c10e": { "6d1eef4c85fcc128e94fe99dc9b6564953b16bd729834a4e791afba9057ba0db": { "fr": { - "updatedAt": "2025-12-01T18:59:35.679Z" + "updatedAt": "2025-12-08T15:00:22.293Z", + "postProcessHash": "f82f3b9f4819b8f00a3dd659170e1c7b0c48a7aa742f8a66ef4afc0139ad3857" }, "es": { - "updatedAt": "2025-12-01T18:59:35.684Z" + "updatedAt": "2025-12-08T15:00:22.374Z", + "postProcessHash": "6e028fd81749a8b78e18fea4a1415e6f4e64282559be1222a3ce592a6361581c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.684Z" + "updatedAt": "2025-12-08T15:00:22.263Z", + "postProcessHash": "f56842fd4b7f6150c34a7a4afe5775f9123258319d4e0055d5e6f933929c1da8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.684Z" + "updatedAt": "2025-12-08T15:00:22.252Z", + "postProcessHash": "dab57df38268477d43d2ff84389996d5c2ed3dc44b661f7e2d8abdb75b07479e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.685Z" + "updatedAt": "2025-12-08T15:00:22.289Z", + "postProcessHash": "6d64676b54bbf5433eddcadf920cdd796ba0267c433506fdd880bb0cdbb29c4d" } } }, "87ff4cc91434b02ba438e1cbe72cef0eff7c3978e2d88138a3646e71e247cafc": { "cf023c17eef9ac467806c3fd0a90d11a7192edfa56e695b70b48a6eb8b785a7b": { "es": { - "updatedAt": "2025-12-01T18:59:35.683Z" + "updatedAt": "2025-12-08T15:00:22.446Z", + "postProcessHash": "553ed48bdd3c9e0f534bf7b4b4da55a98a826b199449b9d428954bdc37a5caf2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.683Z" + "updatedAt": "2025-12-08T15:00:22.448Z", + "postProcessHash": "af933b0740e939243900ab3eba8870843499a521bdae4703f8506107f4a50d56" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.684Z" + "updatedAt": "2025-12-08T15:00:22.449Z", + "postProcessHash": "a301472a9f1d21ad2fcd4aac984f388b958f38c6c5045748cd865130627bab48" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.684Z" + "updatedAt": "2025-12-08T15:00:22.451Z", + "postProcessHash": "b17ced86bae69f97b5cd3301a14c4163b8af62056329c94d42977b03690ec433" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.685Z" + "updatedAt": "2025-12-08T15:00:22.452Z", + "postProcessHash": "0be77462a5c711064d3a418623da9e1b942bc1627c73ee93e47002f3fa2651db" } } }, "2d565d6c7f8b46964dc2caabee46e922c4b4cc9e0eb6ca8f44ff854dd342b39c": { "b19e63502674606a4e0a8b953c9020f4943803f5efa9e0b6ab989a36a3967061": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.685Z" + "updatedAt": "2025-12-08T15:00:22.459Z", + "postProcessHash": "40fc4b6a533539e1049860f25bf327828f9db7fd043a3b16c6cea35270e830df" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.686Z" + "updatedAt": "2025-12-08T15:00:22.460Z", + "postProcessHash": "189ed019bced97ebd3cd1b97567627e9661b03e17593863131e2705fc028d622" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.686Z" + "updatedAt": "2025-12-08T15:00:22.465Z", + "postProcessHash": "f5ae4f85c571a0d4ae76ba995e9aa77435ab57bbf06a266a698b514ee2a46788" }, "es": { - "updatedAt": "2025-12-01T18:59:35.689Z" + "updatedAt": "2025-12-08T15:00:22.573Z", + "postProcessHash": "4d91a2666eb17842d008d9a82e6abdf8e7956d472db6006456020d7d2ea96e11" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.690Z" + "updatedAt": "2025-12-08T15:00:22.574Z", + "postProcessHash": "39a77f63184a0abb7911dfc661ac2757b4ae7e540ce52257dc82dc468f10c98b" } } }, "4b684beeaa9bd039da86e1015a1cfcfab2ffc77986a426206c82d9ab686be329": { "ac56724ed5b2b05e8c20bf2f3e81864d52cb4b61c722bfae513a77a9eb2a77b4": { "es": { - "updatedAt": "2025-12-01T18:59:35.686Z" + "updatedAt": "2025-12-08T15:00:22.462Z", + "postProcessHash": "e11046a12e571e2af87d34a77354299374dba0e492485e1ece4eb46ef5037b66" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.686Z" + "updatedAt": "2025-12-08T15:00:22.464Z", + "postProcessHash": "9527b48182248321d784b3000b67d94d4b571c5985337a1615e209766add2e7a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.687Z" + "updatedAt": "2025-12-08T15:00:22.531Z", + "postProcessHash": "91fe11ce5d34af9a442e03f7ec31d78d95d8f3e55b8a63b6a3a131e5251402a9" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.687Z" + "updatedAt": "2025-12-08T15:00:22.532Z", + "postProcessHash": "cbe23fc46995aac3083fa943687ad21529df7520f964fa1d263d9037a4d5146a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.688Z" + "updatedAt": "2025-12-08T15:00:22.532Z", + "postProcessHash": "3421f6e3782e06bdc7f15c9af3835c1afc168404186c5073bd29105cb9902368" } } }, "a1d9198f9ae5b17eeb6019f8868bcaa83f1c4f537349699c90e8430cf0e47ae1": { "9c709341afa567610de31a8eb9a65f8e3cc9d69c0ca1ec1c1b8505e409738dd3": { "es": { - "updatedAt": "2025-12-01T18:59:35.696Z" + "updatedAt": "2025-12-08T15:00:22.463Z", + "postProcessHash": "08f4977335ec7f1356e7a57dff09e2157cba37e79bd79a77d6eef32174dd3b6a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.698Z" + "updatedAt": "2025-12-08T15:00:22.469Z", + "postProcessHash": "e9bbe1f4359265b20a67a440a23c8bdb0dfbfb03210843a02fcb81cc82c3d962" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.700Z" + "updatedAt": "2025-12-08T15:00:22.535Z", + "postProcessHash": "49a0d44cbb3d598094b4f971b0705020e29b73dc423e2104d882c8f252068e36" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.702Z" + "updatedAt": "2025-12-08T15:00:22.540Z", + "postProcessHash": "a69a96fe1b318ebb446c5e92956d465ffe5e4f1ba3a5cd3faa4e0bdb6a646656" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.716Z" + "updatedAt": "2025-12-08T15:00:22.575Z", + "postProcessHash": "2f4ee5e9701aa4a4eee3d7f3415ae1c83e2128bb8cc768ee128ca01d20b58878" } } }, "26454d2c1b001cc0f4f13a20500d4e5c658ae93293093d413622e6d5585b5156": { "1b8f0aeb77d9b72ae7755202669ba0764383cf3b7a4b4b05ace88364eb05ae58": { "fr": { - "updatedAt": "2025-12-01T18:59:35.687Z" + "updatedAt": "2025-12-08T15:00:22.528Z", + "postProcessHash": "bd077fcf95b584f5edafcfdfdb18f94bf53f8550b34742703b13a9a01d67c960" }, "es": { - "updatedAt": "2025-12-01T18:59:35.687Z" + "updatedAt": "2025-12-08T15:00:22.528Z", + "postProcessHash": "aa460e8e73efd968e86c261698827038993ace86db1024644dfc2cfe9804ac4d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.698Z" + "updatedAt": "2025-12-08T15:00:22.529Z", + "postProcessHash": "b0b911fdedf4fb3ad312a10b47dda4127553fcacf3afd7c35d3a95057dc4504f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.698Z" + "updatedAt": "2025-12-08T15:00:22.530Z", + "postProcessHash": "9aa5efb262b67e3172991fceb8d7395bb8836257f62d7545a2b9c4d30be154b1" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.715Z" + "updatedAt": "2025-12-08T15:00:22.574Z", + "postProcessHash": "608a8e15a0b675710c360ff73ebbc4afe00dca0d67178f3e84b530948b0ba139" } } }, "e462ce4a296671366bac28291307f995f51e09055b0f0e3d6defca06e45bba6a": { "e7a3725e06d1dec863e7de95d42c57cb393224b324c7cf6197f4f8675105a5c6": { "es": { - "updatedAt": "2025-12-01T18:59:35.688Z" + "updatedAt": "2025-12-08T15:00:22.264Z", + "postProcessHash": "1e091c2dc63589be073082f3d836a723fbae3aa294dc17e60d669a570e241dea" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.688Z" + "updatedAt": "2025-12-08T15:00:22.570Z", + "postProcessHash": "4d7fbc0f2c86b629ac75f9a124a5c01c38b9bd92f304554b5292e84d36f47cb1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.688Z" + "updatedAt": "2025-12-08T15:00:22.372Z", + "postProcessHash": "2e77687565451c675c2dcd4c1fa8626456235c46e380afbc1d1e0dff967e9d20" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.689Z" + "updatedAt": "2025-12-08T15:00:22.373Z", + "postProcessHash": "a455422e6dedb4d4eda087a263eefff90c30d165a624f46913205e898f065a46" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.689Z" + "updatedAt": "2025-12-08T15:00:22.571Z", + "postProcessHash": "fe4a32c0565f6136737423e337e6e0a7c9388b5364a45f1a4357f88db10218e2" } } }, "8abc6cb453e10d70b4ae4b6e2ce590d3ea1384ed7c1da4fc1bd9c048b19a3ef0": { "c88b07ccc7c3c2092ba2238f878aef513daf55d096325069b99fc1fe3d2aa767": { "fr": { - "updatedAt": "2025-12-01T18:59:35.690Z" + "updatedAt": "2025-12-08T15:00:22.296Z", + "postProcessHash": "b8522b096c0caf2176b09956e123bddde784cd44ca4ee7d4a7f9d03000e5cf6f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.690Z" + "updatedAt": "2025-12-08T15:00:22.288Z", + "postProcessHash": "7370a476572e71c0814a6f43a494517b448cd1c5ade29868501227ef83ef0957" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.691Z" + "updatedAt": "2025-12-08T15:00:22.290Z", + "postProcessHash": "24a8913f8c829078c217bf4f749b491b3fb003f1ddb6cb09c4b6a9542d8cdf1d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.691Z" + "updatedAt": "2025-12-08T15:00:22.295Z", + "postProcessHash": "269966da308cefcf4fff5c7875eed6ee929b1e11a5ab736cdefd618512bdb080" }, "es": { - "updatedAt": "2025-12-01T18:59:35.691Z" + "updatedAt": "2025-12-08T15:00:22.282Z", + "postProcessHash": "5605594a325ed166e219a8f5ba98e9bd093537937071f604069cbb4a358ceef6" } } }, "6e7da8b2cf58eff0da81adb1302b8c421fd2ad6aa9f8fad9737ce113e89838a8": { "2adf5b2ace71b41cc497a63d0ab5e3aeaa1b93dc4bb4700bf1d21f6e083a934c": { "es": { - "updatedAt": "2025-12-01T18:59:35.691Z" + "updatedAt": "2025-12-08T15:00:22.576Z", + "postProcessHash": "d12a75b7193628d1acfbc83708a63b4a8ee3635a6d5846932c1db4b8c62fda88" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.692Z" + "updatedAt": "2025-12-08T15:00:22.577Z", + "postProcessHash": "bd9b0cda491569242ac4e496fec26740b6d856d8d1cfc5a3dbe30f88ffff7e24" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.693Z" + "updatedAt": "2025-12-08T15:00:22.580Z", + "postProcessHash": "f214b8eda4bf3c684dac0c0fa6a7be395ae428e225e3d0e5feb900a1ab2c46a7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.693Z" + "updatedAt": "2025-12-08T15:00:22.581Z", + "postProcessHash": "1327d0eec7ea9210947a8f6f7809361568d6b3fb1876a4ec6811bcc7ea9412e0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.694Z" + "updatedAt": "2025-12-08T15:00:22.582Z", + "postProcessHash": "a56ce642df3285723f5f0c577b02cfb982b29be95de0b7e7cb8501cb6d671b53" } } }, "2165c7cdcb8d3d28c324bd37a72f7c24330e694216a79345eae6a46160d3544b": { "d1f7dbeae4b66f73029f33c627be84173269b042162639cdbea2f4270e567817": { "es": { - "updatedAt": "2025-12-01T18:59:35.692Z" + "updatedAt": "2025-12-08T15:00:22.578Z", + "postProcessHash": "e32cd53ce692fb5f8ba34f2459d20049f5d318ec8882b21af35418df3af634f5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.692Z" + "updatedAt": "2025-12-08T15:00:22.579Z", + "postProcessHash": "099f953ffb864c3d8e620b088aab636afb49e61441aee7a5241d29f1dfc62e29" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.693Z" + "updatedAt": "2025-12-08T15:00:22.579Z", + "postProcessHash": "b79744c2600dd12d74600615e421027f69adeb71b56703b93a8ab94c62544898" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.693Z" + "updatedAt": "2025-12-08T15:00:22.581Z", + "postProcessHash": "72a69be5579066e1b952c9d1d4310d0f49492f2e4f95e03d5a7fec62c7674e67" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.695Z" + "updatedAt": "2025-12-08T15:00:22.582Z", + "postProcessHash": "1b57a9c495bb4b05fd58ddf6b3e50fea2c5a81848e6d90e782c426b332cac19d" } } }, @@ -19253,589 +19788,744 @@ }, "156fe8bde4b0bbbe012c425dc140de8dadd8a0f9da889cc8815a652732fa6ee7": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.716Z" + "updatedAt": "2025-12-08T15:00:22.512Z", + "postProcessHash": "5a5f89e277eb10e92ce82b61c4c62df8bf217d76e06a2e5052606eaebde66e52" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.717Z" + "updatedAt": "2025-12-08T15:00:22.502Z", + "postProcessHash": "f087c3af8aae048badc2f3c866e86cdaf789daf062728a7ded52d2eb742eb431" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.717Z" + "updatedAt": "2025-12-08T15:00:22.592Z", + "postProcessHash": "3d8e86bd0dc5a2ecbb1ae9d79aa3a8c5617cb7b44b9ee6f7dbc0505a3ac1f8ac" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.718Z" + "updatedAt": "2025-12-08T15:00:22.521Z", + "postProcessHash": "b87618ea611aca510659675e7932fb2b891966e070273b026fc32c02f15fdb8a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.718Z" + "updatedAt": "2025-12-08T15:00:22.514Z", + "postProcessHash": "11f37eecd6dc4a6487b7606ee3a6303462871a059d9a73db21aa9fc7797536ec" } } }, "6892b9a950e0592ad5355b3255d4a5c6b1d51f4cf11c977d1c13d1c9ca89bcf8": { "317c487b9ac9e03c8d4798b07c7b90f287017f90e5d4667b573b034f69028e02": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.718Z" + "updatedAt": "2025-12-08T15:00:22.524Z", + "postProcessHash": "c9f41ba7a6a08cab913b7446162606d7ac816d2aecd4a7123da402825c3a8423" }, "es": { - "updatedAt": "2025-12-01T18:59:35.711Z" + "updatedAt": "2025-12-08T15:00:22.521Z", + "postProcessHash": "a761b8d2c423badc2f984be4cff78eb82aefcb7bae8b2bad511bc14d3f638cee" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.719Z" + "updatedAt": "2025-12-08T15:00:22.511Z", + "postProcessHash": "90835069a512bbe757399f4541010582ebc647300752d19660100d6d58b258d0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.723Z" + "updatedAt": "2025-12-08T15:00:22.523Z", + "postProcessHash": "22b016c97f85b8779159c55765f4668135c54192cb32ba6a9407e950e6c27e1e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.723Z" + "updatedAt": "2025-12-08T15:00:22.515Z", + "postProcessHash": "ace394dea6c9449fc29f0ca91bbfc89c73c516e3331afb5e4ef43afef99271f0" } } }, "69f639a208862a2dd6d5f977e57421fe1147b22653c08cd08b6d14b194aa5b53": { "54315efa57fac40eee410db7c102cfdc47b8a437620f21c75560d66cf81cc71c": { "fr": { - "updatedAt": "2025-12-01T18:59:35.718Z" + "updatedAt": "2025-12-08T15:00:22.524Z", + "postProcessHash": "10676ed92e52a524b453b9e216ee1a61de505dc7bf36f10a28f3e36671153ae1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.720Z" + "updatedAt": "2025-12-08T15:00:22.559Z", + "postProcessHash": "4322745ec66e7c5e71301f2a04720381493510bcc57a1225d93f9470bc84fa81" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.720Z" + "updatedAt": "2025-12-08T15:00:22.560Z", + "postProcessHash": "32c06d1a629be1db0ebb6c3e19c4513f5ac89162026116ab183017797c7ca95c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.723Z" + "updatedAt": "2025-12-08T15:00:22.610Z", + "postProcessHash": "be811d70553f27690e46ac845738205b07045a0532642a83485c5d3d1d1fdd00" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.726Z" + "updatedAt": "2025-12-08T15:00:22.621Z", + "postProcessHash": "7d5d87df2a8f7fe8b0d7ef2f17693e81c5a28eb2a593c05c1d132640778e38b1" } } }, "1d1399403aa96d672e42c995388b30613e888c51ab5885faaad949daf7e7f9cf": { "18403644c62f1914e9b315b07fd4b5bb1ad4e8828af0111731e7198643a07281": { "fr": { - "updatedAt": "2025-12-01T18:59:35.719Z" + "updatedAt": "2025-12-08T15:00:22.602Z", + "postProcessHash": "134943c986c3805bf1cae807093946ac8e50696b24f4387ae85d40ac0b900730" }, "es": { - "updatedAt": "2025-12-01T18:59:35.730Z" + "updatedAt": "2025-12-08T15:00:22.630Z", + "postProcessHash": "e899e489aef36381a076f394898a88bc9c204376dd422171a2581f03b149f30f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.731Z" + "updatedAt": "2025-12-08T15:00:22.634Z", + "postProcessHash": "b247cf36ed4ce608b32450e1f7ef70612c62b41db75b9bfebe4e8518ef230e74" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.732Z" + "updatedAt": "2025-12-08T15:00:22.636Z", + "postProcessHash": "c966ef13144452240a58d17424e2d4855c6948312edd3a95dda0e49b98d6afc7" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.733Z" + "updatedAt": "2025-12-08T15:00:22.638Z", + "postProcessHash": "c3009677e9efce940bbbf4646394795066b31ff353425e9feff0cae4ba0b34ce" } } }, "0d601b0eba9cde4d40efc6c17ef7a41b49376f05a22899c39ebdbdfae64532ef": { "94668d977945d288958fefe4b5975d6ec53d367b0942d1aadf3ddea672713ecb": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.697Z" + "updatedAt": "2025-12-08T15:00:22.464Z", + "postProcessHash": "d1d834e674c8a8dea78a9f53af59bc48316feab1be52696631110ff6da1fea85" }, "es": { - "updatedAt": "2025-12-01T18:59:35.697Z" + "updatedAt": "2025-12-08T15:00:22.466Z", + "postProcessHash": "fe92fbd14d3b8c6ded8919a840fb20420f26c7cf38bc53340897eaacf4a2ecd5" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.699Z" + "updatedAt": "2025-12-08T15:00:22.533Z", + "postProcessHash": "c4fd6b4be930fc36e83954a592d3f734ffbdfc4c2a8ee93e6fdc512c11a4fa75" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.699Z" + "updatedAt": "2025-12-08T15:00:22.534Z", + "postProcessHash": "9ddb6a829a015552124088f9a155ec3bee9848dcc6920ab3ce71371ea9015433" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.701Z" + "updatedAt": "2025-12-08T15:00:22.538Z", + "postProcessHash": "f2cc2c488f2e6ace99ad9861f9b4d2a8d4402b4a46682a3f954a3bcae19db64a" } } }, "00fc545a66f1da3c59026e74b0c69a597bec1d7a799f4b9a268c18ac1d48ba74": { "695abf0e777354c4c92c798700f4903b0df6e591ebb5be83b96bd4f775c60c75": { "ja": { - "updatedAt": "2025-12-01T18:59:35.697Z" + "updatedAt": "2025-12-08T15:00:22.467Z", + "postProcessHash": "238e3ea03528833651ef1861711ae4bda072a78d49342808b6e0368a2690efb9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.697Z" + "updatedAt": "2025-12-08T15:00:22.467Z", + "postProcessHash": "aaccda771849e5040ad0b427933c31e039451e8c2e9a174de32c257e8700f258" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.698Z" + "updatedAt": "2025-12-08T15:00:22.529Z", + "postProcessHash": "9f1cb2c7ec8f1cd4c509007fcdb9bfefb68f874c9af213733946d3de3dd798e8" }, "es": { - "updatedAt": "2025-12-01T18:59:35.700Z" + "updatedAt": "2025-12-08T15:00:22.535Z", + "postProcessHash": "4419e0e086cb33a6b5ebff3c6040ffd799f9f1fd2da16215444c18e131dc4946" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.714Z" + "updatedAt": "2025-12-08T15:00:22.571Z", + "postProcessHash": "ef83c3689a41f697ab8c8a2873110ce82ecc21fa761b3949b2ca2b0b7c56e5ba" } } }, "326cac5822a60580affc75e3e07581177acbe435f0a33364df7e78f1e4a14093": { "2a1568eab4377e4e930b99734f26b39156f5a2f8d369329b9a2d3d8af01b67ec": { "ja": { - "updatedAt": "2025-12-01T18:59:35.699Z" + "updatedAt": "2025-12-08T15:00:22.530Z", + "postProcessHash": "18ed59959100184d97bb839db33a14d8c03f999d56266af15bcc31fbe1a285ce" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.701Z" + "updatedAt": "2025-12-08T15:00:22.537Z", + "postProcessHash": "830b0da06afae8522a349bf8a02cf078752142c93dff51966500a464c28e7f8a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.702Z" + "updatedAt": "2025-12-08T15:00:22.541Z", + "postProcessHash": "7eff6b57cf5139ad20fa328db3b725d36b2e3f23eeebafa3e00bbffda5f4f6f4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.704Z" + "updatedAt": "2025-12-08T15:00:22.552Z", + "postProcessHash": "274432c52213c040b005edec62b635fa792612b3a602a3bb1f69ddaeb1ee3f08" }, "es": { - "updatedAt": "2025-12-01T18:59:35.714Z" + "updatedAt": "2025-12-08T15:00:22.572Z", + "postProcessHash": "16d955e574f9b73094266eeed79b260537dfeea8641ea9062ce368b46b6e132b" } } }, "bba44f0d0d9dc68de21cba56c097fc0be94555ef03ca4d25a1f48d3f2697f939": { "5ee7701472e46277b2bf368ba8a70d8e3d9af0a4463372249b43be0f228bd23f": { "fr": { - "updatedAt": "2025-12-01T18:59:35.700Z" + "updatedAt": "2025-12-08T15:00:22.536Z", + "postProcessHash": "bcafd2a93586e4c5692fbcb160b0595dbfb8b880adcd7040143a67f256d444a5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.701Z" + "updatedAt": "2025-12-08T15:00:22.537Z", + "postProcessHash": "480c6e50098c8a82029983aa3085f01e79dd6c25a7b2120d6030483fb9ff60ca" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.701Z" + "updatedAt": "2025-12-08T15:00:22.539Z", + "postProcessHash": "1c0e77e185d333ff12c09d37ddebd66203dea1ad15e551a9b601f9ac095d6286" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.704Z" + "updatedAt": "2025-12-08T15:00:22.552Z", + "postProcessHash": "5d976e34ecf6fa61f38ac3cda9e3b822161bdff6909be9c755556082f8094e2d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.709Z" + "updatedAt": "2025-12-08T15:00:22.569Z", + "postProcessHash": "81c59fb7a5c15f8a70e63b7812041100922240878b231d2b4aa3e21b211b63cd" } } }, "e49ff0b3e4f307080b379d73e28fcf834e642ad19d830c6bf56d1a1dfe12d7dc": { "3bb489f048a7a101de4aad68733f54f0bf9c18ed179ed1b992e5334d539c7557": { "es": { - "updatedAt": "2025-12-01T18:59:35.702Z" + "updatedAt": "2025-12-08T15:00:22.542Z", + "postProcessHash": "436a986d50dc9512231d88c6e1ee09e13cc117c707513da4fac2cae25060769c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.704Z" + "updatedAt": "2025-12-08T15:00:22.561Z", + "postProcessHash": "9755da016bd2789bce96eb903c604d07fd85cc88e047662e17543269b25600b2" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.704Z" + "updatedAt": "2025-12-08T15:00:22.561Z", + "postProcessHash": "7a06b25517c52c962568163bed884772e2ca604391ac339878d6991f65fcaae3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.707Z" + "updatedAt": "2025-12-08T15:00:22.565Z", + "postProcessHash": "d050fd0c15ed414cd5b8a4753a7ad9c9f4488726cfbea0f72ece6e54afd37066" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.708Z" + "updatedAt": "2025-12-08T15:00:22.566Z", + "postProcessHash": "2dcc9185df4528c825ba899294d0f93c5a7cc64fb8217c90e72462a2de7db1ba" } } }, "1c9166eb5e40634b3a16c6502ddb63f6abc344654b638318249904401f79e98e": { "96520ec466dbde5f957a8e7c3771f07f1b208af9b9459ad375e9f3f4fafbc20d": { "fr": { - "updatedAt": "2025-12-01T18:59:35.705Z" + "updatedAt": "2025-12-08T15:00:22.562Z", + "postProcessHash": "5a846bb3342329a136c97ebccc35dc4a4b14cea2003bbb49b62fc244a25c05d9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.705Z" + "updatedAt": "2025-12-08T15:00:22.563Z", + "postProcessHash": "e6cb216df0bcf9658911d2a3e654ce3ee622ea88f74d4e36b9bbb57a9b7859b9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.706Z" + "updatedAt": "2025-12-08T15:00:22.564Z", + "postProcessHash": "f8412f6e886c7af87d3371eb02dd30d1575453030608bb5d2d953f95802f8e28" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.707Z" + "updatedAt": "2025-12-08T15:00:22.565Z", + "postProcessHash": "3c645cc4c4a536ef4ece92783020429450a9818141f142eff5ed97b159638966" }, "es": { - "updatedAt": "2025-12-01T18:59:35.707Z" + "updatedAt": "2025-12-08T15:00:22.566Z", + "postProcessHash": "c0862baa4bceecdbd244b0e2652465581c76c990993c2967023ec9fc1565b10f" } } }, "747a695fe1a652528f0da5b8367b182efb1c74da96afc41f397f6f2df6f763c4": { "1823e2fffbb1083bd35225ef599563e8d2a278195144f97ca6d2be4cf8029a99": { "zh": { - "updatedAt": "2025-12-01T18:59:35.710Z" + "updatedAt": "2025-12-08T15:00:22.604Z", + "postProcessHash": "8435298d8c698c1c3e3750ade42963092145ac0a0d692af0524f363d628d800a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.711Z" + "updatedAt": "2025-12-08T15:00:22.606Z", + "postProcessHash": "349e9b9f0688b0dd33b9dd30bc915ca36950a8e93aad30eecff08b6ff12d4c7c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.711Z" + "updatedAt": "2025-12-08T15:00:22.606Z", + "postProcessHash": "c35ff99d465946a659a9e042f6b6db14048d012b32151ba415c9a640fad78e6b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.713Z" + "updatedAt": "2025-12-08T15:00:22.611Z", + "postProcessHash": "64e50830bc5c91b274578955716b7b75c4bf4d6ce3aa0b00fd873c2ccb3711b9" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.713Z" + "updatedAt": "2025-12-08T15:00:22.614Z", + "postProcessHash": "09fcd4e6160c58158e1ab2eaad7e20ec0f219e70adc13ffb47b4d2855a5d608c" } } }, "8b9cfe7ccf110376dc58c5969f21b2c7642dbbea16a3cadbfc690d823039419d": { "902875d24a9158c6e2e82e8cdc8c8e93c071a7f2bb44dc617c3ce24da387f96d": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.738Z" + "updatedAt": "2025-12-08T15:00:22.600Z", + "postProcessHash": "700762a06e132b0c7e4b1abc1725e77426dfebb83561dcf12ed974cfbddbef04" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.741Z" + "updatedAt": "2025-12-08T15:00:22.681Z", + "postProcessHash": "77fe2fdef84bb97c2a0fadd40edeb05a66a1aa329b62c1c55e2700ddc89156a7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.744Z" + "updatedAt": "2025-12-08T15:00:22.688Z", + "postProcessHash": "7e526689c414a800878d389f85476a29735023f0b7f466d183db02726d6da6ff" }, "es": { - "updatedAt": "2025-12-01T18:59:35.753Z" + "updatedAt": "2025-12-08T15:00:22.695Z", + "postProcessHash": "4b24becdf19698d2e7c1b3fe623a5a7e8a3a34fa9546367e254a38ce551e7207" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.754Z" + "updatedAt": "2025-12-08T15:00:22.696Z", + "postProcessHash": "45a223b07be80205c0e0705d61b37d0f5ddc3b5754fc8f0b42025e8a45e43821" } } }, "48197955a932632c6aebf40748e3542f7b142f5be07298d1ac034b00f71a84bf": { "6e89d0df3a44d520515f05241a594271053d70303f8b912f95aa1aa80ed0562a": { "zh": { - "updatedAt": "2025-12-01T18:59:35.738Z" + "updatedAt": "2025-12-08T15:00:22.601Z", + "postProcessHash": "1e9d697814242db221064c771fd3c37e2d3b87b682abdbf4e478ef4c6dc3112d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.739Z" + "updatedAt": "2025-12-08T15:00:22.601Z", + "postProcessHash": "4c183df9bdc8b78e3b7a7c157eb4f4f7cf16b2106d201f2407f5ae61f1665656" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.742Z" + "updatedAt": "2025-12-08T15:00:22.684Z", + "postProcessHash": "d6cd10b72b167cb5027ffba7053cd4784c093c076f7fa7dade66ba122b426423" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.749Z" + "updatedAt": "2025-12-08T15:00:22.691Z", + "postProcessHash": "9ec03634fdbcf36ed462326c773a5afde58965c6dd54716153b5fdfb9e06eca5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.754Z" + "updatedAt": "2025-12-08T15:00:22.697Z", + "postProcessHash": "7004adfa8b9095e23942bebc60572440efb2c4fb15541733efce2b83b9e32441" } } }, "b159277c6660e20e2300ca5f33121683bcc979431ac8b5c0c2177f3c68273c2a": { "7d641bb2a87f9221685890de924abce1ee484add81a6bcfc6138aec3a1d65352": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.719Z" + "updatedAt": "2025-12-08T15:00:22.550Z", + "postProcessHash": "65a286189bfd0a72b8fef8629cf3a6dfc4c93dae4a1d6ba88bd498bf8c6573e1" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.721Z" + "updatedAt": "2025-12-08T15:00:22.603Z", + "postProcessHash": "84ce27886c46c76d2f0de02f7bfa07066e4dfcab1582959dcdfa27d5c4e2a6de" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.721Z" + "updatedAt": "2025-12-08T15:00:22.603Z", + "postProcessHash": "dd63b42483040938624d9a716604c0d25275cd7285b4a7f277a107824ab3823d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.725Z" + "updatedAt": "2025-12-08T15:00:22.616Z", + "postProcessHash": "e0caf8dea8b6ed2c0bf86786bf23d7fd4d4f0632d60a0eb97b54abc153dd6da1" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.725Z" + "updatedAt": "2025-12-08T15:00:22.617Z", + "postProcessHash": "6e01cc66d0d62ff5b621051e56692a10cfb6d3c4a739b0d3a7a74c830a10362f" } } }, "0ecfc3379304358418602b77703df60cba9a0c61f7eaa1a7f5b512335e7c63c7": { "ba06f5b99fcdf530d8268246cafd1d9a851907d931c8d1cc9aecbc61a7320168": { "ja": { - "updatedAt": "2025-12-01T18:59:35.719Z" + "updatedAt": "2025-12-08T15:00:22.553Z", + "postProcessHash": "b185723ceb429d6d8da964e6c6f9eba7c87c93fb12bd76015eded2056e8d57d1" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.720Z" + "updatedAt": "2025-12-08T15:00:22.553Z", + "postProcessHash": "eb40bd6da810834caccba1c414cd72b76977eb85ee2e47751dd3fda469c3ca37" }, "es": { - "updatedAt": "2025-12-01T18:59:35.723Z" + "updatedAt": "2025-12-08T15:00:22.612Z", + "postProcessHash": "2f4c53807370d039ba9666887edc2484bc6138045b33da967349e5cabb7341e8" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.724Z" + "updatedAt": "2025-12-08T15:00:22.615Z", + "postProcessHash": "d8ba78d47dfcb6aa2da75dfa52d92a0c3c56fe50941394aff28ca24f21f5345e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.728Z" + "updatedAt": "2025-12-08T15:00:22.626Z", + "postProcessHash": "cd67f396a1227757fee354f8ab64dcd27ae3db2ab48910be1445eed4272ef083" } } }, "069da1a39ed289f7c5cf90cf0fb0438cf9101186ddddf4d225b2ba54aa20ad0c": { "0abdf476dc17f4de0f956fc803725e099d7a7076bc559354d8dc7be594a742c1": { "zh": { - "updatedAt": "2025-12-01T18:59:35.720Z" + "updatedAt": "2025-12-08T15:00:22.560Z", + "postProcessHash": "d82ef6b200e33f8e92d3d95db605dbc894b23a56a9499b31c35baa95d58c5ef6" }, "es": { - "updatedAt": "2025-12-01T18:59:35.721Z" + "updatedAt": "2025-12-08T15:00:22.607Z", + "postProcessHash": "9222fd09df8459f28d0548305ac1329c4b82882a74c74a8e5ec8ca39f6ce70c6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.725Z" + "updatedAt": "2025-12-08T15:00:22.619Z", + "postProcessHash": "0f62aa86885169dab409d8471b270daafbdfe19dc90d8b23b55e689371ad2be2" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.726Z" + "updatedAt": "2025-12-08T15:00:22.620Z", + "postProcessHash": "7ed22964fc0b2065c3f9b64823e16bdad4bafb1b23941a4a6c4b4237abe6da8c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.727Z" + "updatedAt": "2025-12-08T15:00:22.622Z", + "postProcessHash": "27f033eca677dbfde830531992c9afd537be044d639aeb8e10d9808095cc6a87" } } }, "53ac631c603ef975a72a62f7f82719559f853303e731c0e04cb46fe8c3aaa679": { "d20babdb5079122b8210a9c5e528f1379b80476d4a074542050f3194b61f5d5f": { "es": { - "updatedAt": "2025-12-01T18:59:35.721Z" + "updatedAt": "2025-12-08T15:00:22.607Z", + "postProcessHash": "34c7131c8f193ffcfe7523dde727c1adcecae8a49ad0da9f647c204a51b9f76c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.722Z" + "updatedAt": "2025-12-08T15:00:22.608Z", + "postProcessHash": "01a284c1d778b8fec1364c782f9759fc250d124a6823db1f3682c6e60ab90cee" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.722Z" + "updatedAt": "2025-12-08T15:00:22.609Z", + "postProcessHash": "64ed3c18cda3c5b8603f8a30631ce3e3b68f8f5cf99777c6246788a062de6b87" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.724Z" + "updatedAt": "2025-12-08T15:00:22.615Z", + "postProcessHash": "4c3087019f875adca6e74c9b253d01462499c92efcf30760967e491869128dfb" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.725Z" + "updatedAt": "2025-12-08T15:00:22.616Z", + "postProcessHash": "8b6fe45991082608343d77ac3fb27fecc444e8a7172f53bae70eb545f0c38888" } } }, "9d3c7deddfdd43eca9b6194ff3dd6901402e2222849b38f539199638a93db726": { "865d45e058ee2dc074b3d79d51a21a127d1bbd3af4b958bcbdd3d149a3f10938": { "fr": { - "updatedAt": "2025-12-01T18:59:35.722Z" + "updatedAt": "2025-12-08T15:00:22.608Z", + "postProcessHash": "437c0c24194ad84a7ccac44dc660942265201be0639cb90db3f4f8f437645765" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.723Z" + "updatedAt": "2025-12-08T15:00:22.612Z", + "postProcessHash": "714adf2ce70e9b3acba35e56e1f41742327b88999ef12f4b4b025d97a44ce1f3" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.725Z" + "updatedAt": "2025-12-08T15:00:22.618Z", + "postProcessHash": "3175461bc8fa5b4b173d89bc7ae52f1c7a9bdbcf03403686cf79ffc6a5e4c5a6" }, "es": { - "updatedAt": "2025-12-01T18:59:35.727Z" + "updatedAt": "2025-12-08T15:00:22.623Z", + "postProcessHash": "1dbd1e2ee07b375baf374f7ae5d87fc186a8e27e6201c3eda50c3fe2c8623d11" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.727Z" + "updatedAt": "2025-12-08T15:00:22.624Z", + "postProcessHash": "fd07b50f0a7c297c37a1d7c1ba154fd00a96d5397b714c2ff849021e0831c845" } } }, "b3eb6d0e363a1f6f64a0cec10e71cec22344b3f85a176495cdd7982fef2057f5": { "991a44acaa62a65c1c415456b9ffb0cc6939e15ae31538c94e112acf05ecb7a8": { "fr": { - "updatedAt": "2025-12-01T18:59:35.722Z" + "updatedAt": "2025-12-08T15:00:22.609Z", + "postProcessHash": "194133ef44e0c03312a773cb5c53ad951b4afa5bab55b7d4eaafe76747cc8b54" }, "es": { - "updatedAt": "2025-12-01T18:59:35.724Z" + "updatedAt": "2025-12-08T15:00:22.613Z", + "postProcessHash": "605e638adaacb9822bb1b3a9e7fab0d89d44e6059485f11f9504a210af2b6d4e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.724Z" + "updatedAt": "2025-12-08T15:00:22.614Z", + "postProcessHash": "44c5c18ca77d81a0be94bfe49fd6b427ed9a0d3d8c6995782c18d4a5689ea29b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.728Z" + "updatedAt": "2025-12-08T15:00:22.625Z", + "postProcessHash": "4b2391ca9af528893a6b40f5a9a576c87ac5726da2be8f4ab44c6f2ce2ef5590" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.728Z" + "updatedAt": "2025-12-08T15:00:22.625Z", + "postProcessHash": "2a17ea9c2590f151fa90e8033a5c2f16b12fbe1cc36169cc9f630b836ab3f41e" } } }, "8e36547f1a0d86cedcb72f9b1cecbc5e3a73194b97db3c4ddfc4e0d8554f3dc8": { "4203bc1215f48a0c9c795abdaca9d0f5c407b5e76f416df31100a8533b017930": { "es": { - "updatedAt": "2025-12-01T18:59:35.739Z" + "updatedAt": "2025-12-08T15:00:22.504Z", + "postProcessHash": "cfb402a2134feca26cfba40db4df8ece3d4c5b8491224fe506f3c67a7dc53c37" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.739Z" + "updatedAt": "2025-12-08T15:00:22.517Z", + "postProcessHash": "b7a2b2c0d7e0a087efee3a3df2c79bcb490b0976b5b934344b74bd88e600dfbf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.740Z" + "updatedAt": "2025-12-08T15:00:22.588Z", + "postProcessHash": "dca9db78277fc95b354ef56eaea554c68240b4ab1c34025bf24cc1adb352292d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.740Z" + "updatedAt": "2025-12-08T15:00:22.596Z", + "postProcessHash": "52e8ef8e33983fa8c75a63a8c34ae35b896487efbaec54dbdd92aaad3d68db18" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.740Z" + "updatedAt": "2025-12-08T15:00:22.516Z", + "postProcessHash": "6fef88291b4e67f7c96259984330ca2faed810fadf235be29593bb8905e29ca1" } } }, "8180a9bbc95f7896a5b8bec9f5cb42b24230107ac8c030a2418c05bd03a1e963": { "643911c6b2d8590b28a2c61ba98ceb834490af772fd9e67ed57363525875d8c8": { "es": { - "updatedAt": "2025-12-01T18:59:35.728Z" + "updatedAt": "2025-12-08T15:00:22.626Z", + "postProcessHash": "e7615d1dfaef5c15114af7477c8d4ef2b132a7cda9b6e8b4d90c79ae4820d3a9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.731Z" + "updatedAt": "2025-12-08T15:00:22.522Z", + "postProcessHash": "7129fe980f9b29e0589a3d8053283b32b1ad01f1b5c488e0987ee1249b434fc9" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.732Z" + "updatedAt": "2025-12-08T15:00:22.635Z", + "postProcessHash": "b6ab82d5f864e3b1a782648e82b7dd5ea5953dc0b646c762fc05d5c35482a2d7" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.733Z" + "updatedAt": "2025-12-08T15:00:22.638Z", + "postProcessHash": "d3bae98dbb3e3b969fda103063a6cda2312cd057e7d01cdcc16ba65bed52196a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.734Z" + "updatedAt": "2025-12-08T15:00:22.701Z", + "postProcessHash": "1d37ea4cc36f6f92809d894f94c1b3a5e85943e1152963b9d5bc7a1d64ca9c0d" } } }, "f98e46975001dd8e6ac37f39c2cb60146988f7a6fc5ea6d91dacc2b2a6aee65b": { "f2c0ed195827cf3c861533cf172add292ebfdde1439d54db15e4327fb136d964": { "ja": { - "updatedAt": "2025-12-01T18:59:35.729Z" + "updatedAt": "2025-12-08T15:00:22.627Z", + "postProcessHash": "a3acf3b3e51f00debb9edf25713dc36e462e25e738488190906c70be70e5fe84" }, "es": { - "updatedAt": "2025-12-01T18:59:35.729Z" + "updatedAt": "2025-12-08T15:00:22.519Z", + "postProcessHash": "61575f1ed9f241e866fe4fa8838bda4b858722993e34f81ac4232036d489f054" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.730Z" + "updatedAt": "2025-12-08T15:00:22.503Z", + "postProcessHash": "658540c105a84fb7e2cc41633cf0a479620944d3928e7ae6e6f65ce6d0790827" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.732Z" + "updatedAt": "2025-12-08T15:00:22.508Z", + "postProcessHash": "d32324073360de58f06c75c375babaf10fb3aadd4391da883b5393a10dd9ff8a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.733Z" + "updatedAt": "2025-12-08T15:00:22.507Z", + "postProcessHash": "5d67eb1cc3363f20f5bf904ee9a020d9c06c31f4f5678f0e3976b147dcabcfae" } } }, "e247f1286a55273489e9c0ab9dd4b6bea9e45c5c4fadfa4254422432c04c0ef1": { "a261348212f8e49673b8e288bf69029ab33d3f8091ac35389379951d3d8b3eff": { "zh": { - "updatedAt": "2025-12-01T18:59:35.729Z" + "updatedAt": "2025-12-08T15:00:22.629Z", + "postProcessHash": "84ed87498942198e569fcb63fc6fbd07feff8049359ad46c9bad0d3df1bc2463" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.730Z" + "updatedAt": "2025-12-08T15:00:22.519Z", + "postProcessHash": "59537579a892f9f6d51c0fb5927f678a21fb18517cfe62b35fec3096257d72a2" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.731Z" + "updatedAt": "2025-12-08T15:00:22.632Z", + "postProcessHash": "7a46c698b35aeaf6607c1aad642153fefcf24af1dedfc99ad8ee96bc9f0d3e1e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.731Z" + "updatedAt": "2025-12-08T15:00:22.634Z", + "postProcessHash": "49c527071e76c99b05a814d9ce5952e2a180095b0ec5f0d63662bc0a1082425d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.733Z" + "updatedAt": "2025-12-08T15:00:22.513Z", + "postProcessHash": "d22c8417d7845b985b948d8854bf2178ddafb6213c980cfaada74a4ca420015d" } } }, "346045a2e994efecaf334fde268ae3a8bb646b432d6e9ba14fe49381e26a90d3": { "61d29ec29a2d49236cc43f8c06cbe6187ff7d578dcef86429c07f496e593ac38": { "fr": { - "updatedAt": "2025-12-01T18:59:35.757Z" + "updatedAt": "2025-12-08T15:00:22.599Z", + "postProcessHash": "5be0891f578b9a0c6ffbde7a16b9c9419852445741c0e343c19fa1c7bcfce59c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.760Z" + "updatedAt": "2025-12-08T15:00:22.586Z", + "postProcessHash": "e3fdbf9680bd6bb943fffc538e7a02b03166151c42c6bc8b61952ca4a9764e14" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.760Z" + "updatedAt": "2025-12-08T15:00:22.657Z", + "postProcessHash": "8836dd878be5145a70ba47e0fca036f519e90cac9f615c92c67954f2fb570b87" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.760Z" + "updatedAt": "2025-12-08T15:00:22.653Z", + "postProcessHash": "0c3bed403baadee7058717c3248343401dce5a59a11b77eeb84b07fce716fce5" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.761Z" + "updatedAt": "2025-12-08T15:00:22.618Z", + "postProcessHash": "8e34688ffcbc5cb583fa9cf1c225291653056a7ae58ac28b4aa94a09a2db8a89" } } }, "fe2b7810edeea49c68436b3b1d5176bf9a4164f032b96095dbcfbe2ff02f66d1": { "2061483ed9920a3be0aed2e4d8b81cba8b4e6d63f59382ee8c979f8262a017df": { "ja": { - "updatedAt": "2025-12-01T18:59:35.758Z" + "updatedAt": "2025-12-08T15:00:22.659Z", + "postProcessHash": "c61d778acb31ee229737ef6f9b01d58421fdfe775bd9c90ecca5fad0e4bf042a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.762Z" + "updatedAt": "2025-12-08T15:00:22.664Z", + "postProcessHash": "25bd063da9866bada30b301fe345099bb9371e18b31aa519e56760a6e8e3601e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.766Z" + "updatedAt": "2025-12-08T15:00:22.675Z", + "postProcessHash": "37c05fb65a0d4b5d1324d78089c925c52793ab7e175a5f962190ef3868deda2c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.768Z" + "updatedAt": "2025-12-08T15:00:22.722Z", + "postProcessHash": "a08a010797c9b97bf874ddd627bae64fce4ad2b045fbc3c33f4f700325ec388d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.769Z" + "updatedAt": "2025-12-08T15:00:22.724Z", + "postProcessHash": "bee2c64eb2320e6a53a7f7890d91e950d57c931296071a5fdd32bcd12163d175" } } }, "f7aea9a9182c1729054562ad0c00ee58bf4f17c424040125f39b02819c0b44b3": { "316b8a9ef7f76cc69138d51c6df309057f09c411d7589737b4eab14d5761e486": { "es": { - "updatedAt": "2025-12-01T18:59:35.758Z" + "updatedAt": "2025-12-08T15:00:22.661Z", + "postProcessHash": "38555e00813af4e4e3abeef01a188329bb84f7f49d2eaad9e741cef770472f04" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.765Z" + "updatedAt": "2025-12-08T15:00:22.671Z", + "postProcessHash": "b154935e5671491c77bd4393d33f4894da5ecb0aef7ff771fa34552a9d44fc6f" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.765Z" + "updatedAt": "2025-12-08T15:00:22.671Z", + "postProcessHash": "249a01468af6067cf7f0bc0847dd5ef767e625380736a3b4acdac11957d10d25" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.766Z" + "updatedAt": "2025-12-08T15:00:22.672Z", + "postProcessHash": "3a87357e096678dace2e8382ccbfa548d9d62a439deaa364e43f26bb3a09caa0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.771Z" + "updatedAt": "2025-12-08T15:00:22.765Z", + "postProcessHash": "56e9b0c4a90fcb4a8e7d301880a786e7c41f97adaf4fb47529e328cbc875a183" } } }, "5f5997b275f1c599151c489f9b15009fd4ba196610a62f01f794d6caab46aa55": { "c24beacc906db64559b27b9adcd476a897255b8bbeccf67a00f83cbcb3a46c54": { "fr": { - "updatedAt": "2025-12-01T18:59:35.758Z" + "updatedAt": "2025-12-08T15:00:22.655Z", + "postProcessHash": "626e7635a0e2dee55aa8a7177ea846f741d13a90b9a60e71deb0b0256b5970a7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.761Z" + "updatedAt": "2025-12-08T15:00:22.662Z", + "postProcessHash": "66d3242666a45b402297a9266d9c635aeea8b87c8d396fb26c435af8cc60ba8b" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.763Z" + "updatedAt": "2025-12-08T15:00:22.668Z", + "postProcessHash": "0a8249bf767adebb3fc820b0c26176d745c3af0771bb5182fcd9347a2d0749f3" }, "es": { - "updatedAt": "2025-12-01T18:59:35.763Z" + "updatedAt": "2025-12-08T15:00:22.669Z", + "postProcessHash": "390d25ecb5920ff7cc5b22a5056ac1a1054d414313f4d3e91e5d10924426a4db" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.764Z" + "updatedAt": "2025-12-08T15:00:22.645Z", + "postProcessHash": "7d933ba5c7ac6b3b4cf59c3091eff407c906aa0d8a562f20ee4f76b8d2af328f" } } }, "c731cd9fd88adbc87e9b2d70eb31976cb73b472de9b4b00dc6a080b9306fef63": { "c483c26bd6c51c8315fe08b0c30a4e8bc1380568574efcac32e56876e4e0b8dd": { "fr": { - "updatedAt": "2025-12-01T18:59:35.759Z" + "updatedAt": "2025-12-08T15:00:22.662Z", + "postProcessHash": "b58612e2749708a03972f8580c43c66c4675be666670982aaa00269839e2231f" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.766Z" + "updatedAt": "2025-12-08T15:00:22.672Z", + "postProcessHash": "44d65d11663fcf63cd4873def2424bda35fb3a1c252389fbcbe34f05c2a8ed72" }, "es": { - "updatedAt": "2025-12-01T18:59:35.767Z" + "updatedAt": "2025-12-08T15:00:22.676Z", + "postProcessHash": "856bdc32a49a1b382d61f5fca965e3181a9749a68924f351acd1a001cf048752" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.767Z" + "updatedAt": "2025-12-08T15:00:22.676Z", + "postProcessHash": "3dc40afe11fbd3a5e0359b12ae1b61e9b50ce11db23051fbf5992d107258985c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.768Z" + "updatedAt": "2025-12-08T15:00:22.652Z", + "postProcessHash": "2e7112ab4fe7c14886964ecc950146105d558a201ffa7cb50ced2b5259bb6ea0" } } }, "44698db2453189a1b3a005a827421e7beff0aec857e7491e7b73d8e6e3bc8260": { "80efeb3f0c445a232aaf22475e008c275df259e143fb4a6b24c8655a6774c74c": { "fr": { - "updatedAt": "2025-12-01T18:59:35.759Z" + "updatedAt": "2025-12-08T15:00:22.602Z", + "postProcessHash": "0916935e0c9c9ab0face3735bf1a70f7df2f173ab0d1c5170f7653dcafd73c4e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.761Z" + "updatedAt": "2025-12-08T15:00:22.619Z", + "postProcessHash": "1ea2bc5326b95bd21688e9e22de73c380d0e266280ec4f147e32e20d8f446ae9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.762Z" + "updatedAt": "2025-12-08T15:00:22.620Z", + "postProcessHash": "72fefb2cba0241ababb90e236b60ad66e2f32ba71689ffe3c5fa27f3713773d4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.762Z" + "updatedAt": "2025-12-08T15:00:22.622Z", + "postProcessHash": "5b7647e649e7e2702ee897752f7cedcf63e5afa59ff7f9900230187bd7d73ef5" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.771Z" + "updatedAt": "2025-12-08T15:00:22.680Z", + "postProcessHash": "7427fd034e26c3f847eb473658395f897c0647fbde862d11f6595fe659b11d6c" } } }, "9a17e6626cf6e71912afddfea52348ac692a08295d63a4d9bb1b520e59ac96eb": { "199de2894f4bbc53237fd32b9ccf45e2b72fdabe64fadf8130341538d83e8369": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.740Z" + "updatedAt": "2025-12-08T15:00:22.627Z", + "postProcessHash": "aeacc637370ce44fe0ac84a658e375c1c4a5e7d520f0287a185df0723924a2f5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.744Z" + "updatedAt": "2025-12-08T15:00:22.630Z", + "postProcessHash": "1868f2902f3df3a647fcd5acce9f30007a02868f958bf2e6e2043b4d754ec1b6" }, "es": { - "updatedAt": "2025-12-01T18:59:35.746Z" + "updatedAt": "2025-12-08T15:00:22.632Z", + "postProcessHash": "6832d261a3875b4ab581f25bdea74b51f9caa73379089468cc1d49ef3eb4d5f2" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.750Z" + "updatedAt": "2025-12-08T15:00:22.592Z", + "postProcessHash": "c9da6b50632ca9a527cb8290cf455ea25e3d1b6df810de48c40ad0a6b15003c7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.754Z" + "updatedAt": "2025-12-08T15:00:22.641Z", + "postProcessHash": "eb560e214c312cd98f0257b439aeb29be26cd1f2d4b1ffced938fb3c146f93db" } } }, "3a43c282741f0903aefc8dc6553e7fc0893b32f73d6355cae8e7a29dee808185": { "7d179de0710755cb9f7237ab9372586677599148fd8c121bbd184926f66bbd69": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.741Z" + "updatedAt": "2025-12-08T15:00:22.520Z", + "postProcessHash": "20a4ed3b7be2291183a8caf1f4ca7efa368e16584d78411405255e73bf327233" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.741Z" + "updatedAt": "2025-12-08T15:00:22.628Z", + "postProcessHash": "7962f9deff38b75efc8348634200c12891be26b60b8608f0e0ad60d12c377579" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.751Z" + "updatedAt": "2025-12-08T15:00:22.509Z", + "postProcessHash": "221ec545e0dd24d0e12a2c5a3e6e7bef178af88d91d8f65f0771fa834a1b4250" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.752Z" + "updatedAt": "2025-12-08T15:00:22.505Z", + "postProcessHash": "86d44c2f1177ac9fbb3bb1232e43fe84166798c78e02fcfb369f904337c1a773" }, "es": { - "updatedAt": "2025-12-01T18:59:35.756Z" + "updatedAt": "2025-12-08T15:00:22.701Z", + "postProcessHash": "b197e2f664c8ac48b036d2f75a46ba33192539af39c028c9e314f04266fe97fd" } } }, @@ -19859,798 +20549,1008 @@ }, "f254860d97455864992d1128b8018c7d85b3817554c508133b5c1b4b6479eaf5": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.734Z" + "updatedAt": "2025-12-08T15:00:22.583Z", + "postProcessHash": "989687a3ba295ba8eb978291c8a4db3fc42e784348b171e3dd6133cf27e6852d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.734Z" + "updatedAt": "2025-12-08T15:00:22.590Z", + "postProcessHash": "d9b1c298e002a35ec85253253eae0499e4636ee2aba6482336cb7731abb0173d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.735Z" + "updatedAt": "2025-12-08T15:00:22.583Z", + "postProcessHash": "1314e0ea34a78030da38e2f9ed78ea6be57178052673bce3f8883b1fc74fe9ef" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.735Z" + "updatedAt": "2025-12-08T15:00:22.586Z", + "postProcessHash": "78fd790bddb6aca6e8806fa3dcdb1c2b6788161bf9de33a019c4715a92cfd648" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.736Z" + "updatedAt": "2025-12-08T15:00:22.598Z", + "postProcessHash": "375ec9f67634e70e1f583f0c9150cbc8b50808b1d2ffe60311c199fb43a55151" } } }, "1b5dc43ea416aa863cf6c6ee913c9a84e8636e519655aad5a103052630c35571": { "7cff75dff5ada56f04992842ea07e86eb0820c47024aaa5bd5ca115aa6c265c7": { "fr": { - "updatedAt": "2025-12-01T18:59:35.742Z" + "updatedAt": "2025-12-08T15:00:22.628Z", + "postProcessHash": "e438c7572c1c9f79e133121a42386ad07871c189ad508daeb7c9a1c36fe3ee55" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.746Z" + "updatedAt": "2025-12-08T15:00:22.633Z", + "postProcessHash": "3b924aa744b6ee4bbf625e2765644d564c233c7e1df18c0e0bc116107a7337a4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.751Z" + "updatedAt": "2025-12-08T15:00:22.639Z", + "postProcessHash": "1c0e487aa8567d6240f4c3ba2f4bfe1de5ab493697e6b1eb36e9ca45ed4e9e37" }, "es": { - "updatedAt": "2025-12-01T18:59:35.753Z" + "updatedAt": "2025-12-08T15:00:22.515Z", + "postProcessHash": "deb4326e03b6aea4e128fa575643e1d41c0c6d567879149b0ad49ba617e0ed60" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.756Z" + "updatedAt": "2025-12-08T15:00:22.703Z", + "postProcessHash": "9476f4f423a726537b698b5c66c721d4ea2d5291eb61a1595a6ed19e5447905f" } } }, "2993a410367f9511193d512a47e6483caef2a554ea01ce81b549bf733d30162b": { "5ecf05c9852cb954ad5c4083952e65d3acc913a5e6314cdf2bae4b62a8f8b95a": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.742Z" + "updatedAt": "2025-12-08T15:00:22.510Z", + "postProcessHash": "a64b4b09caa35d89e78f0dc68f285e8ac5ab9837cbcf3f29bf31b0f293b148ce" }, "es": { - "updatedAt": "2025-12-01T18:59:35.745Z" + "updatedAt": "2025-12-08T15:00:22.631Z", + "postProcessHash": "8b4999ad5f3b5c80892bfae6e0d005648423359c825bb25f6edd67c1a57e5b1d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.747Z" + "updatedAt": "2025-12-08T15:00:22.590Z", + "postProcessHash": "d54ef56623e77b6e458c2b7131b3c676bd0d0c16186d677645d6fba1a7fb2794" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.748Z" + "updatedAt": "2025-12-08T15:00:22.593Z", + "postProcessHash": "314c9b88e21fbf8d5eed28235c2cb7f6d20bfc74a20217602a9aad2199c12f72" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.751Z" + "updatedAt": "2025-12-08T15:00:22.523Z", + "postProcessHash": "31ed69fd5f0c6284aa53235c3d9d4ef6bec1c1f9f8c0db0d1d4bbd0eda5d43f7" } } }, "b2b5bbeadb7915cb1467995c7fe639d3f5e325f34d0272e5e558d253fc16bf7a": { "0ac983c3ae48100a9b4573cda2f7a244430fa716f50ea30eefdc8251b22ddbfb": { "ja": { - "updatedAt": "2025-12-01T18:59:35.743Z" + "updatedAt": "2025-12-08T15:00:22.685Z", + "postProcessHash": "44bd75e58291add49eb69bc0efc9e0fc8eb4e9209b7636ddf6a083a5822fdd3d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.743Z" + "updatedAt": "2025-12-08T15:00:22.687Z", + "postProcessHash": "9f3e86f056ded182e231beb139ad61f2c2781324e94ab95d2b0265e982e1d11a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.746Z" + "updatedAt": "2025-12-08T15:00:22.689Z", + "postProcessHash": "9d985f64a30a6172b2ae31b183251604c04a57f7d6a0a78cc245fd7a1c968c6d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.750Z" + "updatedAt": "2025-12-08T15:00:22.691Z", + "postProcessHash": "45d11c7f697225553ffee8f992b41e71958995d64521064107f89442f31372ee" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.755Z" + "updatedAt": "2025-12-08T15:00:22.697Z", + "postProcessHash": "117756f7ffd51d8675c747cad7ac91937b07eedc58426d06192beffde085968e" } } }, "25fa5052f60d4bb2c211b0052e4e6261ce7ab5b13ca0bf37a26e130fa2e8510d": { "4e79342c5d8ab164c6cdfbd12f521df59caf5c66c646090b8a51edf3da8dbfab": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.744Z" + "updatedAt": "2025-12-08T15:00:22.587Z", + "postProcessHash": "7835cf26e23fc4a10c782c71a0c0efd8037c5120f56866486e172a8b44d772ed" }, "es": { - "updatedAt": "2025-12-01T18:59:35.748Z" + "updatedAt": "2025-12-08T15:00:22.690Z", + "postProcessHash": "63b847a0c4a1b23af532162d6df82c086dc5fb2f8cc27a33440c10281ac441b3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.755Z" + "updatedAt": "2025-12-08T15:00:22.700Z", + "postProcessHash": "535ec20987524bed86a316fed3c8450d959d6c24a6a50c555d67ef7334b7b1b4" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.756Z" + "updatedAt": "2025-12-08T15:00:22.703Z", + "postProcessHash": "8ba09a5de4cee31aa138877b1ecb7b2ee9330ea9fcf070a3229dac184e559bad" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.778Z" + "updatedAt": "2025-12-08T15:00:22.702Z", + "postProcessHash": "7db3dec71cf8d68d81ffbfde17caf65390d00dc709aeba4a933bbbb6387e29b4" } } }, "e7c01af279ece91a4ebc22f563eb0398a9e574adb4630e6544050324e6a5eccb": { "7f60153456ba75984829e43279a6e010afa32da4950aa83af0e65dbc3196759f": { "ja": { - "updatedAt": "2025-12-01T18:59:35.745Z" + "updatedAt": "2025-12-08T15:00:22.631Z", + "postProcessHash": "4e890d60674be299f6a258a21f1982d59f66d71bf4a67d803a0963269f36f3a2" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.749Z" + "updatedAt": "2025-12-08T15:00:22.636Z", + "postProcessHash": "cb425812d467bcea025d7b086e78a06f09081c13bc53eddd7457ffc6d80ee76e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.749Z" + "updatedAt": "2025-12-08T15:00:22.637Z", + "postProcessHash": "c794558a39a868f25b6143737c31a8324ae5e618d98d89457d8d95f3156f1a08" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.752Z" + "updatedAt": "2025-12-08T15:00:22.640Z", + "postProcessHash": "f8761d8257af439154c6a3cce478742bab684e924023d3d9fbb1cf9d1a433e3e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.757Z" + "updatedAt": "2025-12-08T15:00:22.593Z", + "postProcessHash": "fd904d3d22c4f88ba48e629f77ed6409eb79af7ad67a16ee9c1a04fb01e1f2aa" } } }, "22407e409d56846e612221d3fd560a977b954819107e592fb53d58f4b7e9c6b9": { "e914c23a2577b03849a79927d92a135a0236897ef8a317dc487b79da1e625a5c": { "fr": { - "updatedAt": "2025-12-01T18:59:35.747Z" + "updatedAt": "2025-12-08T15:00:22.633Z", + "postProcessHash": "a6b55b792673690082c165072d4d8bdb574ab6bbc161857798238b6637bef1ef" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.749Z" + "updatedAt": "2025-12-08T15:00:22.637Z", + "postProcessHash": "8d91d24b10cc67a25b38e18d473516f47d4ec989ae924c2fbaaa94d7135b67d2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.751Z" + "updatedAt": "2025-12-08T15:00:22.639Z", + "postProcessHash": "00bc2bdf13ba49f8b1b1b7fefa7fe26de0cafd9d4903877f6784651fd38a1d9b" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.753Z" + "updatedAt": "2025-12-08T15:00:22.640Z", + "postProcessHash": "b086767667cb478de45366c46257514a49d0c95999b4c74c7d65a1122741f885" }, "es": { - "updatedAt": "2025-12-01T18:59:35.755Z" + "updatedAt": "2025-12-08T15:00:22.698Z", + "postProcessHash": "adf17e1354150f068dc288912233aa46e5e77c383d789e11c16ad249fd18f029" } } }, "14ce0f2766d357ea642052d4d652e0b447d5bdc4057e1d69bea42e003f5cfe1b": { "25ad913c4cffb0a29f3fe5574c194d162a1620a0c13ab259487b49572d0b7398": { "ja": { - "updatedAt": "2025-12-01T18:59:35.783Z" + "updatedAt": "2025-12-08T15:00:22.659Z", + "postProcessHash": "2267cc7dc58d1cb3052267ac43d0da1904eaaf79e16ca29a4ca6417c1a34030d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.797Z" + "updatedAt": "2025-12-08T15:00:22.648Z", + "postProcessHash": "5e3597352c6f69e7be925bdd364a83ff69422ac9b45e9c60a5345391fb75e2df" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.797Z" + "updatedAt": "2025-12-08T15:00:22.720Z", + "postProcessHash": "18ae36ebaefbee6e8033c57b4b55258a259c69bdbab4521eefb51bdc2ed54400" }, "es": { - "updatedAt": "2025-12-01T18:59:35.797Z" + "updatedAt": "2025-12-08T15:00:22.648Z", + "postProcessHash": "257f4568ba994a9a05d18a1663986054b7b49ae6bdb95b6fa8a33b547a4cdce7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.800Z" + "updatedAt": "2025-12-08T15:00:22.651Z", + "postProcessHash": "6f37c2307d8d4b7d9ea432074b54640b0dcb90a26ff786389098147eca9069da" } } }, "acd364418189abd287db9f16ad05f144016c9d43a16d00ff4160a27fc8b83cfc": { "0e820f03ab7344bcc41b929122a426482a264fa86934ea5b3984342ca55c4613": { "ja": { - "updatedAt": "2025-12-01T18:59:35.783Z" + "updatedAt": "2025-12-08T15:00:22.660Z", + "postProcessHash": "c205bb803658aa8ccdd4da401b24ffdc4b16b871311042652b4ccab6a9f1b3af" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.785Z" + "updatedAt": "2025-12-08T15:00:22.665Z", + "postProcessHash": "ff18da197ba73674c345dc993bbc3b09e5e13e8863f045182fcb7f15eb6efc7b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.789Z" + "updatedAt": "2025-12-08T15:00:22.673Z", + "postProcessHash": "5473cde5b8f2e346b862155c50671ca8e6198d27df5a2eb8df0639e1c1950cc0" }, "es": { - "updatedAt": "2025-12-01T18:59:35.792Z" + "updatedAt": "2025-12-08T15:00:22.677Z", + "postProcessHash": "efa161ebaf63ab370ce7befecea31a0f96ca756fd9efdbd7b48508fd14db497c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.795Z" + "updatedAt": "2025-12-08T15:00:22.716Z", + "postProcessHash": "fabae7f8059d01f13b1fcd39bbb74c29ac8489f8dad883a01b3b81113ea3f20b" } } }, "6421dc967b2696fcae96e76106da5650fc0defec64ae8cd1261de6e1b8a06a11": { "b15dbbdd3db5ba6521f731ea225631b5aee1c0ed00836eed85f413b599d9489a": { "es": { - "updatedAt": "2025-12-01T18:59:35.784Z" + "updatedAt": "2025-12-08T15:00:22.660Z", + "postProcessHash": "4587cdc5182ac340bca538e31c6bd8df49f5b09ad93bb50db868c557568b1c88" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.787Z" + "updatedAt": "2025-12-08T15:00:22.667Z", + "postProcessHash": "83254776b167da2e34a858baa4dc71e64fd79d5fff41d9605073d28c2fdac7ed" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.793Z" + "updatedAt": "2025-12-08T15:00:22.714Z", + "postProcessHash": "ed58866d7312f60a772587618cc9fa1e9de475a09548af2816b72812ed4bfd26" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.795Z" + "updatedAt": "2025-12-08T15:00:22.716Z", + "postProcessHash": "8602bcd75b86d70993a7eab24ec0362cc062c4a76d3fdf0484834ef204cd14e2" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.796Z" + "updatedAt": "2025-12-08T15:00:22.718Z", + "postProcessHash": "b3b8852b130aada6ead1f7c1bb472e7de16199cb85be3671abc7d0b82e75edfa" } } }, "fb2175b9742ce7665c22b4591db4531e6219e51d65732cd3db4ec091a08c51dd": { "0d221fc5caad7d8cec4e53248f90114417aaf17876e99845360251f680fecaa0": { "ja": { - "updatedAt": "2025-12-01T18:59:35.784Z" + "updatedAt": "2025-12-08T15:00:22.651Z", + "postProcessHash": "d3354851f876b32905ceb59d6f342e9ff0bf704266ea2a23026ad82d282220a1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.787Z" + "updatedAt": "2025-12-08T15:00:22.656Z", + "postProcessHash": "aa8f430718f89cbe948652f4477dbac3360a4697c4fb7e54b013cd85c144e234" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.788Z" + "updatedAt": "2025-12-08T15:00:22.654Z", + "postProcessHash": "01a886ea2f1e696f5cbd18a162b15255e3d6e4b5104472929e8fe4cad02ef0b6" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.791Z" + "updatedAt": "2025-12-08T15:00:22.649Z", + "postProcessHash": "618a69478460a6b3efac65f7632e06a48e159e52e87f9089d6a2ed6747dd4154" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.796Z" + "updatedAt": "2025-12-08T15:00:22.649Z", + "postProcessHash": "319a3658156f700f4b64bd90b54b51dd9785cbce3daaa2c10d60fbb91147790a" } } }, "7c44c14cd024bdfa8c239655f9979bcdd5e951c7f0ad962e4908c463dcb7ff2a": { "06523c190fd57a3511208a1eccf5629e50f06bf896f877d2e423d441404b2c0c": { "fr": { - "updatedAt": "2025-12-01T18:59:35.785Z" + "updatedAt": "2025-12-08T15:00:22.663Z", + "postProcessHash": "de84fa07bf188e7e0c8e92ec6e0cd25899f743ff1cc4347073770d42ecaba256" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.794Z" + "updatedAt": "2025-12-08T15:00:22.715Z", + "postProcessHash": "213abcd461f36b41e2786d0b2b3e072edf580bb07d9914cd3d52daafe3856381" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.795Z" + "updatedAt": "2025-12-08T15:00:22.717Z", + "postProcessHash": "16b096231b943789bd109fc2d03d0f792fe177aa06551347578f460b3ee340f8" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.796Z" + "updatedAt": "2025-12-08T15:00:22.718Z", + "postProcessHash": "3605a220a4e74f6d8b59926656596373770a6902de4d928c29ec4e5f505e36b1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.799Z" + "updatedAt": "2025-12-08T15:00:22.734Z", + "postProcessHash": "0c4eb98a509df3ca73ccf7ecc37a7893c6b242a63879f0e4d6628db7c47c7e72" } } }, "80d50bb850c2ccbf674d9fd64c1c052b5a65d8d8efd440120c27947c74851f45": { "72570f8f710b3ad2875f5ac0730e5840e2483fe195e6231c830b167cb0d53803": { "zh": { - "updatedAt": "2025-12-01T18:59:35.785Z" + "updatedAt": "2025-12-08T15:00:22.664Z", + "postProcessHash": "6f3a2ea6d0a5e0e5553d133e9e0ed5da8667249c064b7af2b2aa1ae5dfa364a3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.786Z" + "updatedAt": "2025-12-08T15:00:22.665Z", + "postProcessHash": "88462121973a479f42b8b207c83ab2308cb70bbaea34736ba5fcbd9b0a471c12" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.786Z" + "updatedAt": "2025-12-08T15:00:22.666Z", + "postProcessHash": "4927da2fffafa8fc419a5aaa53102aba0cfd23c2e8ab2f45e663b9496950ad67" }, "es": { - "updatedAt": "2025-12-01T18:59:35.793Z" + "updatedAt": "2025-12-08T15:00:22.713Z", + "postProcessHash": "6cc7a07c9aa6fcda3f76c3308a368f76dde9f38050fa22a1effb8f118f34b071" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.802Z" + "updatedAt": "2025-12-08T15:00:22.761Z", + "postProcessHash": "f53f7af80839c67b43297c292396b710e12bccfaeb3d4c9704e91f4a1316fbfe" } } }, "226d3d709d7e4e9b62a2525dfcb47158888777b270bcc5ca7df74a157baeae71": { "11f8fc77880e04df0436842207675cb9d98874e44052c5f1f3a686d79f489835": { "es": { - "updatedAt": "2025-12-01T18:59:35.786Z" + "updatedAt": "2025-12-08T15:00:22.667Z", + "postProcessHash": "6b46c463b2dae90ce378726bae48d7204d720ef4cb4a316086d96d4b0e42cf5f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.794Z" + "updatedAt": "2025-12-08T15:00:22.715Z", + "postProcessHash": "221d03e7a929ebe0a57697acb17aecc4fd93f17904750711af09b26693f5463d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.796Z" + "updatedAt": "2025-12-08T15:00:22.719Z", + "postProcessHash": "c5a7f5ce769675ca7c0816da49507a24c83d180208e2e6ab0b701af1967abc40" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.797Z" + "updatedAt": "2025-12-08T15:00:22.721Z", + "postProcessHash": "4038b514d96691c49f156392f8678a50fc7de23609399677263d12f250384ac8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.803Z" + "updatedAt": "2025-12-08T15:00:22.764Z", + "postProcessHash": "282cb80ac3280028832b77c2b56d89deb2f9412de7569cb0324b2fe104f3701a" } } }, "68956fb53b28cd5c7a28fe4c34d55da2d9d248cecd8a2b951f0178fb7a7faafb": { "37f4508d29e28f20f0609659fec9f50dca783cf6f73cec4021d64237fba0619d": { "es": { - "updatedAt": "2025-12-01T18:59:35.764Z" + "updatedAt": "2025-12-08T15:00:22.669Z", + "postProcessHash": "9087ea2766e6f1e85bff6f6e89e7477aa2e508f0cd16c7abe7611c0d06ce3e93" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.765Z" + "updatedAt": "2025-12-08T15:00:22.650Z", + "postProcessHash": "7a080a93b2844c6db456eed0b2509b31ebccc37cbd805bcb787b7451ce24f2ad" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.767Z" + "updatedAt": "2025-12-08T15:00:22.642Z", + "postProcessHash": "ada433b4d020d5ed8b12c98e02aa44abd5cfb387b211e23da8c04510fe67d950" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.787Z" + "updatedAt": "2025-12-08T15:00:22.642Z", + "postProcessHash": "cc218bd752307812c51518d411c68828aeeeae5494faf446692d8fc8cd245125" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.790Z" + "updatedAt": "2025-12-08T15:00:22.644Z", + "postProcessHash": "dedeaf4849b65a029bc5adc4064f01c11da36f1488afa0544a7d7da5e48155a5" } } }, "80007ead86c029fd89cef2d6526091e7f196622ccc35dc04369a36055c7d6763": { "92e2e9a60d4accaae197e9f622ca368cc4ebc3d6ffb2a460e44b512c76d96fa0": { "ja": { - "updatedAt": "2025-12-01T18:59:35.769Z" + "updatedAt": "2025-12-08T15:00:22.757Z", + "postProcessHash": "ffbb17c3ce1d0fb20c39909657c548bdb75af41b1c823ead3527e25709134cfc" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.770Z" + "updatedAt": "2025-12-08T15:00:22.758Z", + "postProcessHash": "84fa300ea7bb96660ae78362412aa8f7a1ace2334e6176c76ae73bb869200332" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.770Z" + "updatedAt": "2025-12-08T15:00:22.759Z", + "postProcessHash": "39c08fbdcade3f46ff516fb57338cedcce617e3f8edd77113c0f904262015624" }, "es": { - "updatedAt": "2025-12-01T18:59:35.770Z" + "updatedAt": "2025-12-08T15:00:22.760Z", + "postProcessHash": "2d806fdca939e2ecbbf8607f43734fa02752c13887d54657796af22315d6e68b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.771Z" + "updatedAt": "2025-12-08T15:00:22.764Z", + "postProcessHash": "7165807c08c5d2dd6a96deae0d83e7488928f07a4d19037f985b2ff2161a386e" } } }, "43450b8d5cad81dbed5bd3f0f84ab6ecea0059ae503bfc7f042db9f227d1aa5c": { "c2348cac20bd18bcc68b267a3ff9d32d0b10d6ac07978aa876c6e535da8c866f": { "es": { - "updatedAt": "2025-12-01T18:59:35.772Z" + "updatedAt": "2025-12-08T15:00:22.682Z", + "postProcessHash": "1b64e8c42e112540328a734c5ee2b8e371845348c27288bb688610b93ccba7bc" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.772Z" + "updatedAt": "2025-12-08T15:00:22.682Z", + "postProcessHash": "ca8e393602b548971c9c5d5783c397d9af7724d04ff23ef15f1421b163de27be" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.775Z" + "updatedAt": "2025-12-08T15:00:22.692Z", + "postProcessHash": "1c215be8d262ca2ca10315d423b2a7262b14b33e11238e59d34af60d31f7dc59" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.775Z" + "updatedAt": "2025-12-08T15:00:22.692Z", + "postProcessHash": "698f3db0f9c81ad93728f7277c1138945440b5cd93547cca4ef1e748ad54c295" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.776Z" + "updatedAt": "2025-12-08T15:00:22.694Z", + "postProcessHash": "8f53cf487c9f469e386463afb7af94b750d83c4e0826f267362bb84b97a7fdbf" } } }, "bc37e26111fb53170382d184ec4103922edb3ae1f3d34ebd94138a48731ed5d4": { "3c693a9416c98cf065e9bb6fa66922c5d430c2660220987ac4715e1ff674f589": { "es": { - "updatedAt": "2025-12-01T18:59:35.773Z" + "updatedAt": "2025-12-08T15:00:22.683Z", + "postProcessHash": "40fed1ea46f1f15ef18f896dc30bbde9e3e2366699d4d11c9b3e8e53289b8314" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.773Z" + "updatedAt": "2025-12-08T15:00:22.684Z", + "postProcessHash": "3f36c94fa402703273dea833f8d62399d7e1e887948104637c978c7f59e65a15" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.774Z" + "updatedAt": "2025-12-08T15:00:22.686Z", + "postProcessHash": "106be58da9c98f63432b5f047cdb6e2d258eac636f89c5c4947cbaa8ea2e4a42" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.777Z" + "updatedAt": "2025-12-08T15:00:22.695Z", + "postProcessHash": "66b9c3bd0e3311d405bc058a3862858cbc9dea643e03b8c3eb78714c53c4c46d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.778Z" + "updatedAt": "2025-12-08T15:00:22.700Z", + "postProcessHash": "0fcbb7ae3880f65a00274c6b59c75d475f59f257a42c07cc96a3ad01aaacd3e9" } } }, "4ffa5a7b93d295bd6dd5606e1edeaf905bc12c4dc1970a5172a88518773c12b9": { "778ffcdccdd87f3c35236921d82e33aff0d87239d8d59331450c50b87dee434d": { "es": { - "updatedAt": "2025-12-01T18:59:35.774Z" + "updatedAt": "2025-12-08T15:00:22.687Z", + "postProcessHash": "ca06f844f539a560ad4602811fc974c4bba5e5eff2ef4944da9c89046e139694" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.774Z" + "updatedAt": "2025-12-08T15:00:22.598Z", + "postProcessHash": "25f8bc3f1bf5e20fb16a883a5b858fc796b4977ac6874bc0e7dccb60d23a293e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.776Z" + "updatedAt": "2025-12-08T15:00:22.693Z", + "postProcessHash": "c0f00022aabbba81ff35c3b9ab02a02bdc14a0a8a2c06cd5a37f140cbbcca025" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.776Z" + "updatedAt": "2025-12-08T15:00:22.694Z", + "postProcessHash": "6da5963dfb1e05ac825a380f040409e819332b7cf851b3c3e81c972bc292056e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.778Z" + "updatedAt": "2025-12-08T15:00:22.699Z", + "postProcessHash": "dbca268cc7ae3128a0ec71cde309a3a5d803292095708c881135ca7702d6931a" } } }, "b697641714cdac1921aa0e243803055b2234d82c0d9ba33476971899a46f90f5": { "b00e64aeb062a14ad504131cdef8a4783461b1ba1900a978e4766c6902476640": { "es": { - "updatedAt": "2025-12-01T18:59:35.774Z" + "updatedAt": "2025-12-08T15:00:22.689Z", + "postProcessHash": "a1836c36e78d406bdb9a7c904c1c9bafb8de40c5d2553bad58d702744fa6b429" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.776Z" + "updatedAt": "2025-12-08T15:00:22.588Z", + "postProcessHash": "46046ba6d6165873fe49c6fdde2d4c89d72debf34abbfa0feb373fa775dab96c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.779Z" + "updatedAt": "2025-12-08T15:00:22.585Z", + "postProcessHash": "8d82f553523edcd05b19e2b6babe7d344418741a3c521d582d1016234d31c29e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.779Z" + "updatedAt": "2025-12-08T15:00:22.704Z", + "postProcessHash": "e11706f56d9add287151b1487c89745d3a1ff565c59b2a943c99240b8b860392" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.780Z" + "updatedAt": "2025-12-08T15:00:22.584Z", + "postProcessHash": "d4256614588e18057555f49aa6b4a726882beabc330f8adde2ac29fa2d68efa0" } } }, "e0f105568ff656a1b37b2db965a3455781b2c1aca4ec146a8731a8149eb5f0b3": { "053a2dc913042851fa0a3191fc2556c0fd3d92762ddfdda30b71639ebc9717f3": { "zh": { - "updatedAt": "2025-12-01T18:59:35.780Z" + "updatedAt": "2025-12-08T15:00:22.704Z", + "postProcessHash": "1e036448f8ace8ca8c3412bc87f36617d1f2eb7679cbde92f2c970f13730829a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.781Z" + "updatedAt": "2025-12-08T15:00:22.595Z", + "postProcessHash": "8e4f2a56ba0494ecb366601601923e85005bc63c344d6a17f72d2cbb355f6727" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.781Z" + "updatedAt": "2025-12-08T15:00:22.591Z", + "postProcessHash": "9b8610328ac77948d539bdc141ec4ce8b42637e2a75f51478152f5cc4be5ebf5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.782Z" + "updatedAt": "2025-12-08T15:00:22.597Z", + "postProcessHash": "84c005ff10711219d866866b1b644abe4f497af3810f8842bef54e7eb573efb5" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.782Z" + "updatedAt": "2025-12-08T15:00:22.589Z", + "postProcessHash": "7be87bb6e04d70c188b8eb2a1aa118214664bea84e05c3b88f0ef1ad8c72568b" } } }, "3dc47bfea9ffbb84b7b58ef80c88297f44855a73d7707e5814ee5c871c5ab51a": { "f0b6b3dafb154a8098955fb53b94698eae2d28a862c7310f977e7a596de6874d": { "fr": { - "updatedAt": "2025-12-01T18:59:35.805Z" + "updatedAt": "2025-12-08T15:00:22.657Z", + "postProcessHash": "3356cde752e5b942af4e09c076e4a2e9a50727b726f6f7dec111e3b5fe5e889c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.806Z" + "updatedAt": "2025-12-08T15:00:22.722Z", + "postProcessHash": "6714d5bde2c321c5f109356c2ba726a74174d00230d3da476db45b639d5c5184" }, "es": { - "updatedAt": "2025-12-01T18:59:35.807Z" + "updatedAt": "2025-12-08T15:00:22.725Z", + "postProcessHash": "457a0bda13d1121c532b4791ff6799c1904ddb0b4906e61ffd2856b7908224d8" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.809Z" + "updatedAt": "2025-12-08T15:00:22.729Z", + "postProcessHash": "bdb1cab86cd5aea7f6d23eeeedd13a67a81348e4b0428a4d32318bbbce2789bc" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.810Z" + "updatedAt": "2025-12-08T15:00:22.732Z", + "postProcessHash": "b591c92e0112109d0aaa9a0e6dd518e70ef4b2eaba053f6735fc25248bff488f" } } }, "c844627fb58e8978734d227ef5e5dac3db59fe89d9ee75337f0cc6b085b80b8f": { "5a6fd321bec7935ebb9e8a91236b36f4753440dcc87193db14de4dd8b759db28": { "zh": { - "updatedAt": "2025-12-01T18:59:35.805Z" + "updatedAt": "2025-12-08T15:00:22.658Z", + "postProcessHash": "121333ce6dc1aa2f68a05634f69c1587fa1d861748a14dd871ce11f8bf84d97d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.809Z" + "updatedAt": "2025-12-08T15:00:22.730Z", + "postProcessHash": "5a80694e744e30d0c0187a5c065ed1a03a0d9292390f833b1af74dfc1e8c3c97" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.810Z" + "updatedAt": "2025-12-08T15:00:22.734Z", + "postProcessHash": "8bf197f891b8e9d66150d3c3f3131da72ff88a79484f28f3a938cee104ed79e2" }, "es": { - "updatedAt": "2025-12-01T18:59:35.810Z" + "updatedAt": "2025-12-08T15:00:22.736Z", + "postProcessHash": "7217d903633d14a087aeafe08141304bf7264d595550dc02790477c143b767b1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.811Z" + "updatedAt": "2025-12-08T15:00:22.737Z", + "postProcessHash": "5ee7270310091b319f90b3ab0274cbc82163bf688027197a2ed5383b7c402539" } } }, "013ebfbfe19cb8e15cac1bd561521e54632813d9fa8654711ae52b5cf4607bb6": { "a8375e50698df2ffdadf25634ab281ffa765f4e515094e0b0ed5361b0edbd14f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.788Z" + "updatedAt": "2025-12-08T15:00:22.670Z", + "postProcessHash": "2efc5d27e0d247ef3387853d9f2734e9c35fdd7525f50bbc6ee4f5b4801223ed" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.790Z" + "updatedAt": "2025-12-08T15:00:22.675Z", + "postProcessHash": "81f125799179cd01b6dc8d9ffe3b5f1a14080aa82de6628cd09adb0cec96d205" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.792Z" + "updatedAt": "2025-12-08T15:00:22.678Z", + "postProcessHash": "a6cb969cc29d30d23fce268416a794fbdf6fd65980d1f7d8e32608f6ae4b1741" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.793Z" + "updatedAt": "2025-12-08T15:00:22.713Z", + "postProcessHash": "681182b69fdc1010a137ef502e6782220d1fc55ae477b5ebb4cf991599b49073" }, "es": { - "updatedAt": "2025-12-01T18:59:35.803Z" + "updatedAt": "2025-12-08T15:00:22.762Z", + "postProcessHash": "6734b60fe8e8a4011faee4ab9e0eaffcd917a675db1284fc075fedfea579f36e" } } }, "0a45eac53c222f89a3e81d3763fd8b6a7ce349f6f1efd23644b0516034892a83": { "d54c2565811c7218130a06acc20e0bd4fd02ae44464b635479b66c1996d7c4d4": { "fr": { - "updatedAt": "2025-12-01T18:59:35.788Z" + "updatedAt": "2025-12-08T15:00:22.656Z", + "postProcessHash": "8c03615db64bb9bf5b25c6cbb50e38bb7c9d0de43d7c8b550c2a6a5e083de13a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.789Z" + "updatedAt": "2025-12-08T15:00:22.673Z", + "postProcessHash": "a3261bc71ee29af8d388e5627771787c2c72467b6704e04d284bd3ea6c6ca20a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.791Z" + "updatedAt": "2025-12-08T15:00:22.644Z", + "postProcessHash": "88a33cbf41d3c798d89365591566200a031605379db12dd4c57644c235b74424" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.791Z" + "updatedAt": "2025-12-08T15:00:22.646Z", + "postProcessHash": "86651ce031230788f46a78d5cf68ac49bfa2c3b8c1274870f62ed67d191c11ec" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.791Z" + "updatedAt": "2025-12-08T15:00:22.653Z", + "postProcessHash": "f1371dbd03afb3279d43e065b162f177d3352112e87af40c6a0d78c95e3f1cec" } } }, "2cf9bbba900cead73f449eb41b7b1e1c43549dad41c046d393050ceeaaac7da8": { "858b8794b956f345efdcc07fd699f6f43f44adc2fd1a097a24ea097994e0b4ff": { "ja": { - "updatedAt": "2025-12-01T18:59:35.790Z" + "updatedAt": "2025-12-08T15:00:22.674Z", + "postProcessHash": "e9d11401607d7fae09250c9b5235ad9e2b34e411c869d595ffa2bf3adbcb866c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.792Z" + "updatedAt": "2025-12-08T15:00:22.679Z", + "postProcessHash": "a714ee59590ec02843f78befe9930b454d630bd47a51ee70bb5cef7f85775ead" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.792Z" + "updatedAt": "2025-12-08T15:00:22.679Z", + "postProcessHash": "9d612ebb52096ef46ec378eadd00afc1ab0148402354ee6708c390a19d080361" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.800Z" + "updatedAt": "2025-12-08T15:00:22.751Z", + "postProcessHash": "84a691eb10844fabc5c3739fc98377520f4336da30b02eff9a80d72ecb45c860" }, "es": { - "updatedAt": "2025-12-01T18:59:35.803Z" + "updatedAt": "2025-12-08T15:00:22.767Z", + "postProcessHash": "3c5b626b7676cbdb83182a69b5d0536dddb871fc43a80b7a759d03d34dad4b80" } } }, "8ff66bdced25d61e18b17da49232829ebf382f44eb36187d068e9bc53bfd59cb": { "ccfa5d646fde57b9ff6be1c5670cc867d400900832ceb8ec8290036907eca9c5": { "zh": { - "updatedAt": "2025-12-01T18:59:35.805Z" + "updatedAt": "2025-12-08T15:00:22.720Z", + "postProcessHash": "239556e35c11910f9081889ffc939b16dc4d154436f303719318a733891a5ce3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.806Z" + "updatedAt": "2025-12-08T15:00:22.723Z", + "postProcessHash": "30589f6639ffb626b352b3bc2305709fea65ad2828de797b86059968e133361d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.808Z" + "updatedAt": "2025-12-08T15:00:22.728Z", + "postProcessHash": "42ed6de14bdc69f29c89f622f43ae368ae939d5db80f5d1325ea22425dc290eb" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.810Z" + "updatedAt": "2025-12-08T15:00:22.736Z", + "postProcessHash": "b5f057962447b438aa5ca83c61102ecc86c4cd652db4af024f4009a824c59e35" }, "es": { - "updatedAt": "2025-12-01T18:59:35.821Z" + "updatedAt": "2025-12-08T15:00:22.763Z", + "postProcessHash": "92cb96b49811413ce26bc185f88f801b53b824a55020dd7a3016108f6bbcd706" } } }, "1825b74afdf74f89a1bd5e6ea876dbb92f139e5689ad4bc5c957d88dbe86cf1a": { "e561433861d7c832afde731fddf15f475a3fba956ec2c1b494dcb1fae7961f19": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.806Z" + "updatedAt": "2025-12-08T15:00:22.725Z", + "postProcessHash": "8b07a11bc74242ebe1c6b6781a4ccac5c4c3dd4db76aeeb598dd0d364f48ad3a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.807Z" + "updatedAt": "2025-12-08T15:00:22.726Z", + "postProcessHash": "8265f11a7bd5b6a3c383715bf792e0eda11900a63e3868f1ece77aa10ac0292d" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.807Z" + "updatedAt": "2025-12-08T15:00:22.727Z", + "postProcessHash": "ac844d8eab6b5ff580694ca1818d8b8e743927928c826c20bfa8f02be2643ae6" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.808Z" + "updatedAt": "2025-12-08T15:00:22.727Z", + "postProcessHash": "5cd0d5e005fe7797ef058d9ba3f6ba6bb6514f22882164f2382dbf3c8d4d1cbd" }, "es": { - "updatedAt": "2025-12-01T18:59:35.820Z" + "updatedAt": "2025-12-08T15:00:22.760Z", + "postProcessHash": "a9577720053c7061a1125f1629e310e3fb673fd143b859cddb052cfdc035ca34" } } }, "8f7e83cbfe67a9fcd076d9588f21d01182c8134d2f74ec24504b8233933e824c": { "080353382f2d572acd4649c22671713ea534e0e82be977342ef9e193183ef0c5": { "zh": { - "updatedAt": "2025-12-01T18:59:35.798Z" + "updatedAt": "2025-12-08T15:00:22.729Z", + "postProcessHash": "247e61a8f062b9bea6fe858c68b060472524a0dfb245e4c4a4694da5994b574b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.798Z" + "updatedAt": "2025-12-08T15:00:22.730Z", + "postProcessHash": "fcf3be8cae3b001898e1c50c06d5a7722a58d9bd883c4d0e814bd3c31b48037b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.798Z" + "updatedAt": "2025-12-08T15:00:22.731Z", + "postProcessHash": "c1031c41bec40c672b177b6a5f792748cc918a8756ba11739f7888fd619e9dee" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.798Z" + "updatedAt": "2025-12-08T15:00:22.733Z", + "postProcessHash": "2f87a741a368c319e5598def202df806ec2dbcce6e92073458acb975f21c6f61" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.799Z" + "updatedAt": "2025-12-08T15:00:22.735Z", + "postProcessHash": "8b186d5431a84f8f48182e3827dddc7c43047f62d618e1b4cf111f2c54424955" } } }, "ace8b314ee8981d65b6ddfe58a520168b16e836507d8feb83382316503de7632": { "c3bebabb37f02f695353a684f4c1a1cea61e54e64ef48c1e82697bb71ea4ad36": { "es": { - "updatedAt": "2025-12-01T18:59:35.800Z" + "updatedAt": "2025-12-08T15:00:22.752Z", + "postProcessHash": "3fa2aac823658c203d02e51ce2a3e1d0e942882d8c19656aaa2e7e05072dc99f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.801Z" + "updatedAt": "2025-12-08T15:00:22.752Z", + "postProcessHash": "725ee95293ed56aba206aaa2ee67b0cfc76de779733781adfaf05a4cd01ae1f8" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.801Z" + "updatedAt": "2025-12-08T15:00:22.753Z", + "postProcessHash": "766c2636a0ff54e346ef4da9062ff6426b1462f20c8df6264c5e6732f9fdb7cb" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.801Z" + "updatedAt": "2025-12-08T15:00:22.754Z", + "postProcessHash": "e6ba28d9442b8523b47da9048018169a8298fe8c762cd1dde00fd8b15ce071e1" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.802Z" + "updatedAt": "2025-12-08T15:00:22.754Z", + "postProcessHash": "2d09370822c71eeab653abad6a4cd5e83b033f727fb631599f2a0e34c7846de0" } } }, "44300dab250e56074b5979e32e3f5184f5fdcb291f15279528895439d5dab604": { "1d7fc3c041de94d6dc0122669c87238fd3cf36606f7b5c6287a5ab20af924088": { "es": { - "updatedAt": "2025-12-01T18:59:35.801Z" + "updatedAt": "2025-12-08T15:00:22.753Z", + "postProcessHash": "d71f2a14c53567069f09593b28cb970376211a439a94ccd067d97adb3475a544" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.802Z" + "updatedAt": "2025-12-08T15:00:22.756Z", + "postProcessHash": "20fc6cb9947eefb30384482d46f196c0abf34c1f54c78b0206915ec44dfbdcfc" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.819Z" + "updatedAt": "2025-12-08T15:00:22.755Z", + "postProcessHash": "cbd6d554dc3bc60c4ebcaa45af04e271b2f8456a4e57590979c9a4c8339e8395" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.819Z" + "updatedAt": "2025-12-08T15:00:22.756Z", + "postProcessHash": "973c9578f326fca067e30b8ea5f3248f584fbd6195c4ff232f4f231d16d66f28" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.819Z" + "updatedAt": "2025-12-08T15:00:22.757Z", + "postProcessHash": "46d278bca322e2dcb2b4f05a8b94dccfc7f2ca6d7bcfe9a0153481115c523321" } } }, "35b55487b1a30fbd5c4dcd24ef9acffebd7189de1d46f0087112ac5a7791c045": { "eb00b27b1c690a6048525a3ddd2bc252b25866c28331cd2bcee68d4f11519a51": { "zh": { - "updatedAt": "2025-12-01T18:59:35.824Z" + "updatedAt": "2025-12-08T15:00:22.710Z", + "postProcessHash": "77cfa09a50e4de2a4dbe5736d99544008ab7bb4a7cb1d7343b7fb46030e6a5d6" }, "es": { - "updatedAt": "2025-12-01T18:59:35.813Z" + "updatedAt": "2025-12-08T15:00:22.742Z", + "postProcessHash": "121846a00a23d4305a0f23d3c637396511b703344267c42b78b4a33a9fc4dde7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.826Z" + "updatedAt": "2025-12-08T15:00:22.709Z", + "postProcessHash": "ad9136f802f8112597a1c5fd9593026084fa6b744f03897a2bec78aeb18fa7a5" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.826Z" + "updatedAt": "2025-12-08T15:00:22.708Z", + "postProcessHash": "07e95404326ccaf8c14162b5e4e3173a05a43f19e9ea30605a529d6080286d09" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.826Z" + "updatedAt": "2025-12-08T15:00:22.708Z", + "postProcessHash": "86b3fd0d115945c7f5d7289e98180c1704103cb4d5fe160e990dcc9b0f9bd112" } } }, "a09cf26980e486c48ef816795581670ce5e9e9765c1c891eb32117116bfeb0d1": { "adcdbb7c8da9dc70267e347327f2966402951e08c7400419fe6731157a2e8bff": { "zh": { - "updatedAt": "2025-12-01T18:59:35.825Z" + "updatedAt": "2025-12-08T15:00:22.711Z", + "postProcessHash": "a3fa71330920c52271b56b2ee765f6abe79b3f276072ec2a667a6f9c883d8df0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.840Z" + "updatedAt": "2025-12-08T15:00:22.792Z", + "postProcessHash": "b0c141935f2b28a2cf79e0669cc8e3e4c86cb89f9b9f9836385712fc2ccf1d9e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.842Z" + "updatedAt": "2025-12-08T15:00:22.795Z", + "postProcessHash": "6191f1ddb5c4aabb8dcf02725db6b4944164a64ea004a3bd89b2ba818501b53e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.842Z" + "updatedAt": "2025-12-08T15:00:22.796Z", + "postProcessHash": "a85c1d62a924e9bf8da7c49a67b00ce869a5761a4b5f86faf87962fdcf4cded4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.852Z" + "updatedAt": "2025-12-08T15:00:22.815Z", + "postProcessHash": "940209b66fcbcde7ceae54107e1f4f63e75ed4c558520ae8db6e5f817af1d690" } } }, "39545dc69e5e65aec48a3f2fd60ae983e858f72aa563f35ae894c99ee9d2b423": { "022d006894e93dd891ecc6a9be49672e095d79790373c7404ec05f73bf8fbdfa": { "zh": { - "updatedAt": "2025-12-01T18:59:35.825Z" + "updatedAt": "2025-12-08T15:00:22.712Z", + "postProcessHash": "134a43672b13ce7758242e0b78c749e82dc34016799c150fd14d9974f676d5bd" }, "es": { - "updatedAt": "2025-12-01T18:59:35.830Z" + "updatedAt": "2025-12-08T15:00:22.773Z", + "postProcessHash": "785b7f5336c5715813bf205d8134ff27ba9d2e04d75b5c5c5808c13972a005b3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.834Z" + "updatedAt": "2025-12-08T15:00:22.782Z", + "postProcessHash": "982dcb25e4f42bc2446e5c200ddacb3021a8bcf95619940fb31d965d4f41ef02" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.834Z" + "updatedAt": "2025-12-08T15:00:22.783Z", + "postProcessHash": "936e444e0ec6ecbbd54a6de3093237139717c12081d53a8d6ba5130a3b0314ec" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.835Z" + "updatedAt": "2025-12-08T15:00:22.784Z", + "postProcessHash": "502c23d08a5968241360efab6c7ef68f81c49a67e5759981954541eda40ab099" } } }, "2cbc88fe5252a2b0e81812b14d4d8629c4741905cd0f5dcae138aea618c78be2": { "92ccc7187bf6db2886b099ed7095e7a84469130f02fb91022b348161d975725b": { "ja": { - "updatedAt": "2025-12-01T18:59:35.809Z" + "updatedAt": "2025-12-08T15:00:22.731Z", + "postProcessHash": "87c9d12f94028088572fc37bd46a78c5ea92e9316829850bdf18408d171cec06" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.811Z" + "updatedAt": "2025-12-08T15:00:22.737Z", + "postProcessHash": "644247fc599f9ccb07b449897f0e777bb39dcb6a272be2a869db52ad28eae629" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.820Z" + "updatedAt": "2025-12-08T15:00:22.762Z", + "postProcessHash": "7219c2533201def9a475b67dd9ec499cca59c2f54947685564201fbf48ec248c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.821Z" + "updatedAt": "2025-12-08T15:00:22.765Z", + "postProcessHash": "94a2c54303d5c8b263b44a01bdae0cfe3f4c877e8569c90369f13b6b082728c2" }, "es": { - "updatedAt": "2025-12-01T18:59:35.822Z" + "updatedAt": "2025-12-08T15:00:22.766Z", + "postProcessHash": "9b459c7c66e6c88424292c954ceb79f9d1f59a72689218ad209c082b17c6ae48" } } }, "98ed0708456e21c3c9dd388dbb447496f9a94502a34c9eca44b7f1ecfff2f420": { "a7360e88245afc6cfafdf9ed3b6278b7fb9f5ac996c9036802d692f148eb84b8": { "es": { - "updatedAt": "2025-12-01T18:59:35.811Z" + "updatedAt": "2025-12-08T15:00:22.738Z", + "postProcessHash": "30d7b5a911897e1889f1fa50ea1a9049116e1ca3de7de4da3c134c1af908f803" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.812Z" + "updatedAt": "2025-12-08T15:00:22.739Z", + "postProcessHash": "d9f4658350d18f8c4ac5b1abb77d4ae843cd765638acf1a28081f46cbee40f61" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.812Z" + "updatedAt": "2025-12-08T15:00:22.740Z", + "postProcessHash": "72144b9f4abaf961f6515137e9248bf8bcb74fa7a12c48462a58cc55e1384d78" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.812Z" + "updatedAt": "2025-12-08T15:00:22.740Z", + "postProcessHash": "760b90c7a1f1b5cbd26a562bb6825fd225e735f5e1266c203bd795d74988cc73" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.816Z" + "updatedAt": "2025-12-08T15:00:22.748Z", + "postProcessHash": "9eb7bbce1ffb2624380b566162db640b6b95ec88c10ee68cc4d6b4ec8cb59f6c" } } }, "c5950e84f44a2038c1ba5da608d51856272253100c65b9326c8ed090a39b3cf7": { "be5e56f9d69e18ecb7f543c760c6ed69958b974b2b4c1bf8d724668d6174c152": { "fr": { - "updatedAt": "2025-12-01T18:59:35.812Z" + "updatedAt": "2025-12-08T15:00:22.739Z", + "postProcessHash": "b0bb97062df3b3ec765346784162c33898ac63571cbc40d7cd10dfa6e12d9cb6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.814Z" + "updatedAt": "2025-12-08T15:00:22.745Z", + "postProcessHash": "e1a42d892194beadbba82e8054f846314550e15a6f684252758038e5ec5d3cce" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.817Z" + "updatedAt": "2025-12-08T15:00:22.769Z", + "postProcessHash": "b39107e57f4766aa7b96f26139e4b8a0df23e9206118cd0984258fc76255fa5e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.818Z" + "updatedAt": "2025-12-08T15:00:22.783Z", + "postProcessHash": "8dcf70fd369fdaf2251d26e8e6ab6e38ef6ee92145b3041f65add748cf80fc0f" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.820Z" + "updatedAt": "2025-12-08T15:00:22.833Z", + "postProcessHash": "b664bd4a8441092cecba18a08a8b924ef6a5864e160710a74c875d3708163bdb" } } }, "454f4b1cc731be588acf14ba5df2d9a218275e00ff735436ee820f7e464491d0": { "208d2a65d5a6ffdd114abb270ecaa82d49cd9d316494ad58c745abc9ac69d0f3": { "zh": { - "updatedAt": "2025-12-01T18:59:35.813Z" + "updatedAt": "2025-12-08T15:00:22.741Z", + "postProcessHash": "6e730c488d58ac6f56c1d4f67a3af1847e7c35ddd6ad301026f69d38fb9943b9" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.813Z" + "updatedAt": "2025-12-08T15:00:22.742Z", + "postProcessHash": "8ee55623c4ffaec6c6e326ab9b04e1adeca1240320b91bcde693890b8cb8f1e7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.814Z" + "updatedAt": "2025-12-08T15:00:22.743Z", + "postProcessHash": "76e97a9598ec3a72d91d6db18adb144b3df1ecddbf962b16e1617bc7c4dde80e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.814Z" + "updatedAt": "2025-12-08T15:00:22.744Z", + "postProcessHash": "99a259ef4fb49491864ae84a5e524342fca3cec8896fa3d4389ed439a188144c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.816Z" + "updatedAt": "2025-12-08T15:00:22.710Z", + "postProcessHash": "fe18915ed7262a66b0e915ed8cda6a8a53cb0fc76066e7c2cd167aad5b9970aa" } } }, "e790120c21b7303a105b8e41b2dc293db66032a6e913b62873431e4afea7afb4": { "2536b8c634054458b6495b889467b3dad40b48fbc5f4dc9f74a2c91206b01b44": { "ja": { - "updatedAt": "2025-12-01T18:59:35.814Z" + "updatedAt": "2025-12-08T15:00:22.744Z", + "postProcessHash": "3d00cc26128bba48ab82dcecff58c869a636fdc9349c0cd2ff8c1b1d364c69ef" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.815Z" + "updatedAt": "2025-12-08T15:00:22.746Z", + "postProcessHash": "dd2098c96e89e147f7233d351c8bc4d4c017f9c3f6dfac36c86cd219e8fe871f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.815Z" + "updatedAt": "2025-12-08T15:00:22.746Z", + "postProcessHash": "3ce65d83211fcbaf825867abd3db9d56eea06e21fcd903a311262f0158d3ca01" }, "es": { - "updatedAt": "2025-12-01T18:59:35.816Z" + "updatedAt": "2025-12-08T15:00:22.747Z", + "postProcessHash": "70740329be3b338acc467a93270006931cb04e16470692cb1ba904e7437498cc" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.817Z" + "updatedAt": "2025-12-08T15:00:22.771Z", + "postProcessHash": "fde3540c83475ac48ed6ab40a99de4f5b06d4d40bd1b89e9eb65650d48a27597" } } }, "d40d37b2f9c3362a3f59e3cdc4903175763e55077040411854a899dece7f00c9": { "d9e78ee2439a034c1f291269643caf10fa44bbbc07df8d9a2cafd3a7b8a6bc34": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.815Z" + "updatedAt": "2025-12-08T15:00:22.745Z", + "postProcessHash": "114e526c4284d1825efe6c74216b0ba59645de33f717fc960d53c0655e0625aa" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.817Z" + "updatedAt": "2025-12-08T15:00:22.772Z", + "postProcessHash": "4124aef59ecd58bf36d4845950e3b02e87090f3c1991574939b3ae628866cfac" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.818Z" + "updatedAt": "2025-12-08T15:00:22.781Z", + "postProcessHash": "b5126043f7a70cd7298038ac683b316edf71889a43dd4e7ce9047a773c9705d9" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.818Z" + "updatedAt": "2025-12-08T15:00:22.793Z", + "postProcessHash": "d2a8183d957dc55b7e9bf7706dac53b142956048240ac358233ddbe2a73a53a8" }, "es": { - "updatedAt": "2025-12-01T18:59:35.822Z" + "updatedAt": "2025-12-08T15:00:22.767Z", + "postProcessHash": "c6a47727dc6a17ad9a2363a000a25b43e32b2b1979d260ed5dd4e55b2d63d32a" } } }, "09e1b5c8217b295f8ae5147f079b1e469c73036fdbba8c42550cb22542b89b42": { "5c1e726b394db9779ce6d14565ba6ee8a2beadf931430c833ce76d4b76b4ac10": { "fr": { - "updatedAt": "2025-12-01T18:59:35.827Z" + "updatedAt": "2025-12-08T15:00:22.748Z", + "postProcessHash": "305cf913e52ebb2148ea5211694136dbbbf55e1d674eee600195b209710cedf0" }, "es": { - "updatedAt": "2025-12-01T18:59:35.827Z" + "updatedAt": "2025-12-08T15:00:22.749Z", + "postProcessHash": "305cf913e52ebb2148ea5211694136dbbbf55e1d674eee600195b209710cedf0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.828Z" + "updatedAt": "2025-12-08T15:00:22.750Z", + "postProcessHash": "305cf913e52ebb2148ea5211694136dbbbf55e1d674eee600195b209710cedf0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.831Z" + "updatedAt": "2025-12-08T15:00:22.775Z", + "postProcessHash": "305cf913e52ebb2148ea5211694136dbbbf55e1d674eee600195b209710cedf0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.831Z" + "updatedAt": "2025-12-08T15:00:22.776Z", + "postProcessHash": "305cf913e52ebb2148ea5211694136dbbbf55e1d674eee600195b209710cedf0" } } }, "94692aaa3dcbf23bd3b5559c22faf734afd549c58d6a4caf72ec002cde26f244": { "8dcf42f0df4ab729a3bc3e354229f887929dd1058eb4cee742481433dc5110d3": { "fr": { - "updatedAt": "2025-12-01T18:59:35.828Z" + "updatedAt": "2025-12-08T15:00:22.751Z", + "postProcessHash": "b9f52a5a820d2b5037b3beea9f54a81af8a688ac002475151abc0be8bc5ed59c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.828Z" + "updatedAt": "2025-12-08T15:00:22.768Z", + "postProcessHash": "b9f52a5a820d2b5037b3beea9f54a81af8a688ac002475151abc0be8bc5ed59c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.830Z" + "updatedAt": "2025-12-08T15:00:22.774Z", + "postProcessHash": "b9f52a5a820d2b5037b3beea9f54a81af8a688ac002475151abc0be8bc5ed59c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.831Z" + "updatedAt": "2025-12-08T15:00:22.775Z", + "postProcessHash": "eedfe58b0d5d76b24e68ff5a5dfaca845b60ff3d6bf12f355642b8003879eee8" }, "es": { - "updatedAt": "2025-12-01T18:59:35.833Z" + "updatedAt": "2025-12-08T15:00:22.779Z", + "postProcessHash": "b9f52a5a820d2b5037b3beea9f54a81af8a688ac002475151abc0be8bc5ed59c" } } }, @@ -20674,7296 +21574,9216 @@ }, "2fe318721bc0f0691bf06241d670ad45b2f043610471e87f177eda6a7454f75c": { "ja": { - "updatedAt": "2025-12-01T18:59:35.803Z" + "updatedAt": "2025-12-08T15:00:22.705Z", + "postProcessHash": "ca2f5f558d31e033e028e81e2f4cf9fb852b9ba26bfc2646137fbebe5d021203" }, "es": { - "updatedAt": "2025-12-01T18:59:35.804Z" + "updatedAt": "2025-12-08T15:00:22.706Z", + "postProcessHash": "e482188855d232fc03b53ecfc5d07c4f73d930ef51c2a54376f6fb503cdff6ad" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.804Z" + "updatedAt": "2025-12-08T15:00:22.707Z", + "postProcessHash": "7ab6a7d868f9d2a1d893d1be1d9d5018145c925434d21fadb2cb6070f7b17b4b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.804Z" + "updatedAt": "2025-12-08T15:00:22.706Z", + "postProcessHash": "ce5bbd54a647bbbb38b1dee6a0c48b5f5cf769a4f40d9f69ed001a6e7cd5bdcc" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.804Z" + "updatedAt": "2025-12-08T15:00:22.709Z", + "postProcessHash": "8fe3cf7bd0c70630f240bd6f56ee552a606627ff2fd8f1d8e6ed775e40d050cc" } } }, "78dbd5388cf954a92c53f1c8d7a694c6e428bd5e03f43065c4303750697b697f": { "a06228d5bafe79368644e5fc1993477b7ad455b50fa4c953d1430aa46ab1f1c0": { "ja": { - "updatedAt": "2025-12-01T18:59:35.822Z" + "updatedAt": "2025-12-08T15:00:22.647Z", + "postProcessHash": "e935b34f347c3722bb453e06ae9ca381fd44dbb15e3a31637b0d74a782ef2480" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.823Z" + "updatedAt": "2025-12-08T15:00:22.643Z", + "postProcessHash": "01e668d275883aaba21a9676cbd967e21e28ef057f737f4cd385d948aabb60d0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.823Z" + "updatedAt": "2025-12-08T15:00:22.655Z", + "postProcessHash": "8c8c1db6e725b974f03d50a1a6d469ba9e59d0562cfb961cd3c42b2d89c3f695" }, "es": { - "updatedAt": "2025-12-01T18:59:35.824Z" + "updatedAt": "2025-12-08T15:00:22.650Z", + "postProcessHash": "0354120cedc2170c9b6901f6fa99fb3f03b43e1a65811cf23ad9d0e4163e9128" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.824Z" + "updatedAt": "2025-12-08T15:00:22.646Z", + "postProcessHash": "3a91deb7e70d6b5f69e45837fc1d03b19c24bc69e2ba8d91ceca8cfc14717e30" } } }, "3c46dadf0ac4ebf9777492a50fcd1193fa433d1e216ed3c1924243d4724fc2fe": { "29d6c2488bde78ad944576247ef4f5098a7360c180a32419f1c7d8cd171cccb6": { "ja": { - "updatedAt": "2025-12-01T18:59:35.852Z" + "updatedAt": "2025-12-08T15:00:22.712Z", + "postProcessHash": "aa149ba756c7c879cf8e14693f7c4e7143599ea036643f63fbd53d3d32ad87be" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.854Z" + "updatedAt": "2025-12-08T15:00:22.799Z", + "postProcessHash": "6e3460ebbc37902ec9632de5143ea1810f723f423f9d71a9b3f87fefe09270d2" }, "es": { - "updatedAt": "2025-12-01T18:59:35.858Z" + "updatedAt": "2025-12-08T15:00:22.819Z", + "postProcessHash": "e89e7553ca036d875500ac4627f80a0c3dfbda9a34009be4699b7c633847ea0d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.858Z" + "updatedAt": "2025-12-08T15:00:22.820Z", + "postProcessHash": "650b9eb3c9c7d173246e04e237eb7a7d25934e95ece9299a50058d1715814534" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.859Z" + "updatedAt": "2025-12-08T15:00:22.821Z", + "postProcessHash": "35ed8a467bbb33ebf51e5395648f15222d9be581be126af6a0ca455dc38fdd12" } } }, "54703e18804814364ac46216497adf402696c9467a5818df9b5785af5064f328": { "16727b13e74497a85a0dff2005052a5bd6750a081e63dd1f50b391b718a75087": { "es": { - "updatedAt": "2025-12-01T18:59:35.829Z" + "updatedAt": "2025-12-08T15:00:22.770Z", + "postProcessHash": "ba7fd158897a290b8f8c72737fb96ebb78121b6eb31600237e16b93adcd7fd3e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.829Z" + "updatedAt": "2025-12-08T15:00:22.770Z", + "postProcessHash": "cffd1601a041f341503b20060a18793a786c619161faea6d9f3c93c8baef7b08" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.830Z" + "updatedAt": "2025-12-08T15:00:22.772Z", + "postProcessHash": "925e0df690a189c7685068929f62199f6790aaca0ea0c1effdc344733213315c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.841Z" + "updatedAt": "2025-12-08T15:00:22.793Z", + "postProcessHash": "565eaddc0f8b43816652ba2ec1550c30499c97f146a2afc19799567febd9e4a8" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.852Z" + "updatedAt": "2025-12-08T15:00:22.834Z", + "postProcessHash": "6b6fc91148653fc713c4c64fc17e61f7880f7dd31df1a4c5dcc7855cc6bd36b1" } } }, "3c2e490a9897a148973e17c16f61cd58132105563411cc48e2efacae54e128f9": { "4894dd706592b6ff8c06239bf520993dd4a834eb163ca15771bf82457d93db42": { "es": { - "updatedAt": "2025-12-01T18:59:35.832Z" + "updatedAt": "2025-12-08T15:00:22.777Z", + "postProcessHash": "bae0d44189b467fa1fe4cedba43973681d2a238de1fffa3ade5fbf68db9c6df1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.832Z" + "updatedAt": "2025-12-08T15:00:22.777Z", + "postProcessHash": "bae0d44189b467fa1fe4cedba43973681d2a238de1fffa3ade5fbf68db9c6df1" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.832Z" + "updatedAt": "2025-12-08T15:00:22.778Z", + "postProcessHash": "bae0d44189b467fa1fe4cedba43973681d2a238de1fffa3ade5fbf68db9c6df1" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.836Z" + "updatedAt": "2025-12-08T15:00:22.785Z", + "postProcessHash": "bae0d44189b467fa1fe4cedba43973681d2a238de1fffa3ade5fbf68db9c6df1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.843Z" + "updatedAt": "2025-12-08T15:00:22.805Z", + "postProcessHash": "c3fce44870e8b96e3c4997fb12a1de80aaa678412c8ff1b181c2132fcfc05269" } } }, "360d95cf7c011257c99dad19cd82581c2af8d2044f97b31c5031e7da37969366": { "fe122c6c1e32f9bd3c5ff3e6aa6d7558590346e285d1e2f09de8e7e56d80b2a8": { "ja": { - "updatedAt": "2025-12-01T18:59:35.833Z" + "updatedAt": "2025-12-08T15:00:22.778Z", + "postProcessHash": "10e65cd902c0b3d4b8f7f1dc99a54f0fef7cc89d57e7b1029ab7db5135f66aad" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.834Z" + "updatedAt": "2025-12-08T15:00:22.780Z", + "postProcessHash": "a952a29435bc8afaeb3f3d9905d52fe32b9c06a3f7fe388737f37a2848e91c27" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.835Z" + "updatedAt": "2025-12-08T15:00:22.784Z", + "postProcessHash": "737d92906dc2a57b017a0a2fe667ca475279ec39fe6c9ed34378d76999091632" }, "es": { - "updatedAt": "2025-12-01T18:59:35.837Z" + "updatedAt": "2025-12-08T15:00:22.786Z", + "postProcessHash": "5784e655f2deb83ae86df59fb1d1905229e59b3993d67098e32fc78a11e0adfd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.838Z" + "updatedAt": "2025-12-08T15:00:22.786Z", + "postProcessHash": "d433e9d1b704713ec1c8d801b399cad1be49d69039c9fb306ffa0107bcbd062e" } } }, "8f6b6b1d4966d23e89f5e3d39d43124db1406c051bcc0804055e4b9995f7a0a0": { "b684dd2d214dd0b02e0309ff25bdec0f196f954f7d4d745e0555e47cd8dfac2d": { "zh": { - "updatedAt": "2025-12-01T18:59:35.834Z" + "updatedAt": "2025-12-08T15:00:22.781Z", + "postProcessHash": "773af8f817d8cc074800f84ed192c22d2959c3f5e2c60ab96cc9b7ca972d2140" }, "es": { - "updatedAt": "2025-12-01T18:59:35.838Z" + "updatedAt": "2025-12-08T15:00:22.787Z", + "postProcessHash": "af5c9ed1c943d5d46fb9021cce397c33e0a3dae76eff46a4fbd1a4ce3f4f642c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.840Z" + "updatedAt": "2025-12-08T15:00:22.790Z", + "postProcessHash": "ddd09fc9fe03e5d898420e9094568d331531f460c34651d9f4a5bf0392a9c41c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.840Z" + "updatedAt": "2025-12-08T15:00:22.791Z", + "postProcessHash": "2ab02c8a6a577baf6d7c5e15f66eb02c6c2a8cf83a522cda63c99f4ddcfb43b3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.841Z" + "updatedAt": "2025-12-08T15:00:22.794Z", + "postProcessHash": "6b22bfb17503f47d9bbb41ad229419b7f665ee378b71fb40dc324a5c6d834c0a" } } }, "f1f3e97243b3a5871e070bd455eca6fd2bb91bc0f9e35b968a82d72afa5332c3": { "7a83233c5a7865ed319bb780fdb1037aa86bb7c0878e72fec3c6dccabcc6a727": { "es": { - "updatedAt": "2025-12-01T18:59:35.839Z" + "updatedAt": "2025-12-08T15:00:22.788Z", + "postProcessHash": "7c1a91fa0a53155a3b0ab469208d82f2dc901cd51d64c162e58ce2b12c13e83f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.839Z" + "updatedAt": "2025-12-08T15:00:22.789Z", + "postProcessHash": "35165b629e81e6fde94b2bf21b1bd34e2e18ed7b1ccc71d03c6619c26d4841f7" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.840Z" + "updatedAt": "2025-12-08T15:00:22.790Z", + "postProcessHash": "40c39ee1a3b5c5de576de72155ef88e4a0c4a407d8b3faa7beb39bd1ced36556" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.845Z" + "updatedAt": "2025-12-08T15:00:22.809Z", + "postProcessHash": "8b7e4e377b2c23e6a21396085244efa0fb4e6db2706c1d8a21d37ec81b11c7bb" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.846Z" + "updatedAt": "2025-12-08T15:00:22.811Z", + "postProcessHash": "1247e999a5642f7637e9462ce824dcf25a7274fec7d64666a286bcd24c7064a3" } } }, "00ffcedef05b5e1d23aecdb19ee39971b929c3584672726b796caf3d57fe0836": { "c77c60903bb7a84bb711b0f3ad16c45989c87445c922595a3702c4a2ef4b397a": { "fr": { - "updatedAt": "2025-12-01T18:59:35.839Z" + "updatedAt": "2025-12-08T15:00:22.788Z", + "postProcessHash": "cdb41797935bc1fc2965605903456a2f5836bec9fe9e928d85b8ca3f1be16046" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.843Z" + "updatedAt": "2025-12-08T15:00:22.806Z", + "postProcessHash": "3348ec222e4d906c5f9d7612f2031ee25bf841479296f369a62d5f77f3078a67" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.844Z" + "updatedAt": "2025-12-08T15:00:22.806Z", + "postProcessHash": "206ad4628b9f1f4d7c30e87c867cc871f8f1a7f10e64510a4665f65be6f4fbb2" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.844Z" + "updatedAt": "2025-12-08T15:00:22.807Z", + "postProcessHash": "4b983c817562190143425e9e2dd74f6b1f5f1dcb390df5605ceed59c125445ce" }, "es": { - "updatedAt": "2025-12-01T18:59:35.845Z" + "updatedAt": "2025-12-08T15:00:22.810Z", + "postProcessHash": "3ea0b83a95a3bb0e710aa3e310e8a1c63bf08b6554dc130a3b0fcfff407f3181" } } }, "0a1deb2557697df7dac599130d8c3c16c9534baf51d2307653f8fbec61e3bacc": { "501815caf35c4af73690df2e0de954fdffb7b6d3ee9f33b18da5d9bca669b16c": { "zh": { - "updatedAt": "2025-12-01T18:59:35.842Z" + "updatedAt": "2025-12-08T15:00:22.795Z", + "postProcessHash": "a4e15f77b159a8fd2ada5138071cfdbef521339e71ff7cafa5e5a6924085e802" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.844Z" + "updatedAt": "2025-12-08T15:00:22.808Z", + "postProcessHash": "39790afb14c74d47faf3eb5faa6d279970a6838f58e77a48437eb7c41ccc0395" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.845Z" + "updatedAt": "2025-12-08T15:00:22.809Z", + "postProcessHash": "1a58debbbbdf9942a8d979e5c94c72648e1d526eca672380d7fb831c26fdaa00" }, "es": { - "updatedAt": "2025-12-01T18:59:35.846Z" + "updatedAt": "2025-12-08T15:00:22.810Z", + "postProcessHash": "1f16366cc38cbbe779a0ceb644f2332515f5d35b3414c3c1fe65a4fe5a7dfbf3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.850Z" + "updatedAt": "2025-12-08T15:00:22.812Z", + "postProcessHash": "a12522f873c1856b40ad70d9d0fb714d32043758120266edf8a1b5af70e4b1e6" } } }, "323dfcb2ef6dda2189ae466a043369f20aaaac621b8782cfc04a16cd31f39344": { "8e10911719b390fa582ab724e54ea95acdd356d9977a8f8d787a57893800824c": { "ja": { - "updatedAt": "2025-12-01T18:59:35.853Z" + "updatedAt": "2025-12-08T15:00:22.797Z", + "postProcessHash": "86c4c8752ddff361a7b98c368098b53f4cbc446aa5e73c97fbf922efcd4cb4b2" }, "es": { - "updatedAt": "2025-12-01T18:59:35.856Z" + "updatedAt": "2025-12-08T15:00:22.804Z", + "postProcessHash": "6152fd19a27264f6c7b7fa7724f35604c5284591f30d40ff6915bb3d0bb71b22" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.856Z" + "updatedAt": "2025-12-08T15:00:22.816Z", + "postProcessHash": "40df43e1b9d7c765fb4218360f5dd7f46c06a833a2282f61c63be9fbd0cbe6c3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.857Z" + "updatedAt": "2025-12-08T15:00:22.816Z", + "postProcessHash": "077377822c90e87e22d46bf66977b42bef74ab0ff1ee4e9940bc00e1651d3154" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.857Z" + "updatedAt": "2025-12-08T15:00:22.818Z", + "postProcessHash": "118ba6b7b42b2dadc88235bb778833682191837211ff1a6be755c02c45d85f49" } } }, "3f0739326908b84acdbfaf0f18300ec15d88b01690890ec93123801b2b492754": { "887466f534dd862fdbe9fa6bc79ac38e079bb0ce053c3040f754c3db732171bb": { "ja": { - "updatedAt": "2025-12-01T18:59:35.853Z" + "updatedAt": "2025-12-08T15:00:22.798Z", + "postProcessHash": "b0742e1e80c6e1c22188556b51077fadaeb9bf25ead49eba84ba677cc0b0f7be" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.853Z" + "updatedAt": "2025-12-08T15:00:22.798Z", + "postProcessHash": "29975672d38e16dd1fba487b7a531a71c678108cf2a9ac18d7be754fae7fe6c5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.854Z" + "updatedAt": "2025-12-08T15:00:22.800Z", + "postProcessHash": "4cd88f0de2e4249d4270538073174fd0e739544df0d0a132cc288107905d909b" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.855Z" + "updatedAt": "2025-12-08T15:00:22.803Z", + "postProcessHash": "ec48e347788740310e4a6b3e30fc605808c9967ad7bd2be5bbcc6d422d004dde" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.860Z" + "updatedAt": "2025-12-08T15:00:22.824Z", + "postProcessHash": "806390bdde2c0d8cfb331e1f483609ddc8c8fd9eb4cf0cc42e027c6de9aa4ee3" } } }, "01963976ac7e7dc250667b8c6b60139d95d47f2930979ba741dc8b587e98823a": { "7b4c2c4184fae7e334b37629b0b9f57d66fc87b0d0d43895c90642cb512c5c42": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.854Z" + "updatedAt": "2025-12-08T15:00:22.801Z", + "postProcessHash": "2a5027fe81eb7612ffb9d05dea1500ee4f0c1a9816a9ca506b2e794fcb078959" }, "es": { - "updatedAt": "2025-12-01T18:59:35.855Z" + "updatedAt": "2025-12-08T15:00:22.802Z", + "postProcessHash": "8c8f85b9f2db265a84ec7efbc561a15ec18b5895099b18d4487ea6329f5b1c6b" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.859Z" + "updatedAt": "2025-12-08T15:00:22.823Z", + "postProcessHash": "62c8a2a7fac99ca004eb13a20750a9ca6a35f8b7496273f4bbaf623a67b428e9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.859Z" + "updatedAt": "2025-12-08T15:00:22.823Z", + "postProcessHash": "fc5d786da597c00fbc5632acccb0af743eed769f70571aa3c985a56487a09de7" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.860Z" + "updatedAt": "2025-12-08T15:00:22.826Z", + "postProcessHash": "67711ca84b7bb9d60437ce790a85bfa6d2c7ac395b655a6c3c8fba9b117944f2" } } }, "7254562218e5292bba63d44b2081beaa33aab1ca86a1e16643c1757bb9bf3bb5": { "865c6199ce5b9faf8f137d4f726ef358400af57fba5106226929df77aa2fb855": { "es": { - "updatedAt": "2025-12-01T18:59:35.855Z" + "updatedAt": "2025-12-08T15:00:22.801Z", + "postProcessHash": "598ba7923e0af2c9342cb3fc8b97b9da816eb2ae83931544db14b0f94edb32c0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.856Z" + "updatedAt": "2025-12-08T15:00:22.804Z", + "postProcessHash": "75657c500c0943ed44d1909701426d0efd7b0cef23cf7a45a88ae78621efe939" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.859Z" + "updatedAt": "2025-12-08T15:00:22.822Z", + "postProcessHash": "933eb55d161833b874898fc76ff83fbb38c768d4fd45d7051799558f212ffd20" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.860Z" + "updatedAt": "2025-12-08T15:00:22.825Z", + "postProcessHash": "94cf26739cbae6a6ba81694bb43806f58f39df6318e2a65119c054dd4809c7e0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.863Z" + "updatedAt": "2025-12-08T15:00:22.855Z", + "postProcessHash": "3e4914d950c2bedfb9bb3fbc9a0714f97df08d62a2afe1aa770b63cfa60f6bfe" } } }, "b78b17624819108ba161bfdbbb02b16ef1376d17322f99d76265c8cf454eca10": { "92e57b466edb42bdbece450b2d645767321c06ece03d92cc1d14fce4dbdd63cb": { "fr": { - "updatedAt": "2025-12-01T18:59:35.851Z" + "updatedAt": "2025-12-08T15:00:22.812Z", + "postProcessHash": "d715339538fed2bcec6f89991edf1666281758bd75cf1c3c5db3f428d56d231a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.851Z" + "updatedAt": "2025-12-08T15:00:22.813Z", + "postProcessHash": "ba59190f0a582ced3175dd5ecc100bc9ef0ea0bf5faff4c9f2058794cd84e867" }, "es": { - "updatedAt": "2025-12-01T18:59:35.851Z" + "updatedAt": "2025-12-08T15:00:22.813Z", + "postProcessHash": "a129c4b760ae6b62933906e90f8c538a104c3c2f21399ca73e1d3b2f4d5afdd9" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.851Z" + "updatedAt": "2025-12-08T15:00:22.814Z", + "postProcessHash": "ba59190f0a582ced3175dd5ecc100bc9ef0ea0bf5faff4c9f2058794cd84e867" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.852Z" + "updatedAt": "2025-12-08T15:00:22.822Z", + "postProcessHash": "d1f89179705b579f2d9b782b439e64a5d66c273df6659c4802d1473f05c4339c" } } }, "bf96a4729a68ef922f278eaf8c02a7c35d600c0a9a6b1b2d8b7334c03803516a": { "96520ec466dbde5f957a8e7c3771f07f1b208af9b9459ad375e9f3f4fafbc20d": { "ja": { - "updatedAt": "2025-12-01T18:59:35.870Z" + "updatedAt": "2025-12-08T15:00:22.845Z", + "postProcessHash": "5bd6980bd055c8ed51df71dac03994411971d2019676d04e18b0779f2fb2605e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.877Z" + "updatedAt": "2025-12-08T15:00:22.881Z", + "postProcessHash": "e5d6d85fd9f7078c4b3d4daae0361d31eabfc407c02e96de3d1b8f30cd8c0cbd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.879Z" + "updatedAt": "2025-12-08T15:00:22.888Z", + "postProcessHash": "afb177bcd4aa7431eeb894ff56235779533b9ccac127ff7425259319ef83af68" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.879Z" + "updatedAt": "2025-12-08T15:00:22.888Z", + "postProcessHash": "5a846bb3342329a136c97ebccc35dc4a4b14cea2003bbb49b62fc244a25c05d9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.879Z" + "updatedAt": "2025-12-08T15:00:22.889Z", + "postProcessHash": "59f8d1f541b5645fd5d60550b433895721a79bb20e7322ae25503e87e7fa0a8e" } } }, "ac756a753179f7ec00234f84f4f0a6b54e57a54c7ffe2f1e06f9e7b4219e5c10": { "ebba2668ba93ca46acc94756dc5850802447829530ab62dcadd5b52be357a8f7": { "fr": { - "updatedAt": "2025-12-01T18:59:35.856Z" + "updatedAt": "2025-12-08T15:00:22.814Z", + "postProcessHash": "93055974684a54232fda249a0e24cbc2a1179b93cbc14fb195f745cc8c3a7dee" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.857Z" + "updatedAt": "2025-12-08T15:00:22.817Z", + "postProcessHash": "de9d7a53e52dfe81bf9336c016d07bfdd675cd5298e1f87c6df3df17d9379f5c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.857Z" + "updatedAt": "2025-12-08T15:00:22.818Z", + "postProcessHash": "8af77c5eb677155296ec3b26bff0ea831c388b5d26a2fd35d2c4652c92c636b7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.858Z" + "updatedAt": "2025-12-08T15:00:22.819Z", + "postProcessHash": "a01d6fb6b3b9fbac5fe97cc3f8997f1941d1f31da560b36fc26d5f3beb1f05c6" }, "es": { - "updatedAt": "2025-12-01T18:59:35.858Z" + "updatedAt": "2025-12-08T15:00:22.820Z", + "postProcessHash": "3f972dc683b9054a688fdc4e7da76eb9957baedfcb22361aa42457090b0428f1" } } }, "011c86d9467ddb91577408cf209f00c5044eccf7fb3ed63b8ecc0d6669cc44a2": { "317c487b9ac9e03c8d4798b07c7b90f287017f90e5d4667b573b034f69028e02": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.870Z" + "updatedAt": "2025-12-08T15:00:22.839Z", + "postProcessHash": "ebc1feb8563115555dcc601e56c769d160fe9ecf4f08abdfadfd7d4f47ec33f4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.877Z" + "updatedAt": "2025-12-08T15:00:22.843Z", + "postProcessHash": "1fbbcbe6fe4bf605426271bd968a58892392359a5bab226303d09dc2a43b8489" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.877Z" + "updatedAt": "2025-12-08T15:00:22.881Z", + "postProcessHash": "4ce334425ac6244b76c9895798c54652aae18d3a0f291f17ffcff2f0f0563ea7" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.882Z" + "updatedAt": "2025-12-08T15:00:22.844Z", + "postProcessHash": "87cd22dc67038c62d36b0b043ecee54f1e1c47ad45d63430b20b3a14466befbe" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.882Z" + "updatedAt": "2025-12-08T15:00:22.929Z", + "postProcessHash": "ce9f788d5fbc94de2351205a708464f9a6eb4cbefdd61b86594b597453fb8968" } } }, "001de32b90f7695bf2649682e7b4e29309b43719759432507628312f75a81fca": { "3757997a815a2927e264c1e9d663b128b11a22e70c1adef53a510095e6b886a5": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.860Z" + "updatedAt": "2025-12-08T15:00:22.824Z", + "postProcessHash": "18f7b6193ecd505215af89752e16133cb9daba44d57815a37336a4e2ac59b58e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.861Z" + "updatedAt": "2025-12-08T15:00:22.826Z", + "postProcessHash": "f98febda11c22b194fd99f4554aeb0d122922e17a0ea60b3eb12aba1285acff3" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.861Z" + "updatedAt": "2025-12-08T15:00:22.828Z", + "postProcessHash": "94f6d40c21293fe4d17c609031b777093973ef68f9e83c34f36db38ed192f2ce" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.862Z" + "updatedAt": "2025-12-08T15:00:22.829Z", + "postProcessHash": "30d6de9ecb43a0ffccf80fb38a460e9eb8018ba8b12053114912808355c01557" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.864Z" + "updatedAt": "2025-12-08T15:00:22.857Z", + "postProcessHash": "9da648fa9251e9c7f19db2e56fd3f3a3c5760d6b3467f693866cfd69f54bb613" } } }, "52b4c118fda5c72e8e7753a15df0cddf6d0ff1464d0e72aa36a1bcde209ee497": { "44dbd7bb9571e415fbe55e43893382fb9b2c5fa54bd525be19af594f0d1479ea": { "es": { - "updatedAt": "2025-12-01T18:59:35.861Z" + "updatedAt": "2025-12-08T15:00:22.827Z", + "postProcessHash": "8fd46820fc63faad05cc949e27a40603f614b1d9026fca0f40040dd29e72d514" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.862Z" + "updatedAt": "2025-12-08T15:00:22.831Z", + "postProcessHash": "b6995e4322e28745828c6973acfe0b598f476c958611abefcda6f4fa0f72fedd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.862Z" + "updatedAt": "2025-12-08T15:00:22.831Z", + "postProcessHash": "521b21305a6a3382e613141915a69ff2f66f36227d16df25190bcf8a9657c668" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.863Z" + "updatedAt": "2025-12-08T15:00:22.832Z", + "postProcessHash": "bb395677a9b974fb435d14d679c28ceb6843b5e0ff932d43a918e3947b847c4c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.864Z" + "updatedAt": "2025-12-08T15:00:22.856Z", + "postProcessHash": "1a49f656c2e55db9f92208c3c7b56767e18fb1dc34ae9820e6384e48356cc5e2" } } }, "500c8d794ed9f5ff4c9bc5657fe789a96b1fbae8b413f3bb05326f3252578b82": { "b61c58db6c0f38eea247b84e671622c9f69dca5a1e569e1553d3b39bfab4890e": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.861Z" + "updatedAt": "2025-12-08T15:00:22.828Z", + "postProcessHash": "a80def4780e6ca43524f0c1b09a7bc732458fa6790100c6965225a0ae4c8cfa8" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.862Z" + "updatedAt": "2025-12-08T15:00:22.830Z", + "postProcessHash": "9998cc33f28b190806a857b2ec4d927deb1dad1ffd605c3d508f6e127403b191" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.862Z" + "updatedAt": "2025-12-08T15:00:22.830Z", + "postProcessHash": "71006ce3e6dcdbf7bacd46d36f509560168267cc972ace4189bf9dcc856b887a" }, "es": { - "updatedAt": "2025-12-01T18:59:35.863Z" + "updatedAt": "2025-12-08T15:00:22.854Z", + "postProcessHash": "91bc59d55b74800c5459d5b6e40c001be2f44e230fd44c088f8921aca335e239" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.864Z" + "updatedAt": "2025-12-08T15:00:22.856Z", + "postProcessHash": "c6b0755997606f7b8a98aaf3e4a2603c62118a99e2f537448d09022a18bd41a0" } } }, "c95316862e680f1f414566d7bc669f8ee2265b5d405b01d24766bb042169b1d3": { "b19e63502674606a4e0a8b953c9020f4943803f5efa9e0b6ab989a36a3967061": { "es": { - "updatedAt": "2025-12-01T18:59:35.863Z" + "updatedAt": "2025-12-08T15:00:22.854Z", + "postProcessHash": "640b556880852d3c3ddbb750ebe34791ddb5ae5e4b534f9300c423b812eaac8c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.865Z" + "updatedAt": "2025-12-08T15:00:22.858Z", + "postProcessHash": "0f33b434d1c15da5f994a1c34691afb371e1df5ebbbf68ad43f115c05074f90d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.865Z" + "updatedAt": "2025-12-08T15:00:22.859Z", + "postProcessHash": "3886eeb5f4bf03fc6a4a4d729487ab78f254f3b4f5a4038f071b1423a95b728d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.868Z" + "updatedAt": "2025-12-08T15:00:22.875Z", + "postProcessHash": "39473c1020ff57384828c6b253c41a9709e7eddd7f6a6b7108d904149dbf7073" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.869Z" + "updatedAt": "2025-12-08T15:00:22.894Z", + "postProcessHash": "c433b213be1c23bd4257e950757c9705acc089f4bc3c6c5293fefb46b25939d2" } } }, "06cc8b82030bcffe3f963ba6041195e2cb33b1998d98ffbe3c232a635c5063c4": { "695abf0e777354c4c92c798700f4903b0df6e591ebb5be83b96bd4f775c60c75": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.864Z" + "updatedAt": "2025-12-08T15:00:22.858Z", + "postProcessHash": "5ab3766ac89e22149d6b2d3c0914ec88d64ce2ff83f89b75fa6f680de255a047" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.865Z" + "updatedAt": "2025-12-08T15:00:22.861Z", + "postProcessHash": "5d077f247d876e44d22cd43473d3cd19f3f585abe994b9d48616e7ea7d01106b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.866Z" + "updatedAt": "2025-12-08T15:00:22.862Z", + "postProcessHash": "d106e1180e8fbdd427bfdf3a850f9b29860c8d8a3cb8d329bb084e3db5acff47" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.869Z" + "updatedAt": "2025-12-08T15:00:22.883Z", + "postProcessHash": "f0050fd39655726a303e43a050566477af730cc2ef3f7f0a7125b80a2ad9e6c9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.876Z" + "updatedAt": "2025-12-08T15:00:22.878Z", + "postProcessHash": "f65ee7b8342c2e3b7d984ddd5fac87b77924d365fc8cf6f14eb7ab2346f86659" } } }, "233af7a151fe03e15fb75c6507ff9b515fd0865108003088fe1268b7209fb06d": { "ac56724ed5b2b05e8c20bf2f3e81864d52cb4b61c722bfae513a77a9eb2a77b4": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.865Z" + "updatedAt": "2025-12-08T15:00:22.859Z", + "postProcessHash": "cf6071920225695d38306e6e2ea5786b21e68dbd1dfb5a48243e6b65da119529" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.866Z" + "updatedAt": "2025-12-08T15:00:22.863Z", + "postProcessHash": "85d8992aeef45587d9450041f4a028b053bca18a8eb2c227d171a4d61d511449" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.867Z" + "updatedAt": "2025-12-08T15:00:22.868Z", + "postProcessHash": "14df492687947dad62c3cc4fd4ff2dd20e47b2287a3a081e6b2bfee6419a273e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.868Z" + "updatedAt": "2025-12-08T15:00:22.871Z", + "postProcessHash": "b340e13944a0489f8e391be6d38d3f202119b67c40cf0d6fab571cd8bdd52e84" }, "es": { - "updatedAt": "2025-12-01T18:59:35.870Z" + "updatedAt": "2025-12-08T15:00:22.895Z", + "postProcessHash": "e11046a12e571e2af87d34a77354299374dba0e492485e1ece4eb46ef5037b66" } } }, "4da39f06a5748526530098e9af95e332e2213cceef46051b20b336f90baaa845": { "94668d977945d288958fefe4b5975d6ec53d367b0942d1aadf3ddea672713ecb": { "ja": { - "updatedAt": "2025-12-01T18:59:35.871Z" + "updatedAt": "2025-12-08T15:00:22.860Z", + "postProcessHash": "19610408653a43c8e8c3a812b698f5d0f72dc89136cc4b08b1cd2a3c6469db18" }, "es": { - "updatedAt": "2025-12-01T18:59:35.871Z" + "updatedAt": "2025-12-08T15:00:22.861Z", + "postProcessHash": "fc1eb0859a67eccda05c4e0266c8175e6df5c6ca8ba1b92e06ea6559bc2c45d4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.874Z" + "updatedAt": "2025-12-08T15:00:22.872Z", + "postProcessHash": "2bde14968b7963905f32aa7cfabcaeee82c496b0358b01d11e5354b13af3cde6" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.875Z" + "updatedAt": "2025-12-08T15:00:22.876Z", + "postProcessHash": "0b52ec1bd305f5cdf1fbb90c4175a542c194558d111643f2b64537ec5375affd" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.884Z" + "updatedAt": "2025-12-08T15:00:22.896Z", + "postProcessHash": "cdd7b78e390cb143842b744fe8819f0086f3d9edc7de6a44ac4913edfd0d6a65" } } }, "6ab60788a676f4b5c595c015615d2f7b9ea6bc63c38c6c06ffc1867e91eda737": { "1b8f0aeb77d9b72ae7755202669ba0764383cf3b7a4b4b05ace88364eb05ae58": { "es": { - "updatedAt": "2025-12-01T18:59:35.866Z" + "updatedAt": "2025-12-08T15:00:22.862Z", + "postProcessHash": "183306ddd03f12712c3eaa38ef1cad6148782a86a8cc6a9ece35acae79ac3bcf" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.867Z" + "updatedAt": "2025-12-08T15:00:22.866Z", + "postProcessHash": "f547d0435dab72b592fa5eceb5ca09c01499638abe43f6b9a7660d53c17abe04" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.867Z" + "updatedAt": "2025-12-08T15:00:22.868Z", + "postProcessHash": "e90fabd71f122b579e3689da5e55c4f422e4256dcb83134eeb210d0eedcca1e8" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.868Z" + "updatedAt": "2025-12-08T15:00:22.870Z", + "postProcessHash": "c048e44f39c2988b8cd802b505d6f74250689b83a081480f0e27a95022e4e855" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.869Z" + "updatedAt": "2025-12-08T15:00:22.894Z", + "postProcessHash": "0efec07fabfdf4f79ed2444a345c105b09f5410db915795378a9725ccac2bcd6" } } }, "a46a1a84833a9edb20fdf72fb0f3a4cc1aa735e291a8fa86db53cb413c580314": { "3bb489f048a7a101de4aad68733f54f0bf9c18ed179ed1b992e5334d539c7557": { "es": { - "updatedAt": "2025-12-01T18:59:35.871Z" + "updatedAt": "2025-12-08T15:00:22.863Z", + "postProcessHash": "312789e6ecdeedb8561ff278f6c0acb3e383a06d11ae59d359a6235b393596b8" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.872Z" + "updatedAt": "2025-12-08T15:00:22.864Z", + "postProcessHash": "66a397c9739de0875832e4e7162f2a09dd4ba1ab653920258121568f0bad1fa1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.872Z" + "updatedAt": "2025-12-08T15:00:22.864Z", + "postProcessHash": "4fbe5bc371f933163bcf9642191d8f8d05ea36e44c9840c9f8455958a50fb552" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.872Z" + "updatedAt": "2025-12-08T15:00:22.865Z", + "postProcessHash": "0d8db8ff1cab39f94062a72d1cfa8908d17b01059de7fb7860a945dd68dc8398" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.877Z" + "updatedAt": "2025-12-08T15:00:22.880Z", + "postProcessHash": "e020b5de1c77c03c638e76fd2913ef7a48a6201c30ae54442cf077f4639b038b" } } }, "bae5da556fcdb4d60769c66cab26c38aec89873d704e2b222243dd158a35dd5d": { "2a1568eab4377e4e930b99734f26b39156f5a2f8d369329b9a2d3d8af01b67ec": { "fr": { - "updatedAt": "2025-12-01T18:59:35.872Z" + "updatedAt": "2025-12-08T15:00:22.866Z", + "postProcessHash": "e8203b0e45a2e78919a10bd18b8cb552b1219af095427cd35d97266e610f1c9f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.874Z" + "updatedAt": "2025-12-08T15:00:22.872Z", + "postProcessHash": "88b8935ba958f044d7eb7bcfa7a8025961e5e035cfeb25993c318c38bcacd183" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.876Z" + "updatedAt": "2025-12-08T15:00:22.879Z", + "postProcessHash": "ea759fbaeea1e3493b238ae9dab7735cca2c3a00fad4fdb10637917e06dd28d4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.883Z" + "updatedAt": "2025-12-08T15:00:22.892Z", + "postProcessHash": "7dc2da99d678899260b067da84d01c2557039188da03f120f7df0f0d593947d2" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.885Z" + "updatedAt": "2025-12-08T15:00:22.897Z", + "postProcessHash": "4c9e4ea530f3dc51c322246f878e112257482298047d8215d83569ab6547a6bf" } } }, "d4438a2b7cf9cb61b618608d0869260bd4136e3863bb0aa44b3f645a94a5a888": { "cce24dd1d30bdfc0b0d50fa82b0f001372547522fb754e3ca597b33b7aa22096": { "fr": { - "updatedAt": "2025-12-01T18:59:35.873Z" + "updatedAt": "2025-12-08T15:00:22.867Z", + "postProcessHash": "59d173cdf4a3eff92be69640cb62cb4aa9f6b169d5405dcbf0080b9497379c50" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.873Z" + "updatedAt": "2025-12-08T15:00:22.867Z", + "postProcessHash": "7da2df0d0295f6ce2b63d55f55ac2e9c397d408fea2b0bb38540a89a5c855823" }, "es": { - "updatedAt": "2025-12-01T18:59:35.873Z" + "updatedAt": "2025-12-08T15:00:22.869Z", + "postProcessHash": "3373238a48e4430aec46fdfca6955dee5b017236adb0cc320a1b31938afcefd0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.875Z" + "updatedAt": "2025-12-08T15:00:22.876Z", + "postProcessHash": "3f5addcf67a6a6973106aadcc53f64f6123182242ff671377e6ee0359b57b5e4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.884Z" + "updatedAt": "2025-12-08T15:00:22.896Z", + "postProcessHash": "f3d3b40a4aae4ce76d6c26d2874b10704405ee3eb7ee085554a9054b6977740d" } } }, "e5451f6b5f832d3bd7a0e592178417a5a493985340a5e38274d32278372ab1eb": { "7d641bb2a87f9221685890de924abce1ee484add81a6bcfc6138aec3a1d65352": { "es": { - "updatedAt": "2025-12-01T18:59:35.886Z" + "updatedAt": "2025-12-08T15:00:22.846Z", + "postProcessHash": "10505270639a3bdee53c6d98c7ec02f8eda47e3ee8ca35c617d8d815dfaa0eb0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.889Z" + "updatedAt": "2025-12-08T15:00:22.847Z", + "postProcessHash": "6042ed436e1b607016c193eea7ea61db6358602dbe5cdfc8cbc3e178aa4b6c47" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.889Z" + "updatedAt": "2025-12-08T15:00:22.848Z", + "postProcessHash": "4ac42a95e71bb40a093281eec01e662cc8c0e6af16174887bf7d980d759ed971" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.890Z" + "updatedAt": "2025-12-08T15:00:22.848Z", + "postProcessHash": "b29e8474156c191ba54adb7b90b6b63c0a5b007aa211b71965d64986278a86f7" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.890Z" + "updatedAt": "2025-12-08T15:00:22.849Z", + "postProcessHash": "6c1423e1453a996e8fd1ee1089db48b23a157fb83e713d0d41bb42b7b03e2323" } } }, "18c4768dfc8507d36e8ed4d81c0c0dd1514c2787d6416879413c948c9700542f": { "6aff491d3f46cf79f8fbcf7e1bcb2c7e52851a95fa6bc656ac2ea1d4d0d06677": { "ja": { - "updatedAt": "2025-12-01T18:59:35.886Z" + "updatedAt": "2025-12-08T15:00:22.846Z", + "postProcessHash": "a59174e3798bb867889630eb7a2d6819ec23fe6f3f5f8c0a65a81415455a7804" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.890Z" + "updatedAt": "2025-12-08T15:00:22.850Z", + "postProcessHash": "a0b83cc5cb7a2004bf0808043b3c51f6045cea8af5d1093f6cb2189afa37e3ba" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.895Z" + "updatedAt": "2025-12-08T15:00:22.936Z", + "postProcessHash": "97811a0d23955a8cea94a7f18ed620eacbf64a23a1dfc0acd430a4868c69ac4d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.900Z" + "updatedAt": "2025-12-08T15:00:22.941Z", + "postProcessHash": "e4fee75d7e31f01e88ae9a3584a56672f490ba0453965f2208c7283479e50186" }, "es": { - "updatedAt": "2025-12-01T18:59:35.907Z" + "updatedAt": "2025-12-08T15:00:22.959Z", + "postProcessHash": "1c9d2b6896a452b57dea18d9ecaa5b652ce8673f8a1ff3ceed14cdfc69c16e78" } } }, "85e177f44bfd9b2c3575bd054c9cbc08acbfd601cde2e499ae2e4cdeb9877446": { "74fd66d4af12b6a9ba68e8963e8e8decba8f3f2f36a4b799560c5ac79da941b0": { "ja": { - "updatedAt": "2025-12-01T18:59:35.887Z" + "updatedAt": "2025-12-08T15:00:22.914Z", + "postProcessHash": "28b69effda97375d627c6b9946667f658478d8a57f83d82edb48402c323c9eb5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.900Z" + "updatedAt": "2025-12-08T15:00:22.942Z", + "postProcessHash": "30f30ca0872ac03d702c1bf90352b5696ed3edf02ec69f2f1bf4c6beb50a9286" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.901Z" + "updatedAt": "2025-12-08T15:00:22.902Z", + "postProcessHash": "e9cd431735613e0e8153006cdbf5f5a067690665f38aedbc90b602ec45c6c62a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.903Z" + "updatedAt": "2025-12-08T15:00:22.947Z", + "postProcessHash": "cd674d0446b05fe1b03226217ef7a02d8b16dffdf62d5c5858687061e17b50e2" }, "es": { - "updatedAt": "2025-12-01T18:59:35.907Z" + "updatedAt": "2025-12-08T15:00:22.837Z", + "postProcessHash": "ca5911a42b4dcb18b3ba74a9bb7ba7a160aff6923ab6d0d05349aa48428664c0" } } }, "3e28db28d39b699d92edc9e76788079dc49fdadc53536a7cee319e9c7b30f0f9": { "1bc27d8dc3f290a213351137d50a08057cc163a8ab4a83e2419068f1c50001f4": { "fr": { - "updatedAt": "2025-12-01T18:59:35.887Z" + "updatedAt": "2025-12-08T15:00:22.911Z", + "postProcessHash": "3da602bc8c6d1a90355738dd79ef8489138ed3048d1b665f5701dca31f969353" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.888Z" + "updatedAt": "2025-12-08T15:00:22.913Z", + "postProcessHash": "b22c043e011ef027c973d18d1e63af292a99dd80cabd5db95b0913bcf8bef9c8" }, "es": { - "updatedAt": "2025-12-01T18:59:35.897Z" + "updatedAt": "2025-12-08T15:00:22.910Z", + "postProcessHash": "e755eeec3353934ce37fd2e692fa8dde67f9c84c1e437d11819b9dc69954c118" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.900Z" + "updatedAt": "2025-12-08T15:00:22.941Z", + "postProcessHash": "5fed5e56cef214b1f3d3b73620112c310f4c99d23af81353a21f5711d6fc61c6" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.901Z" + "updatedAt": "2025-12-08T15:00:22.909Z", + "postProcessHash": "59ad520034bf807dfc0add86e424fbe23f3ba974a2a93f577048b1d2499506c3" } } }, "c99079a7d71f8fdc2873e24d135ec4b0a060a69ec0515765839d38cf24af77a6": { "80f7e5e55bb5f74b12cc89b001f21e80c820e672c15a71e94ff200b182499d99": { "fr": { - "updatedAt": "2025-12-01T18:59:35.888Z" + "updatedAt": "2025-12-08T15:00:22.909Z", + "postProcessHash": "bc4edfd5957e3647b7696d182a60bc8ed6c287935402f33f1f23bbc89ba04a1c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.888Z" + "updatedAt": "2025-12-08T15:00:22.915Z", + "postProcessHash": "d1741e64d3b2118f10c09ca82cf49d0587d147105cd6f5e79c49db89ab0a69d0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.897Z" + "updatedAt": "2025-12-08T15:00:22.908Z", + "postProcessHash": "d6f9999b29e3f8af729673c16e50d73ed9690ec7a600b65574e02cc638c6f4e5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.900Z" + "updatedAt": "2025-12-08T15:00:22.912Z", + "postProcessHash": "0bbc8c78ef8a7dcb8a677ccdc1da719966f2349a6c17af127f2dd9b6174989e0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.901Z" + "updatedAt": "2025-12-08T15:00:22.943Z", + "postProcessHash": "42a5faca2e73a26816bcf7e4420b5f44ed267821925ce5baaadedd4fc0f1a987" } } }, "c9d302c499ed566f6c53cdc8719c4b64bf25cb2d352b2db1498330fdb92a49c2": { "0512d6dcf4c20d10ec897f69f28e8ca319ef900950d7aa3d4e44d6f9f948fb04": { "ja": { - "updatedAt": "2025-12-01T18:59:35.889Z" + "updatedAt": "2025-12-08T15:00:22.916Z", + "postProcessHash": "982ef1909feb0f990c2facb5f1942bda44cdebd79bf475faad62afda456fb48f" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.889Z" + "updatedAt": "2025-12-08T15:00:22.917Z", + "postProcessHash": "b15dca62e01c7428c713cf3a613a5788eb7d730ba9122cc9dbcf2047dfe77275" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.901Z" + "updatedAt": "2025-12-08T15:00:22.944Z", + "postProcessHash": "5ac63dfe7b6ce8468dff15c82be244831297c9ce92a7524a4ca4c3dbc4cf6340" }, "es": { - "updatedAt": "2025-12-01T18:59:35.903Z" + "updatedAt": "2025-12-08T15:00:22.912Z", + "postProcessHash": "95f9cca525bb555207d90874eb6437a0827e0c0f791809cc9b218a72f66a4e5b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.905Z" + "updatedAt": "2025-12-08T15:00:22.951Z", + "postProcessHash": "d6da1504f3ec18fa681a54d35ac0eb20aafea1fedae2987820493e180a9c0021" } } }, "dc9f58d7b1774c99b63a6e6df794f3227596f3c50efc348f6731914a61fd9865": { "5ee7701472e46277b2bf368ba8a70d8e3d9af0a4463372249b43be0f228bd23f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.873Z" + "updatedAt": "2025-12-08T15:00:22.870Z", + "postProcessHash": "6986cc723e27d086ef02cc97b7d346ea9f4298b800e449600eb3cb672f2bb42b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.875Z" + "updatedAt": "2025-12-08T15:00:22.874Z", + "postProcessHash": "e8aa0bbb82f566489bd35b9c13417dd4e031b9b906de250f16751ce5440e4228" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.876Z" + "updatedAt": "2025-12-08T15:00:22.877Z", + "postProcessHash": "5f63fd98539631937fd0be16887f1df268c481d43d36efedc84c37fc8b7a3cbc" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.878Z" + "updatedAt": "2025-12-08T15:00:22.884Z", + "postProcessHash": "aecb945bea49cfce942994d92200421fa7ef6bd488923265019da3c111d24e9d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.878Z" + "updatedAt": "2025-12-08T15:00:22.884Z", + "postProcessHash": "b967525b527e45a2c21269fd2c27f360ab3bc22074858888bd2b6bbd2728c913" } } }, "737aad5309ad686f8bb1a3e3266557ba4e3627e02ee82218ef0a19a6fce276d0": { "9c709341afa567610de31a8eb9a65f8e3cc9d69c0ca1ec1c1b8505e409738dd3": { "zh": { - "updatedAt": "2025-12-01T18:59:35.874Z" + "updatedAt": "2025-12-08T15:00:22.873Z", + "postProcessHash": "009c0d3eecf0a48b718a827cf64c3931524592a3c6a6cb60a18b8e8beba8fb19" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.874Z" + "updatedAt": "2025-12-08T15:00:22.873Z", + "postProcessHash": "a2b1450668076ad583d61faabc059bdcde4bed1f8887bab917d672b226b2bd6e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.875Z" + "updatedAt": "2025-12-08T15:00:22.874Z", + "postProcessHash": "ed04b50ac4ee418c50d7213582a821ed7b3bbe2e9d9d6e166c676d35bc40429c" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.876Z" + "updatedAt": "2025-12-08T15:00:22.877Z", + "postProcessHash": "7dbcc50981310355a260df077142010b3b34e035a0ae3f3cc242baeae56fdf2b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.876Z" + "updatedAt": "2025-12-08T15:00:22.878Z", + "postProcessHash": "242edad69ff3690e2ec51255905888efcb1e1407b968c02092d35627e6fb494c" } } }, "7ea35946f1f2bca19b7c4e9d624e24c4875a0682aea7c0fa7a00c722512a86c7": { "86417666353a5a998fcc830b8b3172b493f95ae13a75766fefbe302b4ffc17aa": { "es": { - "updatedAt": "2025-12-01T18:59:35.878Z" + "updatedAt": "2025-12-08T15:00:22.882Z", + "postProcessHash": "21646ec80476f476d9c045d694b3a16f1e41de76cd7a9190a34fb56b5ae21a28" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.880Z" + "updatedAt": "2025-12-08T15:00:22.919Z", + "postProcessHash": "bbc48e22fd89b7ad831ef06dca74061d287e64f8956d1dc6e36c0a6aae54f3d4" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.881Z" + "updatedAt": "2025-12-08T15:00:22.921Z", + "postProcessHash": "03d6e32e202d1b42643a5c6f0427a4234851f4563d9ab03bc3f63229979a56a4" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.885Z" + "updatedAt": "2025-12-08T15:00:22.961Z", + "postProcessHash": "8fdd277215e194bcb9f042f04661b42f85d0224e17c82d3aef290e90034ba560" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.886Z" + "updatedAt": "2025-12-08T15:00:22.962Z", + "postProcessHash": "97d94af9d0d2febc29cad890bfed1218c2c6a6462a9f0d1b18c950e896c4605b" } } }, "09126a7362fcfdd43668d751f3036ebfd2bcc4d1da8a194a18cfba63e6e3e659": { "a387eeb396f3e18d3da25159ce881d0bd0a70bcebe6dcb1045f9687f46097726": { "es": { - "updatedAt": "2025-12-01T18:59:35.878Z" + "updatedAt": "2025-12-08T15:00:22.882Z", + "postProcessHash": "4087fc573452ff823e35758440492c799969ec35528e783c53710affe8976b52" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.880Z" + "updatedAt": "2025-12-08T15:00:22.920Z", + "postProcessHash": "afb88251f5f290256c94511af8916d69d84b0e939ebb4b480d92d16d527bcffa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.881Z" + "updatedAt": "2025-12-08T15:00:22.928Z", + "postProcessHash": "ebd2315a19061f5e386796e163ceb52453e6b72edc681446a387af074c75593a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.882Z" + "updatedAt": "2025-12-08T15:00:22.891Z", + "postProcessHash": "d0c11189ef7dc8e3dc290bdf7c47d118e074f2609cd19ac0afd55a5ab283dfa2" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.883Z" + "updatedAt": "2025-12-08T15:00:22.893Z", + "postProcessHash": "64786d51ff3dc65eb1dda2362c0019ad44acf631835fc3fb6af85743ad804330" } } }, "b549f9163243ac2b9ea3af64e60476d2d5462568418fea77dad22d5c7b3e0b98": { "1823e2fffbb1083bd35225ef599563e8d2a278195144f97ca6d2be4cf8029a99": { "ja": { - "updatedAt": "2025-12-01T18:59:35.879Z" + "updatedAt": "2025-12-08T15:00:22.885Z", + "postProcessHash": "9a46a49f866be5e9efb529f61b36f39bbf019291b1a8e5cc0f337dc5281df6b1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.880Z" + "updatedAt": "2025-12-08T15:00:22.890Z", + "postProcessHash": "9238e0afa761b633bf4cbb1b8b408c5173893232a46cec87af9d7333258d8bc8" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.881Z" + "updatedAt": "2025-12-08T15:00:22.922Z", + "postProcessHash": "5c148893681388979b9b7a55927b0c00f83821e78a65880751219d53bba1fa6c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.882Z" + "updatedAt": "2025-12-08T15:00:22.931Z", + "postProcessHash": "ea811c6e9a1c8240032b153d447be0275eb09400e57fbd296f79a475fae7d67e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.884Z" + "updatedAt": "2025-12-08T15:00:22.959Z", + "postProcessHash": "18e3985ad48950a74849fce599e810974df482fbc817082e035d6b03c253f912" } } }, "98068ff7ee2c81dee29cb63a7f6db14a58f4ee8b8424f8229bb54d49322aca0f": { "74dda50940d70cc62116496ae11ed60299f94aa19615a8d1569da2910f9efeb1": { "ja": { - "updatedAt": "2025-12-01T18:59:35.879Z" + "updatedAt": "2025-12-08T15:00:22.889Z", + "postProcessHash": "6cdf6ea1cde20c73db8ccaa122784baca0d59a247e390cc2f4b5451fc2e1a043" }, "es": { - "updatedAt": "2025-12-01T18:59:35.880Z" + "updatedAt": "2025-12-08T15:00:22.891Z", + "postProcessHash": "bbdd5cdd7d5b6087e12f038873094513a78a4a3729eb7102b015eca319ee6542" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.881Z" + "updatedAt": "2025-12-08T15:00:22.921Z", + "postProcessHash": "e2f0975569420664bc1fa8a465dc1798ee71a56a4f209756b61258f5076f6185" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.882Z" + "updatedAt": "2025-12-08T15:00:22.928Z", + "postProcessHash": "32c7e6632ac286bdc306487a53b793af233dcfc7f40b1edfb302f5595afb787b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.886Z" + "updatedAt": "2025-12-08T15:00:22.963Z", + "postProcessHash": "a28b177bc0b2bc40fb1b6eeabe4f9a88dffbdebab9c6cdde8f4857fe765e7740" } } }, "080e9e2275c60d42b25c7d3a42c38babdc389c3a6d01dea651d0a5f654b482f8": { "865d45e058ee2dc074b3d79d51a21a127d1bbd3af4b958bcbdd3d149a3f10938": { "ja": { - "updatedAt": "2025-12-01T18:59:35.883Z" + "updatedAt": "2025-12-08T15:00:22.932Z", + "postProcessHash": "95b4617536142705cfe4b66eacb47b40d6bc5ec5c2da30493b32ace60f2dee66" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.883Z" + "updatedAt": "2025-12-08T15:00:22.938Z", + "postProcessHash": "bc9b5b36a1d90426393bfd0b19151aa55467616fae4185db52531a4542e5f68c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.885Z" + "updatedAt": "2025-12-08T15:00:22.962Z", + "postProcessHash": "c934f0d507bc458870e86321e7fe63e5a979591418bdae5ca9e1ebe0fa11baea" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.890Z" + "updatedAt": "2025-12-08T15:00:22.850Z", + "postProcessHash": "0fa66d55bf401b964779e5b6fad2290a1508550f4f482b511860932b26b3e523" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.892Z" + "updatedAt": "2025-12-08T15:00:22.885Z", + "postProcessHash": "6646174a836044ed8318e8ec8bd548a38d0e0507093c8d3f528d981ecf543bcf" } } }, "af49fbaa2a555043e4d81eebfa65486c7be9a264ace1bafa756c7856ffaead62": { "604abc5b9cad364e3798e74e490b84541e8cc631a60fb2a1177fd607607ffe9d": { "es": { - "updatedAt": "2025-12-01T18:59:35.909Z" + "updatedAt": "2025-12-08T15:00:22.842Z", + "postProcessHash": "5997900290f420320ad2d0b69ee1132809edd9218b31d90357656d2f81ae0537" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.914Z" + "updatedAt": "2025-12-08T15:00:22.835Z", + "postProcessHash": "50b2acfab2eb55237e20b76cafe144b92527365c46ef4358ac559760b3956e7d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.914Z" + "updatedAt": "2025-12-08T15:00:22.840Z", + "postProcessHash": "9b9e6517598f2f8b198598c475887dea7efd611b88ce28c09106f11d4924b01f" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.916Z" + "updatedAt": "2025-12-08T15:00:22.841Z", + "postProcessHash": "e734ff7b1894218c6d929a170751bd31652d24a2609517e16f10f5ce9af5cd74" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.918Z" + "updatedAt": "2025-12-08T15:00:22.839Z", + "postProcessHash": "c1847a7074007acaef1378b43e51b57f0183dc7560b2c289a8e24d218e9d0443" } } }, "654b798886b8d8a95471b8159040ced8259ea9a060c546e4a03a43614734633f": { "2a3825b484776a8cc9d69c91f16670c8a4e6a35d3217e4047b584bbaa3bc5378": { "fr": { - "updatedAt": "2025-12-01T18:59:35.909Z" + "updatedAt": "2025-12-08T15:00:22.906Z", + "postProcessHash": "4841bb3d8e6d4abd58b091e4ef814aa3136fdd7b5c33e11953c2e52ef8d35bc5" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.911Z" + "updatedAt": "2025-12-08T15:00:22.837Z", + "postProcessHash": "efd08bc4d7c8c1ffaebc890bfa48488763fa63a82bef2ceed1836fa7d23fb71e" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.916Z" + "updatedAt": "2025-12-08T15:00:22.905Z", + "postProcessHash": "1e5ee337bf14badbc692eb3ba3bab13a679263be8d8f8ed0eccbfb4285bbd439" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.919Z" + "updatedAt": "2025-12-08T15:00:22.904Z", + "postProcessHash": "9b9e103dbeaed505ea9530af0b0dbb61463df70029a7209b6ffbb99b5b80264b" }, "es": { - "updatedAt": "2025-12-01T18:59:35.920Z" + "updatedAt": "2025-12-08T15:00:22.958Z", + "postProcessHash": "de0d08d5a5fabf3ccd840cfa22af7fe982a3c8151b42e78ba20f4ea01462b7e6" } } }, "c93efd216e26b7981e63cac7ffa0af5b0c0ea9d29de601ae1b7fb3c2a88fec7c": { "42509b581f611a34f065c33782da7f816f34a56f59d93f141e29d140dad11836": { "es": { - "updatedAt": "2025-12-01T18:59:35.909Z" + "updatedAt": "2025-12-08T15:00:22.917Z", + "postProcessHash": "18dcfdfbbdcbc4014d1b317485378a8c1d4ce0a115b08ed16cecb3007a7790a2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.918Z" + "updatedAt": "2025-12-08T15:00:22.956Z", + "postProcessHash": "ec907e15077c8a067ccd61a4f2d91d602301975505e32e7ed15ad9f61cbdf662" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.919Z" + "updatedAt": "2025-12-08T15:00:22.957Z", + "postProcessHash": "cddaf93b48f556ef192c9bf18c08c5e3d9baee32947dc6e054322c7fb2a95f54" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.919Z" + "updatedAt": "2025-12-08T15:00:22.958Z", + "postProcessHash": "d9494805687eb7100ea8f0e3613e33897179df6dc7862ed2527ba0de42c3f223" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.920Z" + "updatedAt": "2025-12-08T15:00:22.958Z", + "postProcessHash": "5c428eb0cf46e68b982d92403defebcfa65be19d687430d1f407df68e3daac09" } } }, "942d13d3962dd5fdc5ab2a7b1574432cd5374c2ca3f070f9a35c37cbd4442e2b": { "2602bbcd3ac5e1bbb881e313c430f9c13e0835786c0edd5279cfb5415b27a15e": { "fr": { - "updatedAt": "2025-12-01T18:59:35.910Z" + "updatedAt": "2025-12-08T15:00:22.836Z", + "postProcessHash": "e9342d28370cd952f43f9d8db7f35ae84f1847a9d5be925045bd289b8efae3f1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.919Z" + "updatedAt": "2025-12-08T15:00:22.841Z", + "postProcessHash": "f7ccc7da3436f9f8fc37864464e46fa33eb01540b7c6ad84991acc2707bd9de5" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.921Z" + "updatedAt": "2025-12-08T15:00:22.842Z", + "postProcessHash": "8dea08032c8d922063b90c10cc91ec9cb91f4bc49e405b8671e5159d3fc38b87" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.921Z" + "updatedAt": "2025-12-08T15:00:22.973Z", + "postProcessHash": "737b8fe149e717b88fed0cfa4c43f261ab2887a2ec23819f82d88332b882b3ea" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.922Z" + "updatedAt": "2025-12-08T15:00:22.974Z", + "postProcessHash": "00056eb3c6864d84723ae7ba487ffa2c2ffac86257c0e3f5cdf2a290e733ebbb" } } }, "aee66e2e299b1d92bdcad7b20522e0bd1c1462128f1d4dc1b694cbfaf087b6bf": { "dab84ddaae43f703650c89770729f6ca5fbfd3a40a8e37fb9965a2b13d20953a": { "ja": { - "updatedAt": "2025-12-01T18:59:35.910Z" + "updatedAt": "2025-12-08T15:00:22.918Z", + "postProcessHash": "e2fdb9d67220c165fbd2007b2b8130a340011e0eeb23417587f077ef71e23bda" }, "es": { - "updatedAt": "2025-12-01T18:59:35.911Z" + "updatedAt": "2025-12-08T15:00:22.918Z", + "postProcessHash": "84401c632fdc6e19c39fde5abbe84e36cfc76977452064155df47386d7e77cbe" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.911Z" + "updatedAt": "2025-12-08T15:00:22.919Z", + "postProcessHash": "5f70b4285435914724dd495759ca36b0ca003a822da4b673a352ca8461971d94" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.921Z" + "updatedAt": "2025-12-08T15:00:22.972Z", + "postProcessHash": "b03664f40d17d88077fd12be358830609c9776b9daf0b52cc1e8bf00b84246cd" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.928Z" + "updatedAt": "2025-12-08T15:00:22.985Z", + "postProcessHash": "9655ede8f060104b6cd19f7001e1aef22c916757b401e192ffcee99d04ca6408" } } }, "5e545735a0c99c1f2e151e8ab50394e6934fdd565324107d385040db60e4765a": { "9b098ab1a95803b888e576c11d518c294d1e857602ce565a6ae6c8d98950f054": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.910Z" + "updatedAt": "2025-12-08T15:00:22.904Z", + "postProcessHash": "0e3bcdfeba2ad92572cf6825bb73411ffe990ddfa42ebdd62a29a00dd13f49b9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.917Z" + "updatedAt": "2025-12-08T15:00:22.954Z", + "postProcessHash": "bead1c87114799195b726b5b94762875321b9f0e70208500a5e2ac44c4d8a7e0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.920Z" + "updatedAt": "2025-12-08T15:00:22.905Z", + "postProcessHash": "fd88ad1972079022f151bfa2ce961ac5237dceccc2f7d53556e4597bcff36be2" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.922Z" + "updatedAt": "2025-12-08T15:00:22.835Z", + "postProcessHash": "b2af0a5d73cfcb249c0c5143bda2336fc70c0dc6d92bf64fb35ba24deb6c1218" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.922Z" + "updatedAt": "2025-12-08T15:00:22.973Z", + "postProcessHash": "18a5269f5ed6e8acb1d8d9b3d563e6bcb84441eed88cb662a4ba41a024ff52e2" } } }, "9b97f2e017159314690015b7f3a0801c1ce6dd1e3d6c0c42f6431ec7393d560a": { "69704b9fbdb9a299e4bd387b7175ca7836f935179f82bb1e738c4805646cfb50": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.891Z" + "updatedAt": "2025-12-08T15:00:22.851Z", + "postProcessHash": "bd5e669c0df4497adc3744008c66fb1158a3be746c170d434ab498aca96e9e16" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.898Z" + "updatedAt": "2025-12-08T15:00:22.939Z", + "postProcessHash": "3481bd8bb647dbca575503de549eb1b401c75fefaf6da549c9831986da829afb" }, "es": { - "updatedAt": "2025-12-01T18:59:35.899Z" + "updatedAt": "2025-12-08T15:00:22.940Z", + "postProcessHash": "e3dda20cfc82a6cc36de2cb9530ef272769fc009befb177999d672e140223474" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.906Z" + "updatedAt": "2025-12-08T15:00:22.953Z", + "postProcessHash": "fcec4d8e45a0668ef366c088be8d3955097baf4ce1e12d13a60a252e2389c676" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.907Z" + "updatedAt": "2025-12-08T15:00:22.960Z", + "postProcessHash": "63de2b4711b23ebb9d0760de7670bbcb73f85bdb008cae00c08434723ccf8c6c" } } }, "a8d9a994a49398650a11af2f9d14d5f01f817afb4cb02d47df6c5cb7ddc586c9": { "54315efa57fac40eee410db7c102cfdc47b8a437620f21c75560d66cf81cc71c": { "es": { - "updatedAt": "2025-12-01T18:59:35.891Z" + "updatedAt": "2025-12-08T15:00:22.852Z", + "postProcessHash": "ce6a589e77bcf5d5db12420be1ca99b23ef46ad9d89192e45520b856cc3641f3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.891Z" + "updatedAt": "2025-12-08T15:00:22.853Z", + "postProcessHash": "261e2ff574a4ebe84314f1984b25933a55157b23dbd29c4c146813ef5e8a52d1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.892Z" + "updatedAt": "2025-12-08T15:00:22.853Z", + "postProcessHash": "d6137ec13129cdb9693257d423511b244230b0cdfe53e343b3d703b36683317a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.902Z" + "updatedAt": "2025-12-08T15:00:22.946Z", + "postProcessHash": "4322745ec66e7c5e71301f2a04720381493510bcc57a1225d93f9470bc84fa81" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.908Z" + "updatedAt": "2025-12-08T15:00:22.964Z", + "postProcessHash": "d106bbff487517e18347a8ff935df64855d978e4aae22eeaa259799bcfd01c41" } } }, "4eb40d2fa1e9e4f9861c3c1d496c11b103ee1268582bb3240c1f0c55265ae61a": { "ba06f5b99fcdf530d8268246cafd1d9a851907d931c8d1cc9aecbc61a7320168": { "zh": { - "updatedAt": "2025-12-01T18:59:35.893Z" + "updatedAt": "2025-12-08T15:00:22.886Z", + "postProcessHash": "40aa58ae72384f251349bc3e4c78a59d631bbbd3e6d2c791072b6e070a115ad3" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.894Z" + "updatedAt": "2025-12-08T15:00:22.932Z", + "postProcessHash": "0dc5674ad227a11f171e51a919783026b3f7db5ce6e93a8ab782a7fa369f71e9" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.898Z" + "updatedAt": "2025-12-08T15:00:22.938Z", + "postProcessHash": "3d3c3a712c99a216165ed56ee506f6d65ce6a8e4a87a1989ef31d0889c6799af" }, "es": { - "updatedAt": "2025-12-01T18:59:35.898Z" + "updatedAt": "2025-12-08T15:00:22.939Z", + "postProcessHash": "47c89bad49e38e79c6de084eb30b0f89a68a38fd52ec23bbb382802ccb534a09" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.899Z" + "updatedAt": "2025-12-08T15:00:22.940Z", + "postProcessHash": "780614f52c0ae9eb7d218e25134bf08c2fa12c9054a1a14663d91640ab704270" } } }, "f59be9eeaf2f6b0b6f94c147961c83944433738bdbd24882826668f0249ef9a2": { "d20babdb5079122b8210a9c5e528f1379b80476d4a074542050f3194b61f5d5f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.893Z" + "updatedAt": "2025-12-08T15:00:22.887Z", + "postProcessHash": "d7189ffe7812e50e8c4da20a87572bb785e16f27b407a3582daa090d1340220e" }, "es": { - "updatedAt": "2025-12-01T18:59:35.893Z" + "updatedAt": "2025-12-08T15:00:22.931Z", + "postProcessHash": "e95cdea8ed51bfb58fdace358a41ef9745916c39e2605a3df79b6c06e92cd1fd" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.894Z" + "updatedAt": "2025-12-08T15:00:22.933Z", + "postProcessHash": "d838ecaa3968093de216fcf30be6df73b8296ccae150fbe2cd8e850561d43e07" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.895Z" + "updatedAt": "2025-12-08T15:00:22.933Z", + "postProcessHash": "f1f964c5be1f96606242df66b2114512f270952629bbf071e53d74e41577ad0a" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.908Z" + "updatedAt": "2025-12-08T15:00:22.960Z", + "postProcessHash": "73243f0e45ce513352170da3366135e6261996bd629000593481348702eee3a0" } } }, "bdef105a0806c76b3793c22039f7bc5c58937a9dcfff24f75d0d0f7770531541": { "61d29ec29a2d49236cc43f8c06cbe6187ff7d578dcef86429c07f496e593ac38": { "es": { - "updatedAt": "2025-12-01T18:59:35.912Z" + "updatedAt": "2025-12-08T15:00:22.900Z", + "postProcessHash": "89190fcb3400499783de8366a946a5508849e66965bce04a7e7df9505c0889aa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.925Z" + "updatedAt": "2025-12-08T15:00:22.978Z", + "postProcessHash": "3a4968d818cd36b8fc0e86f6507ad2550b409e3f0eeb8ae50d259de8861233f1" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.929Z" + "updatedAt": "2025-12-08T15:00:22.902Z", + "postProcessHash": "51cb751d92a1cd0eb3ba71c4307631bc65f58fe64b970f7a2848fee273b9fae2" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.930Z" + "updatedAt": "2025-12-08T15:00:22.901Z", + "postProcessHash": "af46639e93179c388ccc22cdcd6053bbaf75295c03a754318b1c5fa04afa6fde" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.931Z" + "updatedAt": "2025-12-08T15:00:22.898Z", + "postProcessHash": "20f5914ac5fc35854c4522538e4a425bbf2f0da7bcbf0b71ca3b8e0325249e1b" } } }, "231def73306a5f12bd4cbc5d075ecccb9c34501f84867cbdd7f5dbe75575c116": { "b4cbc723056d34434418b6e9050bc0c2789020d3cc415b3ab814cb2df11da7b1": { "fr": { - "updatedAt": "2025-12-01T18:59:35.896Z" + "updatedAt": "2025-12-08T15:00:22.937Z", + "postProcessHash": "29664d8b8cb5f44816d14d4bcd6ee126d7edf59f2f35219e307a40ac96e4a4af" }, "es": { - "updatedAt": "2025-12-01T18:59:35.896Z" + "updatedAt": "2025-12-08T15:00:22.844Z", + "postProcessHash": "bcb81772fcf9c10eca6aca4b61774167a604fc68591d4c6e236e8bbfdb0a77d2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.896Z" + "updatedAt": "2025-12-08T15:00:22.937Z", + "postProcessHash": "af456df2c39cc76687d7c973e37fda8d70119f415069f54e399be6ab6d144a35" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.897Z" + "updatedAt": "2025-12-08T15:00:22.910Z", + "postProcessHash": "5c7eeed4fff48579a49b337c5c0ba38df105863212f30b6e703c8eff9831b545" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.903Z" + "updatedAt": "2025-12-08T15:00:22.948Z", + "postProcessHash": "05db29801a46cd807bbd6a63715e6d04df1389d7b79f814afa52228d08977c0d" } } }, "f60b83603ebf0fa9067348ad814d410f5e62608776f7cfb6cb390a4250ee7d81": { "300b3b2cf4b577b648e3ddd5dcf851c9ff74dff779e68891beb61ba52bf920cb": { "fr": { - "updatedAt": "2025-12-01T18:59:35.902Z" + "updatedAt": "2025-12-08T15:00:22.947Z", + "postProcessHash": "3a75d490f26ead8ba0d01cd639782289d3dde45e6e767b707156bb0567a29810" }, "es": { - "updatedAt": "2025-12-01T18:59:35.904Z" + "updatedAt": "2025-12-08T15:00:22.949Z", + "postProcessHash": "ef33f392f51012d93a080cab6e18adbeeeff0aa74eb12ad8b539ea22cafb9813" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.904Z" + "updatedAt": "2025-12-08T15:00:22.949Z", + "postProcessHash": "d8c301b9b45fde70ea5890d895272d472a43d42e58a57e87c5f00e7f4c7771c8" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.904Z" + "updatedAt": "2025-12-08T15:00:22.950Z", + "postProcessHash": "11ba1cabb3337a55fc14ab77bbd639229e471a72063620df5ead75dc72d49b6e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.904Z" + "updatedAt": "2025-12-08T15:00:22.951Z", + "postProcessHash": "2083c133b79e37c1aad3707a499883097acf5c96023b190e5cf5ab0897e7fb10" } } }, "9269d53e165b3d6f64aa94258e6cb4b4487dfc6d6661512e26a4e0fe9508e78d": { "c3ceb07eb2d92e6a7cbc945241d6650cea056f3c4c5aef41d8d32d86251018fd": { "fr": { - "updatedAt": "2025-12-01T18:59:35.906Z" + "updatedAt": "2025-12-08T15:00:22.952Z", + "postProcessHash": "f81597e7be5ce177f35ea50da49b9744371bb100ed9dc5e1268d68211b4d0567" }, "es": { - "updatedAt": "2025-12-01T18:59:35.906Z" + "updatedAt": "2025-12-08T15:00:22.907Z", + "postProcessHash": "8ca54ea066b80592f529e6dc5d89f71d6bbfdb0494b74ed53178dca4baaa038a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.915Z" + "updatedAt": "2025-12-08T15:00:22.946Z", + "postProcessHash": "ed5cc0ab98c7d809f07fe122924d822b79ef73e7ed769a8b12fcde669ef254d8" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.915Z" + "updatedAt": "2025-12-08T15:00:22.838Z", + "postProcessHash": "dae38a9471220e11c95b3ca9fb64e54f54456619bdaf47fa0cfb29ea5287848a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.915Z" + "updatedAt": "2025-12-08T15:00:22.952Z", + "postProcessHash": "b85aaf26f12e3ac15609f2f6bb1594284deda99827e16f1661623dda5e56cbc1" } } }, "d9aa55a34dca59c727f0e2a046cbf3b9107cc48fc7f3be6ba953529674a4121f": { "8bce1abf3cb6ff493450635ef52387ab63597ce23c99cf3c9de3cd4b4db034b1": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.933Z" + "updatedAt": "2025-12-08T15:00:22.915Z", + "postProcessHash": "b35cfe0223f15c010b8140e6a411c0904851cbbc8474e2c3b1b088234b95b602" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.934Z" + "updatedAt": "2025-12-08T15:00:22.935Z", + "postProcessHash": "1639c9899dcd437a3bf44cfcb7f5b3836e21bd09a4cc734c30d35f1ced290a09" }, "es": { - "updatedAt": "2025-12-01T18:59:35.912Z" + "updatedAt": "2025-12-08T15:00:22.935Z", + "postProcessHash": "654b125672cc535a1b1dd239906cd1f37fce0326ec27ea6cdd3753971d8d1fd0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.934Z" + "updatedAt": "2025-12-08T15:00:22.936Z", + "postProcessHash": "4096669ce6ffcc73f6273097a72322bb2a1bd7b29d4f5b0cefeae8eb0eabb143" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.945Z" + "updatedAt": "2025-12-08T15:00:22.981Z", + "postProcessHash": "a85a1acb63688e426af276a2dfb066750dd74191c32e61b729e672fb65da1663" } } }, "78fd0859b9ef67d75e102e6eccb48f4d10a521a818c9876c52ea794a5429f7e2": { "1f5114fd0ca596b3c07b7e906b0497ec45ecd62f95089548eb770c190b35f4c6": { "ja": { - "updatedAt": "2025-12-01T18:59:35.934Z" + "updatedAt": "2025-12-08T15:00:22.930Z", + "postProcessHash": "c2c776abb09989ffb646d1b5c1136a7540e7c6298118b8b5ec6204cec34304c0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.944Z" + "updatedAt": "2025-12-08T15:00:22.979Z", + "postProcessHash": "f8cdb889d0536465cf4b455d58b0edf48ad2d3a43edb7acc1d817068fd0313e6" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.947Z" + "updatedAt": "2025-12-08T15:00:22.987Z", + "postProcessHash": "fe3a1a70c9581bf4d47099ef25c1fc835d9a7eaad3add64d22d71a110e63a57c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.949Z" + "updatedAt": "2025-12-08T15:00:22.992Z", + "postProcessHash": "96d8512b8a47a25391ab617c8a0db742fd3bfd0935c31b368e089099f5f8e15e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.950Z" + "updatedAt": "2025-12-08T15:00:22.992Z", + "postProcessHash": "d09b5fec1aa959e6dcea4c0d1c1e196962b9580a3dee94ec48e8bf1a5f29817c" } } }, "f552a70004369d44fe84a7e31600b7a14d1ebbf6edee5200b342e181cf04cee9": { "80efeb3f0c445a232aaf22475e008c275df259e143fb4a6b24c8655a6774c74c": { "es": { - "updatedAt": "2025-12-01T18:59:35.912Z" + "updatedAt": "2025-12-08T15:00:22.934Z", + "postProcessHash": "eed61671113c215723607e9f9b16d29e406a78d16bc587953ebd013afa0f8e75" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.926Z" + "updatedAt": "2025-12-08T15:00:22.982Z", + "postProcessHash": "25eba28d7a08cd7a9180cd1656770f18c828c16a44b585490d6a12c0949e9d65" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.926Z" + "updatedAt": "2025-12-08T15:00:22.983Z", + "postProcessHash": "ccf24aa799897d6993ffd6b9e25155a4d57778b93e6ce7eeab2eb5220a736ab5" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.930Z" + "updatedAt": "2025-12-08T15:00:22.989Z", + "postProcessHash": "c56027df64f1ce66be7de10cd618cd5cc69c54656d1f7e07fc2e3fa743b63db4" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.931Z" + "updatedAt": "2025-12-08T15:00:23.025Z", + "postProcessHash": "ae078531134e4f7bf6d088aafad5b6e9cfe5369bb63ed333c209c25022933b90" } } }, "133b8dfd524e3963d57d1468ecc88facc39706203200ca77dc151c240d017e5b": { "bca3d4e09eeb9f8375dc026b3c908b066cb2d46d7981e3dccfcacb2b9611be5c": { "es": { - "updatedAt": "2025-12-01T18:59:35.913Z" + "updatedAt": "2025-12-08T15:00:22.945Z", + "postProcessHash": "16e0acb2190c46c4b5bb4927fc9e8ee69df3c65d41d2c6a28a2b96405b3c4206" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.913Z" + "updatedAt": "2025-12-08T15:00:22.945Z", + "postProcessHash": "978893c75e810816eb1f741d360754dc0084498625e58571ca5b476a11d010d9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.916Z" + "updatedAt": "2025-12-08T15:00:22.953Z", + "postProcessHash": "cfe7a91df8b5d3e40173d2c007fe9673276bccdb329b507901952ba52935bc69" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.917Z" + "updatedAt": "2025-12-08T15:00:22.955Z", + "postProcessHash": "c0b328b26a7fd7211d24268b9692979c65343e77d52f0a22abed34d093e76983" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.918Z" + "updatedAt": "2025-12-08T15:00:22.956Z", + "postProcessHash": "9172ffc8700ad972ba747dfc93fbac4bb9c75f0faf13cf1452a2c109b5a81faf" } } }, "2138e99ef624259028c5aeac293c5d1a9cf5052fd226bb54566e81f73e38ae6b": { "d8d270da5da8a273682369347c167be2766d09fdf02faedfe4e9a995ecd54812": { "es": { - "updatedAt": "2025-12-01T18:59:35.935Z" + "updatedAt": "2025-12-08T15:00:22.964Z", + "postProcessHash": "6769e2ccfbfe811a5929803b4634265546842255d0f33e0eb917dbea78904019" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.935Z" + "updatedAt": "2025-12-08T15:00:22.965Z", + "postProcessHash": "36ff92dec9059d4aac1e49e9bd56b1fdd32f4746ff4a90adc366de17a6e4165e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.935Z" + "updatedAt": "2025-12-08T15:00:22.966Z", + "postProcessHash": "affadf76d8db1fe8f61643e88150bfcecaf996d347f85acfb251f873bafd89a6" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.942Z" + "updatedAt": "2025-12-08T15:00:22.968Z", + "postProcessHash": "27700915d85f38f7d6c76bcd98b2905c741cef96e4702efd7dd01ab02cf746df" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.955Z" + "updatedAt": "2025-12-08T15:00:23.001Z", + "postProcessHash": "aa00381498b974c47b5fb5951996ef5ad2a008680fc2bebc8c282613afc87877" } } }, "38280d0507620be24c5227e86eb692c9dd4b36a0067c98ed05553d5fa993abf7": { "514210080e6d835cf83b588affb1da2d24d1d588ecdb62d67d9c499f18280c5e": { "zh": { - "updatedAt": "2025-12-01T18:59:35.936Z" + "updatedAt": "2025-12-08T15:00:22.955Z", + "postProcessHash": "b8ea7946e2836e3f7a81daff16dbf7496598f075b8ec46edac8a416afbeb8360" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.953Z" + "updatedAt": "2025-12-08T15:00:22.997Z", + "postProcessHash": "b5bedf00de14d46515047a41652aa81695cba374f34e38869169c1e53211ce33" }, "es": { - "updatedAt": "2025-12-01T18:59:35.953Z" + "updatedAt": "2025-12-08T15:00:22.997Z", + "postProcessHash": "da1944b374d2d1e047299a0a7c90a847008829159c0d7ad94f7aac30a707ed1e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.954Z" + "updatedAt": "2025-12-08T15:00:22.999Z", + "postProcessHash": "38ff942eea1bf94198a37de9f7db70fdd9e299d44d81fa23b3720c268abb9ce2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.955Z" + "updatedAt": "2025-12-08T15:00:23.000Z", + "postProcessHash": "c83c5f8d29eb299f6e953dcb848de838903c92c05ba0a10a4335c1474f0092f5" } } }, "cebe29ba12e1172e526208a637ac7389d995fd8288fcf8908bc470cb9169b3e8": { "a1dbe542754e63eb60571290755f26d80ff23e61fcf355187bf3b874d13231bd": { "es": { - "updatedAt": "2025-12-01T18:59:35.936Z" + "updatedAt": "2025-12-08T15:00:22.966Z", + "postProcessHash": "17338f18a4fad578d99709ac4fc6470e73e5b8ad86d5e521ad0e76d328a9b288" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.942Z" + "updatedAt": "2025-12-08T15:00:22.969Z", + "postProcessHash": "06c9a4feca956148f4ec02fd31bcd4780068f0125c223a517d26590ca5a00d5d" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.942Z" + "updatedAt": "2025-12-08T15:00:22.970Z", + "postProcessHash": "a9acd565854e01799a73c0cc918f877ddaea02e15af0895cee77b2876e40e704" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.955Z" + "updatedAt": "2025-12-08T15:00:23.001Z", + "postProcessHash": "54b7b201f881501ac986fcef6cb18daa067356d498a218a70f8259eadcedb879" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.956Z" + "updatedAt": "2025-12-08T15:00:23.003Z", + "postProcessHash": "d53cb9bc3f1f60890c08ac536b68d4d6f984a26c7c0093565c3a235243832a50" } } }, "78b88d2f412b9ba40c942c4f8e853894d49d3349002aa660f1c1fdefedefa768": { "cf519a608cc058c9d79d57c124ee8de21496d02fe8737bfb1ddddcda97d62100": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.936Z" + "updatedAt": "2025-12-08T15:00:22.967Z", + "postProcessHash": "1b4e699384e425f97752116275ba22877dca336785d8b67c255b756ef5ed98b7" }, "es": { - "updatedAt": "2025-12-01T18:59:35.937Z" + "updatedAt": "2025-12-08T15:00:22.967Z", + "postProcessHash": "0bac4161ef34f6649f6ae129ffbc8ba464ab247efe144b979d09168306c8e40a" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.943Z" + "updatedAt": "2025-12-08T15:00:22.971Z", + "postProcessHash": "9a0c892e93107970c89616564beae323dc48862aa8058ba1921cdf92e1ea8c44" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.961Z" + "updatedAt": "2025-12-08T15:00:23.018Z", + "postProcessHash": "02a79d3974916fa4cfeb337fd288dc659356ce39cf33529a91a813ea3670b4ab" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.962Z" + "updatedAt": "2025-12-08T15:00:23.018Z", + "postProcessHash": "9192ee5d4c0104aeef4b8f999328b4f50faa33e984f6fc815162f48e12fe43bb" } } }, "70d06212474e441dac1941746ac58957c8ebda57bc8eba22627cf6d45e1c460a": { "5d0e071301daaa93809d7a0b357a909709b75e3724ef800a2b782f8964e692fa": { "es": { - "updatedAt": "2025-12-01T18:59:35.923Z" + "updatedAt": "2025-12-08T15:00:22.975Z", + "postProcessHash": "b4935541dda901e606637283ad32fa834ff5ce074fd1182c474c127201b1d873" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.923Z" + "updatedAt": "2025-12-08T15:00:22.975Z", + "postProcessHash": "13c9947cd2ef336806ada2ca09ac5005387cd6d19b3fa88fd2f779ffa624e71b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.924Z" + "updatedAt": "2025-12-08T15:00:22.976Z", + "postProcessHash": "cf79e3ac5b911d8ce660aac1619f1362191439091a0920c7a9f8ee799b6c63dd" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.926Z" + "updatedAt": "2025-12-08T15:00:22.983Z", + "postProcessHash": "a88a14f10b9492a79e0045ba6c90c2ebbf0f809ebb9ea2b38125e4d2043a7ad9" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.927Z" + "updatedAt": "2025-12-08T15:00:22.984Z", + "postProcessHash": "9ef690be783b3912cbe8dd38f27b4ffa0922b5125da4f9f9c22393c08314e1dd" } } }, "ab476e5fc0f544de9dc61f7d1b0f23520e5f873096a5aaae94e365f9e2e4ccac": { "b448f9bdab4b71636e776a47a0dd2049fddd90c9959c045623bd0dab67902042": { "zh": { - "updatedAt": "2025-12-01T18:59:35.925Z" + "updatedAt": "2025-12-08T15:00:22.903Z", + "postProcessHash": "e464c0efaccfb6cf3e13871ec9967281933fd0343be54d4aa232d57f928c20f4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.927Z" + "updatedAt": "2025-12-08T15:00:22.984Z", + "postProcessHash": "13952cd97df65fa4c9895c55236ed1b2a03a95b8e00886394717ee663c7d1ad5" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.928Z" + "updatedAt": "2025-12-08T15:00:22.898Z", + "postProcessHash": "0e5728034fd32426d994ec70d46edac0150b68e513d5e61099a85d02f152e6f4" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.928Z" + "updatedAt": "2025-12-08T15:00:22.899Z", + "postProcessHash": "bd32cea006efe981bbc0f822bd6b1ede00af4d74ea4b80f72267c798dcdec3db" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.929Z" + "updatedAt": "2025-12-08T15:00:22.900Z", + "postProcessHash": "b8f67eb96cfaa8905cc01a048c2010cd3f9575fe48d42e47d0af4b48aee73b65" } } }, "557af20914bd33bb2877101eadecb31eb95671c60964be00c2625695e5639738": { "f5e77bf9b18993aa15c3ea440d218725a080c58d40f3a5a7c2a7e84442cc52da": { "zh": { - "updatedAt": "2025-12-01T18:59:35.932Z" + "updatedAt": "2025-12-08T15:00:23.026Z", + "postProcessHash": "68b35408da122ffe67d234eef84a73e534c0cd81c23b9ff0a34a957587100344" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.932Z" + "updatedAt": "2025-12-08T15:00:23.026Z", + "postProcessHash": "15d2e2e3d1da3cf57cea4b96d50bbb0ba7828b6e2aad485d11e9cab6a24f59a1" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.932Z" + "updatedAt": "2025-12-08T15:00:23.027Z", + "postProcessHash": "41f557afb1ff2295a8d14d5b25b8de939f78ad9201d9c4c79f6cc0631a4526bf" }, "es": { - "updatedAt": "2025-12-01T18:59:35.933Z" + "updatedAt": "2025-12-08T15:00:23.027Z", + "postProcessHash": "52fa2e14a39f25a01ee5202aa1fbafc766313f89e7c091146cb59452961da5c0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.933Z" + "updatedAt": "2025-12-08T15:00:23.028Z", + "postProcessHash": "c85b2dce4598a0c4ed4de40d17ebf732a5a29ef4561fee6234e583402dff44cf" } } }, "8a662dbe6addc17aed08c78adc1589876714e37f552e289e6e79b0bec4d3351b": { "b314f1fa54f8a67fdeba7e0ce5cd96856dddda655b142ec5f687c17d5721d58c": { "es": { - "updatedAt": "2025-12-01T18:59:35.943Z" + "updatedAt": "2025-12-08T15:00:22.970Z", + "postProcessHash": "78db354d420f991224c55a6a01698efc21bf306a352737c1ce362677c768c946" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.956Z" + "updatedAt": "2025-12-08T15:00:23.002Z", + "postProcessHash": "7be0508e93497ec57b4d6cca4bf4bc00cd4ec097cabab11ba36974a2ca15bfe0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.957Z" + "updatedAt": "2025-12-08T15:00:23.004Z", + "postProcessHash": "6d68444d4e7a89061a1867ce60fa9dd8e3fc26288750892dc317074134994301" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.957Z" + "updatedAt": "2025-12-08T15:00:23.005Z", + "postProcessHash": "a996e9edacbd1a7f7e04013e4436f1790b33fc7821096a41c5db14d84aed26cc" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.959Z" + "updatedAt": "2025-12-08T15:00:23.013Z", + "postProcessHash": "25bcc7330accd2029aee5fb6796f8a083d56d13b8ceb89baa05a23ed5b8c7edf" } } }, "0e066a6fff080da2cb8a769ff9f502525401d78376b477ddf270ad0f3cdfc6e6": { "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.943Z" + "updatedAt": "2025-12-08T15:00:22.977Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.944Z" + "updatedAt": "2025-12-08T15:00:22.977Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.944Z" + "updatedAt": "2025-12-08T15:00:22.979Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.946Z" + "updatedAt": "2025-12-08T15:00:22.985Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.946Z" + "updatedAt": "2025-12-08T15:00:22.986Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" } } }, "d9bfbcbb33ead35a8ad549442009cd06674bd2233434b0dae7b25336f2e01927": { "f64b33fc7293a8bb248f0339668256889de6d552caab098ce63ab09cc54f03a1": { "zh": { - "updatedAt": "2025-12-01T18:59:35.945Z" + "updatedAt": "2025-12-08T15:00:22.980Z", + "postProcessHash": "fa27d9e6cab4461fc138aa53d5e077fd076be0d67b5c9548ac8f4976c87de265" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.947Z" + "updatedAt": "2025-12-08T15:00:22.987Z", + "postProcessHash": "35545f7e6184f65b8e6e9643aca07c27bd253fe17c51a807c21858676a89497d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.948Z" + "updatedAt": "2025-12-08T15:00:22.990Z", + "postProcessHash": "a5555c18d421648a84d868e126d1c398f040f2afd12bd9cc4a2d547c2f62eb66" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.949Z" + "updatedAt": "2025-12-08T15:00:22.991Z", + "postProcessHash": "20faf51344d82472a883046f6f259adb9fd3c44c3e30d6af1bd91941eb1a9924" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.949Z" + "updatedAt": "2025-12-08T15:00:22.991Z", + "postProcessHash": "fa27d9e6cab4461fc138aa53d5e077fd076be0d67b5c9548ac8f4976c87de265" } } }, "706a393c1ddcfa44bfefbf286c4194d507b39322f660a901734f42c06839f3c5": { "972836d3d4ca127037594d65357629c4fdb6e2e0f5d1d06c5aa6865ab9dc192a": { "fr": { - "updatedAt": "2025-12-01T18:59:35.945Z" + "updatedAt": "2025-12-08T15:00:22.980Z", + "postProcessHash": "e74454138e3856ea185883d156ea40539424c7833020d118e65826654c3c8a73" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.948Z" + "updatedAt": "2025-12-08T15:00:22.988Z", + "postProcessHash": "66cc210a1013fc1f4f0802de20c1c0956d84fbc51e78e2e017784d9b85cb7be0" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.950Z" + "updatedAt": "2025-12-08T15:00:22.993Z", + "postProcessHash": "0bc863132bfb1ddb0022bfeb5f485f25518ca5e41f1a7321c0992851a495bf45" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.951Z" + "updatedAt": "2025-12-08T15:00:22.994Z", + "postProcessHash": "d7849f5ac2e0d99f17f2a6013a6f240f8fcb6968339e2c8b4998dc8cb83b7aab" }, "es": { - "updatedAt": "2025-12-01T18:59:35.951Z" + "updatedAt": "2025-12-08T15:00:22.995Z", + "postProcessHash": "44235579458a5a4a1a23c79ebc7251158b2fa1746625b6d3b10fd9b11a962e7f" } } }, "5f9394c806ef390b45ac4e2c755f17b96a6cff611586d2213b0e8d559f20a508": { "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4": { "ja": { - "updatedAt": "2025-12-01T18:59:35.947Z" + "updatedAt": "2025-12-08T15:00:22.988Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "es": { - "updatedAt": "2025-12-01T18:59:35.948Z" + "updatedAt": "2025-12-08T15:00:22.989Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.951Z" + "updatedAt": "2025-12-08T15:00:22.993Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.951Z" + "updatedAt": "2025-12-08T15:00:22.994Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.952Z" + "updatedAt": "2025-12-08T15:00:22.995Z", + "postProcessHash": "0790d722d29b838f4b1c127154fecdd761ead9baa765f0b315d40386603407b4" } } }, "65809705a9a40a92476d6bb023fa43339be3d49af5643a657474a35d4879afd7": { "5704590d855c5872a6c53716016ca70f057e645d4b4badd1ad2f9936c6b33f51": { "fr": { - "updatedAt": "2025-12-01T18:59:35.952Z" + "updatedAt": "2025-12-08T15:00:22.996Z", + "postProcessHash": "9760a11a92c348785240aa9dc2a9064cc10ff1f4b86d4de65c566056277ab067" }, "es": { - "updatedAt": "2025-12-01T18:59:35.953Z" + "updatedAt": "2025-12-08T15:00:22.996Z", + "postProcessHash": "59b2cfb03a989799c96da6c359979737b849907d9ef871b064f3c6739db0e8bb" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.953Z" + "updatedAt": "2025-12-08T15:00:22.998Z", + "postProcessHash": "2ef7e0870aff3df471902f499ff5903c577d775573f413cac790fae765fd57a0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.954Z" + "updatedAt": "2025-12-08T15:00:22.999Z", + "postProcessHash": "4cf6fd97bfd1e5e7105ce9cef6c80f7754e1f16aab7fd9d89588f724c6648d4f" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.956Z" + "updatedAt": "2025-12-08T15:00:23.002Z", + "postProcessHash": "c06f3068b2cfe815b7a2a9066dbfe7a7994ea12c6c43800dfe0182efecb3a207" } } }, "23483200fb061ac69252d1bf95ad70a444e2a564960d48515f3178575f3fee3b": { "9b6d073cd4facf2bcf231310a39de13ba946751ff1a2e8b2093dbb3212818d9a": { "es": { - "updatedAt": "2025-12-01T18:59:35.962Z" + "updatedAt": "2025-12-08T15:00:23.005Z", + "postProcessHash": "8405a637fbb2bf9fa0e4b08d619006382cf6b24cd60859050c2ebf0d95514b29" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.963Z" + "updatedAt": "2025-12-08T15:00:23.010Z", + "postProcessHash": "9a9d87723b7fef29015c4ea0cfdaae9ec31f4d07480c36a46efd4e69efb8cfee" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.965Z" + "updatedAt": "2025-12-08T15:00:23.013Z", + "postProcessHash": "9a9d87723b7fef29015c4ea0cfdaae9ec31f4d07480c36a46efd4e69efb8cfee" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.965Z" + "updatedAt": "2025-12-08T15:00:23.014Z", + "postProcessHash": "9a9d87723b7fef29015c4ea0cfdaae9ec31f4d07480c36a46efd4e69efb8cfee" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.966Z" + "updatedAt": "2025-12-08T15:00:23.019Z", + "postProcessHash": "9a9d87723b7fef29015c4ea0cfdaae9ec31f4d07480c36a46efd4e69efb8cfee" } } }, "d6112dde2ae704ee925238a1f8431f52a6ff2864128b1f003317b1953e7f53b2": { "245c1a0cb887a3287fb143cdb213a796d35e3d0d8880375cc5ecaf00bcdf308b": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.958Z" + "updatedAt": "2025-12-08T15:00:23.006Z", + "postProcessHash": "e70eb06fe2355a7e5071c88b0f3545cabb902b1d35d4582f355456a6fbcacce5" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.958Z" + "updatedAt": "2025-12-08T15:00:23.007Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.958Z" + "updatedAt": "2025-12-08T15:00:23.009Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "es": { - "updatedAt": "2025-12-01T18:59:35.960Z" + "updatedAt": "2025-12-08T15:00:23.016Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.961Z" + "updatedAt": "2025-12-08T15:00:23.017Z", + "postProcessHash": "3bca8d44f0e053f36966ea19c67917fa342bb96e666c7f0e932fbf192de5cfe2" } } }, "8f24a11f6f59845947084b5250dece1936e99b990203210146d4db2dee359972": { "0338dc5383593e802d1ee4c6d43d0a392dd0fa9f25098614750c7ab59e80a3ec": { "es": { - "updatedAt": "2025-12-01T18:59:35.962Z" + "updatedAt": "2025-12-08T15:00:23.008Z", + "postProcessHash": "119e4f532e605caef034aa8387dac3782d73f99ff20f792393fc955382becc39" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.966Z" + "updatedAt": "2025-12-08T15:00:23.020Z", + "postProcessHash": "b93f13eee0a83d6f30cf855e8a1f577e238e209761563c0b15230e8b2cc0a3fc" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.967Z" + "updatedAt": "2025-12-08T15:00:23.021Z", + "postProcessHash": "ac64129a18b9f7ef11cf96059bd6d036995e28fef5a3c0ed35dc1979820d2edc" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.967Z" + "updatedAt": "2025-12-08T15:00:23.023Z", + "postProcessHash": "7aa8edd9abd90dfd8e789337c974367b580d6ec190b409c6edba42c95a07b485" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.979Z" + "updatedAt": "2025-12-08T15:00:23.056Z", + "postProcessHash": "972d4c0883aee41cc195c878f46c57c5ef9ab1d86ebc1c92a53d198a1bb4b554" } } }, "c49a336e3af240d55840ed155e21cf605fe372d74ebc7374097fe8d9f13b34d7": { "a60dfd40379599baaec784226b54ecd4573c376e7854802676358ce06919ba21": { "fr": { - "updatedAt": "2025-12-01T18:59:35.963Z" + "updatedAt": "2025-12-08T15:00:23.010Z", + "postProcessHash": "196f0502d5d5487a03f31d711346494c4fd24a23886e1a7c61a62232e52c6e90" }, "es": { - "updatedAt": "2025-12-01T18:59:35.966Z" + "updatedAt": "2025-12-08T15:00:23.020Z", + "postProcessHash": "5862743825eacff7c92457eef3d5485daa0fdb5b11454a3a496c37f3b893ce31" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.967Z" + "updatedAt": "2025-12-08T15:00:23.021Z", + "postProcessHash": "468f6a2509688f5d787ad2d042f5ffe344ce7d0ea2bd5e89b7a1832f2756889a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.969Z" + "updatedAt": "2025-12-08T15:00:23.029Z", + "postProcessHash": "0621c9661fbb7a9505b0dbb65fcf6abb15a129dd97a060b61b3e4ed3842389cf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.972Z" + "updatedAt": "2025-12-08T15:00:23.036Z", + "postProcessHash": "208bef106690b6a0c2977de9518e2b834f56f44fae357aac42a323bc92b3f624" } } }, "07a826cc4855544db07d1c4cf74771ab48bf51221348d95ba4ef33af7205317d": { "5c34148e86c678030516c07acc226cfa67b33eaffbf84d1a652645d1f6f5f5a3": { "ja": { - "updatedAt": "2025-12-01T18:59:35.964Z" + "updatedAt": "2025-12-08T15:00:23.011Z", + "postProcessHash": "51e3b93b641dd92fbbfd36692754b2622d229d7224d324b310ddea72354a40af" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.964Z" + "updatedAt": "2025-12-08T15:00:23.012Z", + "postProcessHash": "3d116efd607065665cfb0768eb686ca3b61fcf78b1aeb94dc3ad62950b4bf5d5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.967Z" + "updatedAt": "2025-12-08T15:00:23.022Z", + "postProcessHash": "4b3eb156f09d98ec5dc3784c567f955064a8c84f9de6f45c9a1c8a98d37c1e8f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.967Z" + "updatedAt": "2025-12-08T15:00:23.022Z", + "postProcessHash": "a17cba03a0887799ea5bc129cf619cc98b17128ca0f8a0a73814afa343c36a80" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.968Z" + "updatedAt": "2025-12-08T15:00:23.024Z", + "postProcessHash": "0bb94b285a003fd370f267d2ec5439582ca20f29174b9e7e1cb8c27c858f812c" } } }, "07a52ed75c3c79a38feca98c0eb3710eeecbfa1a2e9d3dd45367949495d769b2": { "18c90d7977d1cb118b290ec53d672322fa68450f09022a9ca39eadbff240d56f": { "fr": { - "updatedAt": "2025-12-01T18:59:35.964Z" + "updatedAt": "2025-12-08T15:00:23.012Z", + "postProcessHash": "892fb02e4b8f171f1a05f7f7a2df433f8e0948a2fe74a67600c40e853b38cb05" }, "es": { - "updatedAt": "2025-12-01T18:59:35.968Z" + "updatedAt": "2025-12-08T15:00:23.023Z", + "postProcessHash": "1a595d782d16666a3ceafa10d1c0e7cb085f23e0cb2ec701505ef3d1fdf6fe42" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.973Z" + "updatedAt": "2025-12-08T15:00:23.038Z", + "postProcessHash": "c40c9c50f5e79960b4b3e3e05b7aee78f836c635b2b9a65e323a08c0a2337b57" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.973Z" + "updatedAt": "2025-12-08T15:00:23.038Z", + "postProcessHash": "781fc98824ddeba5f3aa484631f838301aa49cada80bfaf2c05360fa776b4c75" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.974Z" + "updatedAt": "2025-12-08T15:00:23.040Z", + "postProcessHash": "1be3c868329b40a6cd0bddf39cf00960ea68536ca6e2bb5b821ee62e5a229d37" } } }, "4720065368d74b99bed2a06031f2ef616ea2fc0fe3eaeda0eeefab51e97fa802": { "45028bb439ebe8492dc85924f0a97aa092c2d39dbf61ebc0b572ced35a076770": { "es": { - "updatedAt": "2025-12-01T18:59:35.968Z" + "updatedAt": "2025-12-08T15:00:23.024Z", + "postProcessHash": "45028bb439ebe8492dc85924f0a97aa092c2d39dbf61ebc0b572ced35a076770" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.974Z" + "updatedAt": "2025-12-08T15:00:23.039Z", + "postProcessHash": "29e775b7f9ff772760a7b79a82372e299bb8b686b72dda80a0d179ec4166b2ca" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.975Z" + "updatedAt": "2025-12-08T15:00:23.040Z", + "postProcessHash": "45028bb439ebe8492dc85924f0a97aa092c2d39dbf61ebc0b572ced35a076770" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.975Z" + "updatedAt": "2025-12-08T15:00:23.049Z", + "postProcessHash": "45028bb439ebe8492dc85924f0a97aa092c2d39dbf61ebc0b572ced35a076770" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.980Z" + "updatedAt": "2025-12-08T15:00:23.057Z", + "postProcessHash": "e954c7d0e84975e2065a72e2194b9bd67aedecabab3e476ce84cbb5901773491" } } }, "03c2376329b30203ae44b86d688623c462c8720803401f69cf954ce213b64fc9": { "657e91810db467e2fded89d152314e5f2ae7eb9a4ebde3aa0c505e23b42ead94": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.969Z" + "updatedAt": "2025-12-08T15:00:23.030Z", + "postProcessHash": "900de9a362f8328eb0e05f527be69b0552b2311921e76f2fd96f07f72f674314" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.978Z" + "updatedAt": "2025-12-08T15:00:23.053Z", + "postProcessHash": "14293c1abba45b256187a7cfa5f6b65d2a42703943ac9aa92b9620f93d1f8cc0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.978Z" + "updatedAt": "2025-12-08T15:00:23.054Z", + "postProcessHash": "4142512996cd456a0dc17733fdd1113ee2a5532c6d65733d52f66a64867800e9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.984Z" + "updatedAt": "2025-12-08T15:00:23.080Z", + "postProcessHash": "1107b91365f2ec9a8d659e99ddeae8680472bca9768b1ab399f5c37aafe1c3aa" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.984Z" + "updatedAt": "2025-12-08T15:00:23.081Z", + "postProcessHash": "fe50a7e7ad2fb78487b65fae3e71223523e42e3f091195ee21142a6d1a78cb30" } } }, "27b6c0cf4b9f771c4daa08a794f8008068fbd351f7df8018926fd560cb91ac34": { "5c34148e86c678030516c07acc226cfa67b33eaffbf84d1a652645d1f6f5f5a3": { "ja": { - "updatedAt": "2025-12-01T18:59:35.970Z" + "updatedAt": "2025-12-08T15:00:23.031Z", + "postProcessHash": "2c7e18d27095ef13da29be893322dcc1d68ff10cbfeca9049b75630a76db5360" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.970Z" + "updatedAt": "2025-12-08T15:00:23.032Z", + "postProcessHash": "6be5d8bbe37753cfd90a8d3f0f798bff9dcec38f58dc103a3eb870df5801bc91" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.977Z" + "updatedAt": "2025-12-08T15:00:23.052Z", + "postProcessHash": "cf34a07e89cee76a04b2b7e7eedbd9fa30095f905af53e7b731274eb90d809d1" }, "es": { - "updatedAt": "2025-12-01T18:59:35.979Z" + "updatedAt": "2025-12-08T15:00:23.055Z", + "postProcessHash": "501bf784cf3eaaba1144a9a6ab7f4a0422c313fe9c8a5eda5d6bf79d97662ef7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.984Z" + "updatedAt": "2025-12-08T15:00:23.079Z", + "postProcessHash": "342e8835cd92ffc03afcca8f529074b985c83cb9af5f3defd1500daae853000a" } } }, "79d01e01560fe411d151c473b1954da06ec30b96281f4f1fa2e69bba960fed51": { "534e79ea4aa486b39240280e57252303d1c7c7c7dec5026f8909f743d792554e": { "es": { - "updatedAt": "2025-12-01T18:59:35.971Z" + "updatedAt": "2025-12-08T15:00:23.032Z", + "postProcessHash": "e39237ccbea1f7c5f5a717e281cf63c89d0098b9aabbd2cf305411868e7e9df0" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.971Z" + "updatedAt": "2025-12-08T15:00:23.034Z", + "postProcessHash": "fa847349c98e5b18e674000afda3f782788f1b718ce48c993a0563de06678bdf" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.986Z" + "updatedAt": "2025-12-08T15:00:23.035Z", + "postProcessHash": "bc2cac014043754b49864617968fe3ea771c8d87fe51b675fa725a3de5077196" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.972Z" + "updatedAt": "2025-12-08T15:00:23.037Z", + "postProcessHash": "fb430365ba9c17bb4725b88fe2ed98e2cd6ec3c9c2e975f4318f695b8f8fdfd0" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.985Z" + "updatedAt": "2025-12-08T15:00:23.096Z", + "postProcessHash": "dacabfc5d138dde049b3e108127e6255f65c6324a19f5da8e83633bf21235f03" } } }, "4a5aa81e610b0a70a8473a208ae7460966a60b2420a6213e4b1234d6f07712b8": { "69505a12121d80fabfed25ca952374b0ea56ad172fe1a505c8040da894eeb8cb": { "es": { - "updatedAt": "2025-12-01T18:59:35.971Z" + "updatedAt": "2025-12-08T15:00:23.033Z", + "postProcessHash": "87e6045967b45bf540a9b0c3fe7762ff5ac17d7c406542e1698f6782cbd72afd" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.976Z" + "updatedAt": "2025-12-08T15:00:23.050Z", + "postProcessHash": "888d5954184a4e3a5122b7b767caf7a1d87dbf291b151a43242cb0e2cd31e1f3" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.976Z" + "updatedAt": "2025-12-08T15:00:23.051Z", + "postProcessHash": "1ef5207af70a69c9cbfdb64898e1779685a8843043a938acf1d93c8672904303" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.983Z" + "updatedAt": "2025-12-08T15:00:23.077Z", + "postProcessHash": "b08082c6d8ee0635ec888f24642a4927972ab1ad73d39bce23a0fd3b110a4826" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.983Z" + "updatedAt": "2025-12-08T15:00:23.077Z", + "postProcessHash": "9c6f787f78804a5fb80fbad8a2ce0c5b742ac1da0b8819b7fa484a5b9e22fc14" } } }, "ad1f8966c67814ec175a14b3b7d00915a9e0bb3cfbb64e22179d8615c94f9363": { "47b770a68cbad973c376a7a43975044ebfd1f67e5a06b4f8116b2ba432df5534": { "fr": { - "updatedAt": "2025-12-01T18:59:35.985Z" + "updatedAt": "2025-12-08T15:00:23.034Z", + "postProcessHash": "cc0a05086b04d30d7e51369cb36a2547d0cb1f0b45c07c053401af4c090d1adb" }, "es": { - "updatedAt": "2025-12-01T18:59:35.986Z" + "updatedAt": "2025-12-08T15:00:23.036Z", + "postProcessHash": "94c99fdaaa8d48adde92c0997c7abb5220a341d248458a1fe4f8bd9001339853" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.986Z" + "updatedAt": "2025-12-08T15:00:23.037Z", + "postProcessHash": "3226425bdbf0f95529dc806fa9dbe32de2440b2737b5bd6a0ad90e373b7bb784" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.987Z" + "updatedAt": "2025-12-08T15:00:23.041Z", + "postProcessHash": "6dd1e52f3694c72bf7c78bb2c5f031d075d3b3f1686ad5f8be2296e26d28b860" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.987Z" + "updatedAt": "2025-12-08T15:00:23.042Z", + "postProcessHash": "fc0f8c7ebc6d2d9e897ae8985f82830ab8854211fc8e8bf0d59ff0c17a732b8c" } } }, "e78ce4b764648754834ac733218aafee0a2b21344fea6b56a8015a6b95181e5d": { "9b6d073cd4facf2bcf231310a39de13ba946751ff1a2e8b2093dbb3212818d9a": { "es": { - "updatedAt": "2025-12-01T18:59:35.988Z" + "updatedAt": "2025-12-08T15:00:23.043Z", + "postProcessHash": "8405a637fbb2bf9fa0e4b08d619006382cf6b24cd60859050c2ebf0d95514b29" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.992Z" + "updatedAt": "2025-12-08T15:00:23.082Z", + "postProcessHash": "9a9d87723b7fef29015c4ea0cfdaae9ec31f4d07480c36a46efd4e69efb8cfee" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.993Z" + "updatedAt": "2025-12-08T15:00:23.083Z", + "postProcessHash": "a7fcf1d2e721c75fc3caff30fa6250147080e36bc686336f036a4ec9cb6b640e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.995Z" + "updatedAt": "2025-12-08T15:00:23.097Z", + "postProcessHash": "47b437eb615190cbb03f20574b26341f54483932211f84bbaf56a929e544742e" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.995Z" + "updatedAt": "2025-12-08T15:00:23.098Z", + "postProcessHash": "9a9d87723b7fef29015c4ea0cfdaae9ec31f4d07480c36a46efd4e69efb8cfee" } } }, "71893443a6c27e23129cbcd0d6fa59138fec0d072118d578a44dc3c543e6faa2": { "e89d57d69d947c731e65e76f70a858c0aa7816d3fe2a9d8c42696736803acc5c": { "fr": { - "updatedAt": "2025-12-01T18:59:35.988Z" + "updatedAt": "2025-12-08T15:00:23.043Z", + "postProcessHash": "d2f674650540040568715107b94d0292864c464efb4f796f81d806f50a8c587b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.989Z" + "updatedAt": "2025-12-08T15:00:23.044Z", + "postProcessHash": "32e6d1ad35ac6b05ded35fa6fa22327b7d46d95898e4b37767e842f761ddc68d" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.991Z" + "updatedAt": "2025-12-08T15:00:23.048Z", + "postProcessHash": "608e8cfeb22b5f937be2cecc267d0f4452acb5e71f364f624b52d0f96ab2fdde" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.991Z" + "updatedAt": "2025-12-08T15:00:23.048Z", + "postProcessHash": "32e6d1ad35ac6b05ded35fa6fa22327b7d46d95898e4b37767e842f761ddc68d" }, "es": { - "updatedAt": "2025-12-01T18:59:35.997Z" + "updatedAt": "2025-12-08T15:00:23.102Z", + "postProcessHash": "a7c54cc64e455d1ee4b3176ff69b1becd0ca3115e5ca4fbf133f967c5ccc2071" } } }, "2356a5d64794f77efec865c70b41de806a74dfcbc6879d7acd3622fbf8e46820": { "82b756f63b39c6152727f0e0ff4298c3b63b3e56d0dfb3f6b9afe3525c420c10": { "zh": { - "updatedAt": "2025-12-01T18:59:35.989Z" + "updatedAt": "2025-12-08T15:00:23.045Z", + "postProcessHash": "97fcdb8f8cb459b244df88f655b7acbd83d68d64e351a3f97fb594db2875b5d7" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.989Z" + "updatedAt": "2025-12-08T15:00:23.046Z", + "postProcessHash": "8a5d0ba2eccac932c46cdfe4b782dbc13d89e9b70522daf82e9e55e517663d25" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.993Z" + "updatedAt": "2025-12-08T15:00:23.084Z", + "postProcessHash": "dd75af64de1d4db2f8e3c834454065e8549b3c059bd23db63eb5e751759bfabe" }, "es": { - "updatedAt": "2025-12-01T18:59:35.995Z" + "updatedAt": "2025-12-08T15:00:23.096Z", + "postProcessHash": "cfc18b2983d6652610a62805008f6284324720815cfba79dc0bc7cfcd747b639" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.996Z" + "updatedAt": "2025-12-08T15:00:23.098Z", + "postProcessHash": "228f890eb8fa867999800a79d60ae69285ae73af47d3b5bb9fc9e77dfbf2be9f" } } }, "d7babbf2894ea68aa3bcde367c1441777a2778b25faef11763c0fd9568274a6d": { "3e0c1608d2d796f61d8f7fb1bf1e5c6f9189d8eda97becdc5224f3f74ee6b4cc": { "es": { - "updatedAt": "2025-12-01T18:59:35.976Z" + "updatedAt": "2025-12-08T15:00:23.050Z", + "postProcessHash": "a832821f51e2d4047157d16436b72b00277a55e70b19778b7d849a18640b2f2e" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.979Z" + "updatedAt": "2025-12-08T15:00:23.055Z", + "postProcessHash": "f791e1aa2f066063cb239201dbd324ddb195f4bfa20e838c59c9d96ad2c4a1bd" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.980Z" + "updatedAt": "2025-12-08T15:00:23.058Z", + "postProcessHash": "460eb3ba546fbfe8b5cd3adc583992686504dffbb51e25cf0ddfe5037285b64b" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.982Z" + "updatedAt": "2025-12-08T15:00:23.061Z", + "postProcessHash": "c0b6bf2c6d2704e222f0752ba798bd5f43b70dd690434f2a6058e30cb69b7690" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.982Z" + "updatedAt": "2025-12-08T15:00:23.075Z", + "postProcessHash": "5e151ef599a3880f39658cf3eb8174005021b2ba071d7f8b2a97a5a32f70021d" } } }, "153a59bdabc80d4df96985f73ffbce41b75c46cb073c288332a60086ea68626e": { "083f47f7b2ba7ca71a755dd59bafb71c65d7e96e4247611eba3223d252cb884c": { "zh": { - "updatedAt": "2025-12-01T18:59:35.977Z" + "updatedAt": "2025-12-08T15:00:23.052Z", + "postProcessHash": "73b2f530d8d28f99385e3382649662867fc3d380df349865bc85fc7b4a8bd9cc" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.980Z" + "updatedAt": "2025-12-08T15:00:23.057Z", + "postProcessHash": "658acf09925f0e3d9551e175b0a920decc5fc50b621a08ade72f08768c678987" }, "es": { - "updatedAt": "2025-12-01T18:59:35.980Z" + "updatedAt": "2025-12-08T15:00:23.058Z", + "postProcessHash": "936fe6dcb572633388e31ec859aa5d0b8ee50363b67c67d1c6e9fc9a22b1b4df" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.981Z" + "updatedAt": "2025-12-08T15:00:23.059Z", + "postProcessHash": "ab83ed847afdb88e8e1ecfd190de38d220aff709a062e7eb402c94c8299ca854" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.983Z" + "updatedAt": "2025-12-08T15:00:23.078Z", + "postProcessHash": "a1bce34fc75d78e7f67dad2dd76c120c1a931d12fdf317ec6d569b5b68c81796" } } }, "885a317ead30f9ef04e1a6bd935dabbf243455a7f9222d8f7b67bb2799c1eba3": { "72fc5463e266b4489fc38657a0f9e331caa653263f26fbfded75ba14918ca9ad": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.981Z" + "updatedAt": "2025-12-08T15:00:23.060Z", + "postProcessHash": "05111020c51730b3ebdbfcc3a613d8a93d66d236d271aa2999f32c42b47e01bd" }, "es": { - "updatedAt": "2025-12-01T18:59:35.981Z" + "updatedAt": "2025-12-08T15:00:23.060Z", + "postProcessHash": "b22d07f97570a7b8cf68f653f20b79a3e9e1a551951c8cf3139ee91d5d3dfcff" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.981Z" + "updatedAt": "2025-12-08T15:00:23.061Z", + "postProcessHash": "6f4c69921f6a95c4eff708e53362f3486db7e1ff95d50338334eefbc56eeb779" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.982Z" + "updatedAt": "2025-12-08T15:00:23.074Z", + "postProcessHash": "00ae45997fa2644d13b3bc71b40890f93c4e7b02812771acbdb13c0d027540a3" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.982Z" + "updatedAt": "2025-12-08T15:00:23.074Z", + "postProcessHash": "e90c3a023d0d045d88980ec06acddf9c622f45ce4650bf50247b3ea5fa1bec8a" } } }, "672002cf5d6b46c3c0887f45d7a5dea8ea6a2a56da88f0eef021b66b04528c15": { "5e3c7da07682da8747dd22b9b9632347258908763880b11e6da7b0e2c31ff495": { "ja": { - "updatedAt": "2025-12-01T18:59:35.990Z" + "updatedAt": "2025-12-08T15:00:23.046Z", + "postProcessHash": "5e3c7da07682da8747dd22b9b9632347258908763880b11e6da7b0e2c31ff495" }, "es": { - "updatedAt": "2025-12-01T18:59:35.996Z" + "updatedAt": "2025-12-08T15:00:23.099Z", + "postProcessHash": "5e3c7da07682da8747dd22b9b9632347258908763880b11e6da7b0e2c31ff495" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.996Z" + "updatedAt": "2025-12-08T15:00:23.100Z", + "postProcessHash": "5e3c7da07682da8747dd22b9b9632347258908763880b11e6da7b0e2c31ff495" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.998Z" + "updatedAt": "2025-12-08T15:00:23.104Z", + "postProcessHash": "5e3c7da07682da8747dd22b9b9632347258908763880b11e6da7b0e2c31ff495" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.000Z" + "updatedAt": "2025-12-08T15:00:23.112Z", + "postProcessHash": "5e3c7da07682da8747dd22b9b9632347258908763880b11e6da7b0e2c31ff495" } } }, "d27646db356b4801d159603eb3aba98ebef55a9f4d756808534f2d867ec417e6": { "cdd5b1b8d2822726ea5c332230c6e8499f4d5205bdfbcfed07728e2ddb1639c8": { "fr": { - "updatedAt": "2025-12-01T18:59:35.990Z" + "updatedAt": "2025-12-08T15:00:23.047Z", + "postProcessHash": "ee8b35f2aebaa1b74a102e717aacb30cab8ab33eb71f45d1ac58eb8c450b32e6" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.992Z" + "updatedAt": "2025-12-08T15:00:23.083Z", + "postProcessHash": "4b4fd567fba112f77e26a336e49c371ff2422de10e9e4562bc7b3c639271a230" }, "es": { - "updatedAt": "2025-12-01T18:59:35.997Z" + "updatedAt": "2025-12-08T15:00:23.101Z", + "postProcessHash": "1d3bd8d87bb716fd458e87cda61f357e190f87ff3236f3166d3bafe1a43dfd85" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.997Z" + "updatedAt": "2025-12-08T15:00:23.101Z", + "postProcessHash": "a6a4dc577230ed7f72c909a7e4cedf9d4b739cbcaac0009cbc5385b739ce8405" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.998Z" + "updatedAt": "2025-12-08T15:00:23.103Z", + "postProcessHash": "1dc09144370939148c912f231bfcb3133bde1ba7eb278e76b88bec8c2a29b6bb" } } }, "62c6d9fad127450dcb7338a510634e14250b36db7337c7466a18a8e012671bc3": { "961437b0a8434f64e18f4dbca745a183b02a4baca80d6f8c1be38d68a4acba53": { "ja": { - "updatedAt": "2025-12-01T18:59:35.993Z" + "updatedAt": "2025-12-08T15:00:23.085Z", + "postProcessHash": "dc8d185beb7d1ec264e9e01d928e894dde1922bccbd2692d75ff858a66fd9403" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.995Z" + "updatedAt": "2025-12-08T15:00:23.091Z", + "postProcessHash": "88edcbfe6c513eedd401e5f105718bff790128c62948143c0ad6094b4db17c3a" }, "zh": { - "updatedAt": "2025-12-01T18:59:35.998Z" + "updatedAt": "2025-12-08T15:00:23.106Z", + "postProcessHash": "30330f07bc9a86d9beb99d9b5c62c7b35fcff610c8c74cba7e46718018aec491" }, "es": { - "updatedAt": "2025-12-01T18:59:35.999Z" + "updatedAt": "2025-12-08T15:00:23.107Z", + "postProcessHash": "97bca207928c0b2016717de938657c1bc2e5a44fd853b3251530c94d930b7fdc" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.001Z" + "updatedAt": "2025-12-08T15:00:23.129Z", + "postProcessHash": "cabe43c20ae3397d362e9b57f21917b103d7ce3021fbb10f9c6ea684e8f0527f" } } }, "ecc20b488850357a700fabd59bbf656d00ad582de8cda0b9f4089ca9340206ee": { "690ecfd759f2af1f60fa8a7d33af637de6364f7f1f38aade81a42960b2f06017": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.993Z" + "updatedAt": "2025-12-08T15:00:23.086Z", + "postProcessHash": "cafb0ab08fe65ea7a2f4a10a31792de4149b7300bda5ade3a35171be5163eebc" }, "es": { - "updatedAt": "2025-12-01T18:59:35.998Z" + "updatedAt": "2025-12-08T15:00:23.107Z", + "postProcessHash": "4a83e9bd0f39f0855c31f6fa29ab710df47387907d7322b8a3da71cd44ca1e6f" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.001Z" + "updatedAt": "2025-12-08T15:00:23.116Z", + "postProcessHash": "a15c19d2ed5b0baf5273b652efe01ccad2826aeb3625aa3b3ca90e53a893ca42" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.002Z" + "updatedAt": "2025-12-08T15:00:23.131Z", + "postProcessHash": "4b34f05529fd49754672513a2945e0700f1e73e3f4690936015a6bbd6e5be24e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.005Z" + "updatedAt": "2025-12-08T15:00:23.136Z", + "postProcessHash": "3f944bc0a1c6bb0b7acc3e4d9296dd6b596f1c54ab452b4f2730d330ee370f88" } } }, "8e44d972390098d7b8b59a0e7aeadecc5f1f7e05f6e67d154ea8c0503c8e619d": { "83628bb3b887e203b72fe05499d49955995913fc1047eb5c28c790be158cf279": { "ja": { - "updatedAt": "2025-12-01T18:59:35.994Z" + "updatedAt": "2025-12-08T15:00:23.087Z", + "postProcessHash": "7a0a173e1cc8cdcb10525e9129a0785e0aa3fbb23fc3ca25f879dd8ca6315db9" }, "es": { - "updatedAt": "2025-12-01T18:59:35.994Z" + "updatedAt": "2025-12-08T15:00:23.089Z", + "postProcessHash": "20a38b7e12f1176992c372cd2a1a5bfd8354459c148d58d7087e57846ebb920e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.006Z" + "updatedAt": "2025-12-08T15:00:23.138Z", + "postProcessHash": "8d28c189fa5d06b1ad72831effcda655623357f676bbb8004f3c5a1736e8b702" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.008Z" + "updatedAt": "2025-12-08T15:00:23.140Z", + "postProcessHash": "756edb77441539be9cc5111549825553d3c77e1b7181b5d2bf73f08610c77b21" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.008Z" + "updatedAt": "2025-12-08T15:00:23.145Z", + "postProcessHash": "a3ebd6617444926773fdf762a32950a1c7f17700ef29969cbec25b8ebaaddb84" } } }, "0038282129f5dcae446145cbd974f3189672475aeeb2deef1651fd496995e12d": { "c18930a4cd08b6b244b580022cf9a315b2e61dc8420b00fbc38329697533a6fa": { "zh": { - "updatedAt": "2025-12-01T18:59:35.994Z" + "updatedAt": "2025-12-08T15:00:23.088Z", + "postProcessHash": "e8b672260afee9baded7774559b153e44a440fb9d7378213ebee494badbd5c3f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.000Z" + "updatedAt": "2025-12-08T15:00:23.114Z", + "postProcessHash": "e61e0c588278b973fae7ec1c67ad6d4c767097057c8863ccf70056f1bac12557" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.001Z" + "updatedAt": "2025-12-08T15:00:23.128Z", + "postProcessHash": "822dfaabb87cc5f2a50c00eed747dc75662f2617b6a73b95f3b326c4eec91130" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.001Z" + "updatedAt": "2025-12-08T15:00:23.129Z", + "postProcessHash": "f4b24fc7697683a4206641378218dd87e98ea557a191b7b45f0cc13df12cf958" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.002Z" + "updatedAt": "2025-12-08T15:00:23.130Z", + "postProcessHash": "43ab26f5ae547b9b48771677771265628e6b0e770c09db2bd8db961ade8e66f0" } } }, "8feb15f102b5235f78814167adc6f3b98e4d156775c98acce375a81ae2a54f21": { "a83298cad771931f921c73285d40ae83d0606c6f376dbd726630edba96f2756b": { "es": { - "updatedAt": "2025-12-01T18:59:36.008Z" + "updatedAt": "2025-12-08T15:00:23.090Z", + "postProcessHash": "bbfb1572c5817e159f39dd09a8f259a9f317a87a98b48a81acfdfbc7acb9282b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.009Z" + "updatedAt": "2025-12-08T15:00:23.093Z", + "postProcessHash": "bbfb1572c5817e159f39dd09a8f259a9f317a87a98b48a81acfdfbc7acb9282b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.012Z" + "updatedAt": "2025-12-08T15:00:23.125Z", + "postProcessHash": "bbfb1572c5817e159f39dd09a8f259a9f317a87a98b48a81acfdfbc7acb9282b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.014Z" + "updatedAt": "2025-12-08T15:00:23.141Z", + "postProcessHash": "178afef5b6c7e8abb06f97603af57b8379fc1ef80ae8c4e90605c1e783868870" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.014Z" + "updatedAt": "2025-12-08T15:00:23.142Z", + "postProcessHash": "ab39da6436670f80f48480fff44c2fa6f2358ba46f5bca038e6b7849ec9f69c3" } } }, "c32b4a357ba92575a33abcc6ec5f825088821ac6c81921e59d72d17ee629a3a7": { "c73265082828f7f0fbfae521e9e5bf532fb703ef028be39702674b9b673ed83d": { "es": { - "updatedAt": "2025-12-01T18:59:36.009Z" + "updatedAt": "2025-12-08T15:00:23.094Z", + "postProcessHash": "fc398f1bb085fe920e4c2c74e207507407e0b705932438f66386c12b3d252049" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.009Z" + "updatedAt": "2025-12-08T15:00:23.095Z", + "postProcessHash": "ed01d61f434248236c92bf681a856205f8553d6b872537380aa6b55269947e77" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.017Z" + "updatedAt": "2025-12-08T15:00:23.147Z", + "postProcessHash": "2a163b2cf3b024c9754b1f177d762b86fc01c89d717e0bc31d4eeb5775857ecb" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.019Z" + "updatedAt": "2025-12-08T15:00:23.150Z", + "postProcessHash": "56568aac671837dcc6b59a4f9656eb57d0a25c541fb1ffd90cdc0cd8f04e237a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.025Z" + "updatedAt": "2025-12-08T15:00:23.163Z", + "postProcessHash": "62a3b038aa6f76cc1ae36f9155dfb757d2f82dbf154ce338300893bf0d05e728" } } }, "9bffec7b70c2e782009940f3329a14ee5c111083b93f1613df1d6f7f5a9935a8": { "4bd881752c5f6124f0725896d1307577002fb27c0115b0690ff433b001c184b8": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.010Z" + "updatedAt": "2025-12-08T15:00:23.105Z", + "postProcessHash": "4bd881752c5f6124f0725896d1307577002fb27c0115b0690ff433b001c184b8" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.999Z" + "updatedAt": "2025-12-08T15:00:23.108Z", + "postProcessHash": "4bd881752c5f6124f0725896d1307577002fb27c0115b0690ff433b001c184b8" }, "es": { - "updatedAt": "2025-12-01T18:59:35.999Z" + "updatedAt": "2025-12-08T15:00:23.109Z", + "postProcessHash": "4bd881752c5f6124f0725896d1307577002fb27c0115b0690ff433b001c184b8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.010Z" + "updatedAt": "2025-12-08T15:00:23.110Z", + "postProcessHash": "4bd881752c5f6124f0725896d1307577002fb27c0115b0690ff433b001c184b8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.000Z" + "updatedAt": "2025-12-08T15:00:23.111Z", + "postProcessHash": "4bd881752c5f6124f0725896d1307577002fb27c0115b0690ff433b001c184b8" } } }, "1f4d55f55edfaff346a0b21c3264cb3d72849d37bf5ae49e38a29656f137ff50": { "0bc732c86be4a463c11433427d60d952c449c48bca9d180195a1a2cc85919d07": { "es": { - "updatedAt": "2025-12-01T18:59:36.010Z" + "updatedAt": "2025-12-08T15:00:23.105Z", + "postProcessHash": "0bc732c86be4a463c11433427d60d952c449c48bca9d180195a1a2cc85919d07" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.011Z" + "updatedAt": "2025-12-08T15:00:23.111Z", + "postProcessHash": "0bc732c86be4a463c11433427d60d952c449c48bca9d180195a1a2cc85919d07" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.011Z" + "updatedAt": "2025-12-08T15:00:23.113Z", + "postProcessHash": "0bc732c86be4a463c11433427d60d952c449c48bca9d180195a1a2cc85919d07" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.011Z" + "updatedAt": "2025-12-08T15:00:23.115Z", + "postProcessHash": "0bc732c86be4a463c11433427d60d952c449c48bca9d180195a1a2cc85919d07" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.013Z" + "updatedAt": "2025-12-08T15:00:23.127Z", + "postProcessHash": "0bc732c86be4a463c11433427d60d952c449c48bca9d180195a1a2cc85919d07" } } }, "9c8b71a7ccdb64d12fb6c4c49837a438df069452b9663d18e2f83369403317a7": { "cc15e1e2bc6c3b5842b0a795567864ca569e585e7ae014c4f2023b422848f5d1": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.002Z" + "updatedAt": "2025-12-08T15:00:23.131Z", + "postProcessHash": "c330d391ee67cd8ab62682ac3a548cdca2a72860603d8c0db420fa0320545e6d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.003Z" + "updatedAt": "2025-12-08T15:00:23.133Z", + "postProcessHash": "cc15e1e2bc6c3b5842b0a795567864ca569e585e7ae014c4f2023b422848f5d1" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.004Z" + "updatedAt": "2025-12-08T15:00:23.134Z", + "postProcessHash": "f9b9486629bbcc594d3351df5300e7e6a46f39f4a7d6df49da2634eb1043d384" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.005Z" + "updatedAt": "2025-12-08T15:00:23.135Z", + "postProcessHash": "979c07819bd5ac301a1935cf948e77393f6bb163d5dc8292587e8151d15cf657" }, "es": { - "updatedAt": "2025-12-01T18:59:36.007Z" + "updatedAt": "2025-12-08T15:00:23.140Z", + "postProcessHash": "c330d391ee67cd8ab62682ac3a548cdca2a72860603d8c0db420fa0320545e6d" } } }, "d36bec4d4129d125810cddd8ffbd2d0327465bf378a2e6cb5fa3680bf1e5d967": { "c9420c7cec798a78b0b79073b7a6b63841f4e36c3e54220fddb024cfdac80f2b": { "zh": { - "updatedAt": "2025-12-01T18:59:36.004Z" + "updatedAt": "2025-12-08T15:00:23.133Z", + "postProcessHash": "f1f66fe8857cad4248d4429b9caf3bfe89099245400c5cc3fccc8f48030df0bd" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.005Z" + "updatedAt": "2025-12-08T15:00:23.136Z", + "postProcessHash": "f1f66fe8857cad4248d4429b9caf3bfe89099245400c5cc3fccc8f48030df0bd" }, "es": { - "updatedAt": "2025-12-01T18:59:36.006Z" + "updatedAt": "2025-12-08T15:00:23.137Z", + "postProcessHash": "f1f66fe8857cad4248d4429b9caf3bfe89099245400c5cc3fccc8f48030df0bd" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.007Z" + "updatedAt": "2025-12-08T15:00:23.138Z", + "postProcessHash": "f1f66fe8857cad4248d4429b9caf3bfe89099245400c5cc3fccc8f48030df0bd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.007Z" + "updatedAt": "2025-12-08T15:00:23.139Z", + "postProcessHash": "f1f66fe8857cad4248d4429b9caf3bfe89099245400c5cc3fccc8f48030df0bd" } } }, "146a97d03025c5f3c00cca469a8ef09c2939689219c51f791f99024cff62ff39": { "989bf8e2c8692b8871ab92bb7058cdcf374cd65060c1a3b75326ccfa3e94585a": { "fr": { - "updatedAt": "2025-12-01T18:59:36.031Z" + "updatedAt": "2025-12-08T15:00:23.117Z", + "postProcessHash": "e51a0edfd6e7890843852574d08e36f9ee617ac027f9e59215c36fb1c63ef7f2" }, "es": { - "updatedAt": "2025-12-01T18:59:36.032Z" + "updatedAt": "2025-12-08T15:00:23.121Z", + "postProcessHash": "1dcb3980679a0e0e72cce61fa0b42f568969107b3a8ae11bbd93aa3a0835c512" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.043Z" + "updatedAt": "2025-12-08T15:00:23.206Z", + "postProcessHash": "d8102a633b0c5ff24ac342740d91c3a6bb9c144b6aa62df0c044c7dbe6358b98" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.049Z" + "updatedAt": "2025-12-08T15:00:23.226Z", + "postProcessHash": "1e0c03dbd1b7ec4fb361d79932a57349ca0d25b73aabc608afe42295c9ffb6ad" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.051Z" + "updatedAt": "2025-12-08T15:00:23.251Z", + "postProcessHash": "edbcc7e8162fad5eb6a4fdfc218a6cdccc0a7797f9d056d035a9d72b1607eea7" } } }, "7854cea9bc2dd0aed23fa866b24788264ea3d7cb542a2455c882814f7b556905": { "1b631487a3a75eb2655b532511e2d75b944075f33d81d05cdee3c7a1c9f33255": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.031Z" + "updatedAt": "2025-12-08T15:00:23.119Z", + "postProcessHash": "69593a411e44ad0c35751ad7dba48f83641d2ae65ed9ce15d75f3079f2f5409c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.032Z" + "updatedAt": "2025-12-08T15:00:23.120Z", + "postProcessHash": "6122fc52d865f7852de643f7413f998bd70693cda9640dafab1d6c253d56f642" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.033Z" + "updatedAt": "2025-12-08T15:00:23.123Z", + "postProcessHash": "ecdb0e82d0d90aea39364d17aa17a4ce1827b525616c83e8db83caa68c4a9fef" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.034Z" + "updatedAt": "2025-12-08T15:00:23.124Z", + "postProcessHash": "fcc8acf3dd8cc2698afc318d86c80cb252ed3570442b4503607a636951629f66" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.046Z" + "updatedAt": "2025-12-08T15:00:23.219Z", + "postProcessHash": "6c7f0d9da911051130623bb0663e691ec1d200cc13e1861ddcaa0e1acf06222a" } } }, "5e2c0d1929ab8181d1862b9338cb724de4ece9ec35b1b0a95efbe5eec482d8e1": { "7047e5c953239d3b5abcc99752e5833c0ee4b1c4fa5450ccd8fd2720901a3521": { "ja": { - "updatedAt": "2025-12-01T18:59:36.033Z" + "updatedAt": "2025-12-08T15:00:23.121Z", + "postProcessHash": "6978021d232a7515fdd7fe6098e8aedf43e8d39f2709d6e2bf8ea3bafdb31ea6" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.033Z" + "updatedAt": "2025-12-08T15:00:23.122Z", + "postProcessHash": "274da176fda879b54a51cb04a6a32b568ed8151b73c3c73e4584bf8d76bce71c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.040Z" + "updatedAt": "2025-12-08T15:00:23.201Z", + "postProcessHash": "b6c694df1e9e138c400ad8f67e5d2d3e87d36399e7f335d7803798f27e77a03b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.045Z" + "updatedAt": "2025-12-08T15:00:23.217Z", + "postProcessHash": "09edafc56dc5a1f7a230b84d2cc61e4e946556a18d389cf3ddc767f4c39dbfe0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.050Z" + "updatedAt": "2025-12-08T15:00:23.229Z", + "postProcessHash": "60bd45eef65e0567302d307b8bcf51831dfe3c67502918a4e489a9ad9b63d08d" } } }, "98176286a437027ab917f650fd984d11cdd0d5bedabc9547bdb8b53758efc28f": { "058f212498311086bb68164c2ae46b7b7f63e174cd90435c3c671c8720e83a85": { "ja": { - "updatedAt": "2025-12-01T18:59:36.034Z" + "updatedAt": "2025-12-08T15:00:23.124Z", + "postProcessHash": "12148400500fe728b599665a10f873feb435e57853cad6809f31b8e9d14a9f60" }, "es": { - "updatedAt": "2025-12-01T18:59:36.041Z" + "updatedAt": "2025-12-08T15:00:23.202Z", + "postProcessHash": "ae8f156eb14a76b07999fe94ce4bd0e85d93f6276b19a52c1f08e74e19c289b0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.042Z" + "updatedAt": "2025-12-08T15:00:23.203Z", + "postProcessHash": "bac97b187f2e208a12619dadfffbf5e4873393b722695514df9455c3ab1e99f7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.043Z" + "updatedAt": "2025-12-08T15:00:23.204Z", + "postProcessHash": "dc4b31e9687f4bd6d4d1ef3ab155304580f69cd112118888773e31f6e39345ae" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.046Z" + "updatedAt": "2025-12-08T15:00:23.217Z", + "postProcessHash": "38b827576de60384ccb4cac82891538c204255032d320c7c46c9526a224708d9" } } }, "27513f55a94dd7b5a9bab5f27f620cc8d86fa3578540b6f5c2275411c1742866": { "5b73eee70a1d3387e94f2fe7269567ffc4d47009fe46255cb7c2aa3dbc8902de": { "zh": { - "updatedAt": "2025-12-01T18:59:36.012Z" + "updatedAt": "2025-12-08T15:00:23.116Z", + "postProcessHash": "726e8f23b6d1ce705bb9b875d0d31f402fd470a01f295d5774aa03b0cc44e0a3" }, "es": { - "updatedAt": "2025-12-01T18:59:36.014Z" + "updatedAt": "2025-12-08T15:00:23.141Z", + "postProcessHash": "345ee0f323e5a2d961be946ae919ea6e7a3f59ce48dfaee1a0f0b1baf69f0dd8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.015Z" + "updatedAt": "2025-12-08T15:00:23.143Z", + "postProcessHash": "726e8f23b6d1ce705bb9b875d0d31f402fd470a01f295d5774aa03b0cc44e0a3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.015Z" + "updatedAt": "2025-12-08T15:00:23.143Z", + "postProcessHash": "6f72edd4e03b2c417713b2100fb7475d5e1afb69fe2ca05a9355c94d4b917310" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.015Z" + "updatedAt": "2025-12-08T15:00:23.144Z", + "postProcessHash": "18bf4ac5d238b1387f537ecadfdfb9955b1c88eb9f5c7f57e5a45ca1b8d7e751" } } }, "6fdc69d8931e97dbc658f10d06e76bb546a7de063518836405740b0f04ded350": { "12c7f8971d81c788552680da8f61b505a48bc485167fbc3e28c48a05a58b35a8": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.012Z" + "updatedAt": "2025-12-08T15:00:23.126Z", + "postProcessHash": "3b63174601a2d17dd8b1107e472967072bb57af79b2c6b4b37ac9697e3a88f87" }, "es": { - "updatedAt": "2025-12-01T18:59:36.016Z" + "updatedAt": "2025-12-08T15:00:23.145Z", + "postProcessHash": "3b63174601a2d17dd8b1107e472967072bb57af79b2c6b4b37ac9697e3a88f87" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.017Z" + "updatedAt": "2025-12-08T15:00:23.148Z", + "postProcessHash": "3b63174601a2d17dd8b1107e472967072bb57af79b2c6b4b37ac9697e3a88f87" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.018Z" + "updatedAt": "2025-12-08T15:00:23.149Z", + "postProcessHash": "3b63174601a2d17dd8b1107e472967072bb57af79b2c6b4b37ac9697e3a88f87" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.024Z" + "updatedAt": "2025-12-08T15:00:23.162Z", + "postProcessHash": "3b63174601a2d17dd8b1107e472967072bb57af79b2c6b4b37ac9697e3a88f87" } } }, "95f04c83fbf90a2720ede50d2575635a7d436e3239e4e2c9946c81d82d74d3d2": { "e2c575372edc89409d2002192f4586e4dfaded43508a3f674acae371085a34e3": { "ja": { - "updatedAt": "2025-12-01T18:59:36.013Z" + "updatedAt": "2025-12-08T15:00:23.126Z", + "postProcessHash": "3b8e87c4d1d456ca3f49bc142809a31de1f0a74f289c0c1fb46b8fdcab812962" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.016Z" + "updatedAt": "2025-12-08T15:00:23.146Z", + "postProcessHash": "ba8b0cb0eaa390008a40dbe5e41be0cfd9f6644b9c911910e929700a5119666b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.018Z" + "updatedAt": "2025-12-08T15:00:23.148Z", + "postProcessHash": "82bc871e74c4a7106ab69db6e39d5d12b87ba2c774a7be8590b825e93001bf15" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.019Z" + "updatedAt": "2025-12-08T15:00:23.151Z", + "postProcessHash": "886c2d1e199cef0c29460cdc7ef37831a4e659a20fa69762cbecf63a45696ee4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.027Z" + "updatedAt": "2025-12-08T15:00:23.172Z", + "postProcessHash": "c264e81174907238152242ba1341f2b5d003c9305794cd57548ad5b5e3cc2872" } } }, "c3f4c3a8427e5729c505b06cef1b371c37b1a7b395e0d426cf04d8b302a398a1": { "e955831731d74e3ef9fbcac1b7dd95bc26afc4a193b8745c6c08ddfc6e828ea8": { "es": { - "updatedAt": "2025-12-01T18:59:36.013Z" + "updatedAt": "2025-12-08T15:00:23.127Z", + "postProcessHash": "c92d0b70e06addcfc701d7e598552f8c5abb82eafc7e5309c0a5cac77f8ba02f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.019Z" + "updatedAt": "2025-12-08T15:00:23.150Z", + "postProcessHash": "ff56b85c45488cc5787482aa3dbdb5a0a586de2d945e7c66f2b3a084672ed517" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.020Z" + "updatedAt": "2025-12-08T15:00:23.151Z", + "postProcessHash": "c93a38003a2724b50d49f8ed9a390b52bc99f5f6251bb047ae5092c8de98aa63" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.027Z" + "updatedAt": "2025-12-08T15:00:23.171Z", + "postProcessHash": "b79330371d56ca974c654818ac220fd3d196b267474f9e21829bc4ee3f173be1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.028Z" + "updatedAt": "2025-12-08T15:00:23.172Z", + "postProcessHash": "dd1fc80f3c2d0ae76e1720bb4ce80343a279787a342d266cbd85ea2a85735c5b" } } }, "2a2e9773af401bffefdba29eb00bf75d8f161145bec7acf31f4a059c2fc00397": { "a55c3a0e37554fc31718d674b0c065f600f01d15717f1953a472f7854b51a6b3": { "ja": { - "updatedAt": "2025-12-01T18:59:36.020Z" + "updatedAt": "2025-12-08T15:00:23.152Z", + "postProcessHash": "c30e24e68ce16e98e10ae231cb2f29c5241b781263185ba6700cb409a462a82a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.020Z" + "updatedAt": "2025-12-08T15:00:23.153Z", + "postProcessHash": "ba967759da150c083b043f70bfb4e1bba7d6cec3c75b0bf2316199f646b733d5" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.021Z" + "updatedAt": "2025-12-08T15:00:23.153Z", + "postProcessHash": "3d1d76e4292f9252515ab8253db69fd28184da7e416ae18b7a48df61613ceeef" }, "es": { - "updatedAt": "2025-12-01T18:59:36.021Z" + "updatedAt": "2025-12-08T15:00:23.154Z", + "postProcessHash": "dbf19dd116fafe45e12a52981e4fb0d3ebea4e9bef158158bde487583e4962a6" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.021Z" + "updatedAt": "2025-12-08T15:00:23.156Z", + "postProcessHash": "9393432d0c0435af1923693814712b3fde56acc2d48702aea9a147ba845e4138" } } }, "579cfec3359f90f551ea74357b3ecca07a5044c601be4bc57531e7f29adf44f8": { "0f6aa25038f03f5cfa9f68f87ad3e3f420231ddabe90c4c59afbd129e88d14b6": { "fr": { - "updatedAt": "2025-12-01T18:59:36.022Z" + "updatedAt": "2025-12-08T15:00:23.157Z", + "postProcessHash": "3cfcb83483500a5d1bd17a79d061fceb9e725375b922cb73c8107f20eb3ee5c6" }, "es": { - "updatedAt": "2025-12-01T18:59:36.025Z" + "updatedAt": "2025-12-08T15:00:23.164Z", + "postProcessHash": "6304e60a034200c1507cfc482da8a5ba58dfeace9acb7be78daa1a93a3e1d0aa" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.025Z" + "updatedAt": "2025-12-08T15:00:23.164Z", + "postProcessHash": "2c7e40a7dabb4652a23aebfda1fb57fbeff81a8d737504ee4c22f2008e4e325b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.028Z" + "updatedAt": "2025-12-08T15:00:23.173Z", + "postProcessHash": "2c7e40a7dabb4652a23aebfda1fb57fbeff81a8d737504ee4c22f2008e4e325b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.028Z" + "updatedAt": "2025-12-08T15:00:23.174Z", + "postProcessHash": "2c7e40a7dabb4652a23aebfda1fb57fbeff81a8d737504ee4c22f2008e4e325b" } } }, "ca1c465fc7128fa71c3dae37f83aa3eb965e6cc8bc465464c6efa9fb4afc89a3": { "931abbdb79d54a0763cf1e36d9ff7f9412ed8ee73782f76a4e9c1f0f09af01ce": { "es": { - "updatedAt": "2025-12-01T18:59:36.022Z" + "updatedAt": "2025-12-08T15:00:23.158Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.027Z" + "updatedAt": "2025-12-08T15:00:23.170Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.029Z" + "updatedAt": "2025-12-08T15:00:23.176Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.029Z" + "updatedAt": "2025-12-08T15:00:23.179Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.030Z" + "updatedAt": "2025-12-08T15:00:23.180Z", + "postProcessHash": "2fc14d109c0811876ba2748b3bde09e68cdfd5eccc21ed5d0a274f0406f94bf3" } } }, "f2ba85d7ba221a732cb872c85a0e5fcbc497e1991b4023dd0f0ae44ffb04f329": { "c1e129a04a4ea9aeb4394025fc4a782e60877a5876e7dd6f8091a0dd5be48207": { "fr": { - "updatedAt": "2025-12-01T18:59:36.022Z" + "updatedAt": "2025-12-08T15:00:23.158Z", + "postProcessHash": "ca4342097c5789703b1158327d81fd15a413f8106b1a59f851c0cc649986972a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.023Z" + "updatedAt": "2025-12-08T15:00:23.160Z", + "postProcessHash": "e2c346efc7b3b8416068cb9fa9a054333468f3bea640d8b5bbd35e3a559751bd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.023Z" + "updatedAt": "2025-12-08T15:00:23.161Z", + "postProcessHash": "5a949c813dc283009ac01a8b7bc89f87b4de489bc11890eb622fe369054f5b5b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.028Z" + "updatedAt": "2025-12-08T15:00:23.175Z", + "postProcessHash": "f34aa4a4e07b9c69d0b535ee186ad367caaaf0dae1d8697f91e0100624e3114e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.029Z" + "updatedAt": "2025-12-08T15:00:23.178Z", + "postProcessHash": "1047693b1bc8ecccd578b377f2c4a8ab4d8adb25234613abd9872eeb11e4c09e" } } }, "e5faf70bcc5fa0f1258278c844a3b7cf78f02c28aa5a14a94e3f4bd2b72e3711": { "3bdba5179e23b30c081411d6091f27d9e9e9ff0aacc162912e664eac2461f16d": { "fr": { - "updatedAt": "2025-12-01T18:59:36.023Z" + "updatedAt": "2025-12-08T15:00:23.159Z", + "postProcessHash": "60fcb4f9b935d08f434b3ee750fbd16637061b0bd885d9de4028e9a3315faf2f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.024Z" + "updatedAt": "2025-12-08T15:00:23.162Z", + "postProcessHash": "4d7222f36cfa221356c2c8496a31a63d40b354d84f285e4d779e124e1708e524" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.026Z" + "updatedAt": "2025-12-08T15:00:23.165Z", + "postProcessHash": "60fcb4f9b935d08f434b3ee750fbd16637061b0bd885d9de4028e9a3315faf2f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.026Z" + "updatedAt": "2025-12-08T15:00:23.166Z", + "postProcessHash": "60fcb4f9b935d08f434b3ee750fbd16637061b0bd885d9de4028e9a3315faf2f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.030Z" + "updatedAt": "2025-12-08T15:00:23.197Z", + "postProcessHash": "8c85789eda5fdf96fc06d3567414d6a7a1b896260ef9f530795f3ac3bba7a7ad" } } }, "210f01c3b5ef7c45297b8291e7dc3db949725c792ea89c1e2b86b8460b005ccc": { "9c9b5b179b68291450d797d665d5c69353d7f0f7ddc26acae7d3b224538b3cb6": { "zh": { - "updatedAt": "2025-12-01T18:59:36.034Z" + "updatedAt": "2025-12-08T15:00:23.167Z", + "postProcessHash": "cd898e6fab97bb87f26eb89ca1924e654a744676042baf59ab071c96d2f54714" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.030Z" + "updatedAt": "2025-12-08T15:00:23.184Z", + "postProcessHash": "0cca9866cc60c005959dcfa3f44ec50ed490428196d63b8e9177fa835a0e7d35" }, "es": { - "updatedAt": "2025-12-01T18:59:36.031Z" + "updatedAt": "2025-12-08T15:00:23.214Z", + "postProcessHash": "e7630d68c91bdb8c5ccb2d3594413723d855d13383e201976bd1fd484f936aad" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.035Z" + "updatedAt": "2025-12-08T15:00:23.171Z", + "postProcessHash": "c6528ed1bc1285702f454997339e21e763838d5677a374fd9bf52ca9beb88344" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.049Z" + "updatedAt": "2025-12-08T15:00:23.227Z", + "postProcessHash": "e180408bb87477ac4fda945f96b37489110827d6e9bf96b61f1c069db3093a95" } } }, "d7207809df5627ca2ba122542306e233d956c568eea218476302bdc2f29bfdfb": { "ac12ed8504e934412a5e4e4d0acacead2f22b48172352efb3b6a3da4d8b8de42": { "es": { - "updatedAt": "2025-12-01T18:59:36.034Z" + "updatedAt": "2025-12-08T15:00:23.168Z", + "postProcessHash": "19ea3040758a705d7165e2b82326b9ee70d6a872cd1cd217a127c5a47bb8e906" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.035Z" + "updatedAt": "2025-12-08T15:00:23.169Z", + "postProcessHash": "68a5035945ac7f4332edbf9e8bb4f374a868c3aca4a9c51f2f70fdf8d524346d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.035Z" + "updatedAt": "2025-12-08T15:00:23.182Z", + "postProcessHash": "3241299baeca0f28bf854b08e1e19d9f4d5eb7a9b23b17fd175cc9e3c7734dbf" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.036Z" + "updatedAt": "2025-12-08T15:00:23.183Z", + "postProcessHash": "46571c1d6fa520358246510616541fbdc043f82515e15ae724219831b352661e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.036Z" + "updatedAt": "2025-12-08T15:00:23.184Z", + "postProcessHash": "6218364c5df08b5e90ec373e3723a827efea62e0783e3cea15a90134ddc4b9e9" } } }, "5942ecb86e3f588ce203e895a0f007405851805c93e08102747b9df9ca0bf67d": { "ce3ccab7de18373f427456359199f6c89a2dab6373557061567fc0426b083755": { "zh": { - "updatedAt": "2025-12-01T18:59:36.036Z" + "updatedAt": "2025-12-08T15:00:23.185Z", + "postProcessHash": "fcaf637da2beb68a2f293b257dba4acab4f97d4ed2391139b2ff9744344a9568" }, "es": { - "updatedAt": "2025-12-01T18:59:36.036Z" + "updatedAt": "2025-12-08T15:00:23.186Z", + "postProcessHash": "ae5a10778cdd1f3a953d51e2c45131a8d1a99d9bd0ccaa1f86ed9ee4a280020f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.037Z" + "updatedAt": "2025-12-08T15:00:23.189Z", + "postProcessHash": "e3edbdee07dbad7509a3fc340820de191d9bb2d72d88ac24adbdee3c1b3dde5f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.037Z" + "updatedAt": "2025-12-08T15:00:23.190Z", + "postProcessHash": "2d0d608b80223c0f5af81945796c3c93bdebefdc6f7667e6a216e55f817b4a18" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.039Z" + "updatedAt": "2025-12-08T15:00:23.194Z", + "postProcessHash": "e2479d4e4fbb06b381b4a5b737bd096e6d6a22aa6ab18d75badd701cbf960867" } } }, "e48990231f6123ae9301742dea0bf6da24f61c6421ef36eccdffcf4b14c5d964": { "50a8c1cb3920c088400ef78204d4e5fb8b6bfd0db0f1ce02c36c576ef9456972": { "es": { - "updatedAt": "2025-12-01T18:59:36.037Z" + "updatedAt": "2025-12-08T15:00:23.186Z", + "postProcessHash": "80853ae16a0a0eaf051d5dbd59ee2e3fcce732b73977fee9003a22beb8caa49b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.037Z" + "updatedAt": "2025-12-08T15:00:23.187Z", + "postProcessHash": "3b09f05e4a1fa3b20c09568188d96dcd561cf6ca96ad461c59d17cd82093af06" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.038Z" + "updatedAt": "2025-12-08T15:00:23.192Z", + "postProcessHash": "b85536782197ae736cfa78b978f43c6498ed2bd3ac49bf3b1b756264367649fe" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.040Z" + "updatedAt": "2025-12-08T15:00:23.200Z", + "postProcessHash": "91867fe80d0cc17a63a8ecda023d5201aadf24d4fa9fccc6ec4c1cb894284963" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.045Z" + "updatedAt": "2025-12-08T15:00:23.215Z", + "postProcessHash": "49ff6488c59e2ae44585df862ddfc893d35ad4aa82feb79aa35b0f3ea786d133" } } }, "d5b52cfc76581dcdd4ff35fad5d4708734798a311e1c016959844e343967a21e": { "8ffc6890fd7f9804d4c42746f851372d48970c591ac55854b1c7182631415e18": { "es": { - "updatedAt": "2025-12-01T18:59:36.037Z" + "updatedAt": "2025-12-08T15:00:23.190Z", + "postProcessHash": "3b91cc7b94f608bcf93660602ca14c49b83074e36611e28f11cfa6ca38b62934" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.038Z" + "updatedAt": "2025-12-08T15:00:23.192Z", + "postProcessHash": "a7d7ca7357f68ad0ed5675e8ea14f6f2646723b033f37766bf5fb6223327b3ac" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.039Z" + "updatedAt": "2025-12-08T15:00:23.195Z", + "postProcessHash": "0cc7240c389a6890bfaa6de9e3bbbfc60ff7554d1d03a3435adf700a532d1d5b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.040Z" + "updatedAt": "2025-12-08T15:00:23.198Z", + "postProcessHash": "0cc7240c389a6890bfaa6de9e3bbbfc60ff7554d1d03a3435adf700a532d1d5b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.045Z" + "updatedAt": "2025-12-08T15:00:23.216Z", + "postProcessHash": "1770b54c5d0b6fe599e7f7b03e3aa61fd149722668c70f43fe888e1f7b829898" } } }, "573f0d7cec49b615975e67cf078a955cdf38a7754dcc90fbfa4e42ae4dcdc63a": { "e0f2ffd6ab01fa804eb9bbb27062f6025362177b20fcfb8f1aa09d794f694fb8": { "es": { - "updatedAt": "2025-12-01T18:59:36.038Z" + "updatedAt": "2025-12-08T15:00:23.191Z", + "postProcessHash": "a763b22de4f4ff64b2a837578bf0b0c87529136358006f29b231e401e4061d10" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.038Z" + "updatedAt": "2025-12-08T15:00:23.193Z", + "postProcessHash": "310acedc454c4e22afae6f630f34106eaa37e751ce660110ec46dbb9a8bc7225" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.039Z" + "updatedAt": "2025-12-08T15:00:23.196Z", + "postProcessHash": "3289fe7a095fa7aaa922e8510d62ce78674237f79b622f14df793a8556ce7595" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.039Z" + "updatedAt": "2025-12-08T15:00:23.197Z", + "postProcessHash": "ce029b4884f524e9bf03f563c171af403915197c017e7b7cc7effab19bc2ba69" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.040Z" + "updatedAt": "2025-12-08T15:00:23.199Z", + "postProcessHash": "e450419c145e460120c316e03fe071a83031478a3ae1273bc8e8159d2ca1a93c" } } }, "e30c6b052d4fd964acf6bbb4fcc4e80b7125896a145c0c8e5c2d00a8793b43b7": { "8e31fc822e4e0c1d36ddb6d6dc99cf93dab067c49125f77b53c83a9da6759bc8": { "es": { - "updatedAt": "2025-12-01T18:59:36.041Z" + "updatedAt": "2025-12-08T15:00:23.202Z", + "postProcessHash": "00aa8a05122d4431309601cdb01ad875d66090a98514934e8a3572a254cf3bad" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.043Z" + "updatedAt": "2025-12-08T15:00:23.205Z", + "postProcessHash": "ed3c3f86f20241ed1fa8e1ee36cc3c8ba736d7c44067d064e87d7d8ae85f4ab5" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.044Z" + "updatedAt": "2025-12-08T15:00:23.207Z", + "postProcessHash": "3e71956ec8ce45d651f850a26af8790b5899e5d6e29ab4ec767f64850dc82848" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.046Z" + "updatedAt": "2025-12-08T15:00:23.218Z", + "postProcessHash": "727c764fbd14a62d60290c315d3db3b4b089eb7f45b4598d684c30b087b7f175" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.051Z" + "updatedAt": "2025-12-08T15:00:23.232Z", + "postProcessHash": "e11ef9edd5ae8f7a337e457e66386ab8d9218fc40d4812690f6cff3dfdf87464" } } }, "87a2c054c922c0a22881e7fedc1197c7a92d890df66a338b9196898f01f72361": { "a425b34cdb806000a0fcc33f486a17d84df2573a7112f937b269d67d931da207": { "es": { - "updatedAt": "2025-12-01T18:59:36.044Z" + "updatedAt": "2025-12-08T15:00:23.207Z", + "postProcessHash": "694996438b8319b48b98ae29344e18cc3ce1e5c613b7b62b26a227c102e6a2ee" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.047Z" + "updatedAt": "2025-12-08T15:00:23.219Z", + "postProcessHash": "7e8180cee08469276afeed312bd62d1862559d77e1948ef3831499bcda562e28" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.048Z" + "updatedAt": "2025-12-08T15:00:23.222Z", + "postProcessHash": "f296f83e85c5b9def5bb0a06cd2183d90fcdb5460191aa29595f77faba872f08" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.048Z" + "updatedAt": "2025-12-08T15:00:23.222Z", + "postProcessHash": "0a0e3045ca6b55626d2b9e997eb31d58da3475a411f4223a6ec4b86b190e6382" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.050Z" + "updatedAt": "2025-12-08T15:00:23.228Z", + "postProcessHash": "f44a8e28a9f0fd412bfb5e72f655ca3898732fb293be15bed1d5f2e54952402a" } } }, "90f484b19f7b054509fc99e3c5c57dc1d6fb5a5ec7131c01315001f7fdab34fc": { "8015ea58ad8668acecc4f2b2ec39abb083f24443a2ae0c7ee9599f17ecfeec66": { "fr": { - "updatedAt": "2025-12-01T18:59:36.045Z" + "updatedAt": "2025-12-08T15:00:23.209Z", + "postProcessHash": "dcf8bcc3151008834748ceaac77734c48605b2c9a91b859f84a00e8f031965e4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.047Z" + "updatedAt": "2025-12-08T15:00:23.220Z", + "postProcessHash": "a7bbe4242345a08230d907a25637ebb450161f61248eb3a6ecb82450ca8a8a72" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.048Z" + "updatedAt": "2025-12-08T15:00:23.221Z", + "postProcessHash": "c1273b7f1ef3768d000339c49dd4a84196081d5f998baa1732842e1daddcb1c2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.049Z" + "updatedAt": "2025-12-08T15:00:23.228Z", + "postProcessHash": "9d20b3b610bdf7d6eaccca1cc1b13e023a0b800f17f6d15e9a50bdfa68748684" }, "es": { - "updatedAt": "2025-12-01T18:59:36.050Z" + "updatedAt": "2025-12-08T15:00:23.230Z", + "postProcessHash": "79c77908ba2d20ea03fd62d7d4c1663421b8b68e9cc09ecb22992f66e8e1206f" } } }, "8cb31573747a05996bb6eaff4f29cf59c6ac335327735f260230bcba4bac11a0": { "9bab1e438d47a970d08e9c368ee8f427adc53a0e2f7ce275c04ac0dcd2b18dd9": { "es": { - "updatedAt": "2025-12-01T18:59:36.051Z" + "updatedAt": "2025-12-08T15:00:23.210Z", + "postProcessHash": "2420e724f081677811129ac165392ce6b1622f0a31360050487886072108c2e8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.056Z" + "updatedAt": "2025-12-08T15:00:23.231Z", + "postProcessHash": "783c4d3b640fd478809208498ed10cc8fee80f7f506a133fa456427a8326b63f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.056Z" + "updatedAt": "2025-12-08T15:00:23.232Z", + "postProcessHash": "454c721a3d436a3cfe00d8341635c6b336b9f5617b6af952bf900f07233e4997" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.058Z" + "updatedAt": "2025-12-08T15:00:23.235Z", + "postProcessHash": "2e796d22f1b1692fa64cdc7ed173de4495b55ce277f17dfa20bee76c646719c8" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.058Z" + "updatedAt": "2025-12-08T15:00:23.236Z", + "postProcessHash": "0aaea5b411da9b8a14124670d5044de9f94652d38c077ede86aa1d61950a91b2" } } }, "cd7e22d721c2d04691c1f141a32ff6fdcd0e908e022768e47a842b50feff2825": { "41f861449b5d9aaac798c187479c7eaf0a8be965c905fc04a9dc80bfa1f9965f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.052Z" + "updatedAt": "2025-12-08T15:00:23.211Z", + "postProcessHash": "326a7b56032e883289d7e11d4ad8be0b80c69f790e3b5e3416d3de3fbea68b82" }, "es": { - "updatedAt": "2025-12-01T18:59:36.059Z" + "updatedAt": "2025-12-08T15:00:23.238Z", + "postProcessHash": "cbd6f0627d5fb303b5d2925481d6231366cf90e4fb886c7961d69a5db90844f6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.061Z" + "updatedAt": "2025-12-08T15:00:23.243Z", + "postProcessHash": "924bd8fde2975ed6a61a17bf20bf75f66c27f984a9025a038003cb9476ed20ab" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.062Z" + "updatedAt": "2025-12-08T15:00:23.245Z", + "postProcessHash": "01b978309d92108303eee96e249cf5df77997d48fbac2fc7f2b5c71e86db4b82" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.063Z" + "updatedAt": "2025-12-08T15:00:23.249Z", + "postProcessHash": "26193fd0c13c96acaaf65fda71bdc4ca842edc3cd30b116b5db847188affbf47" } } }, "1d79bb60bccf3e3f37338e13f28094ff683dcd30fde55192351c94634962006c": { "1dbd22030ee74c6e2f046e4f540b1843c72230fdffaf730e78b8b618a4c37d36": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.052Z" + "updatedAt": "2025-12-08T15:00:23.212Z", + "postProcessHash": "38c4650086bd68c997979fd5fbf63f0b879066f9c0a4151f6384489309ce5274" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.062Z" + "updatedAt": "2025-12-08T15:00:23.246Z", + "postProcessHash": "3a71b02d11b1dff04d8ad822cbc7e794682834368d784711e04bc21ae0dddf86" }, "es": { - "updatedAt": "2025-12-01T18:59:36.063Z" + "updatedAt": "2025-12-08T15:00:23.248Z", + "postProcessHash": "9dc1d60863c941449133830fbaec8871adb2cd955330bce71be473721d3a5af9" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.064Z" + "updatedAt": "2025-12-08T15:00:23.258Z", + "postProcessHash": "2220e16dbb37e4fc51555e773a80042a7c1cdd2a139ed28e93ec33846103a78c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.065Z" + "updatedAt": "2025-12-08T15:00:23.260Z", + "postProcessHash": "b6be87c725af16f578e1ee34b1b628699f2db144a9c1022858bde7429a2451b8" } } }, "da6a998192c91a03d778b9967490a6caf036f059c09f625322b112d50baf8fc8": { "f0f8867ea6a57fac419207bbb9ac0e907de3acc9c56712da3400b3978a5bbb94": { "fr": { - "updatedAt": "2025-12-01T18:59:36.053Z" + "updatedAt": "2025-12-08T15:00:23.213Z", + "postProcessHash": "3ce3bca3cdd4272e92a3771581ac2333dceb4d244580d70b3e41d676f8a0ece0" }, "es": { - "updatedAt": "2025-12-01T18:59:36.064Z" + "updatedAt": "2025-12-08T15:00:23.251Z", + "postProcessHash": "f722531ff22f06914f236afba7359884b8f055bd62a71b53d0261f72d13b87b0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.065Z" + "updatedAt": "2025-12-08T15:00:23.260Z", + "postProcessHash": "0b48dabae4c7ef5e173699a2966c65ac75c9be5255c120558d3d4f5fd7396b4c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.065Z" + "updatedAt": "2025-12-08T15:00:23.261Z", + "postProcessHash": "9e1ff4b261040f2182ab59ec84f6389ebbf0129a6f65c94a67b8842b4feebb08" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.065Z" + "updatedAt": "2025-12-08T15:00:23.261Z", + "postProcessHash": "d62691d91e800f3bfbeae65e812373f34c4e51d01feba6a862de6c9db380754a" } } }, "fb2ef830b27d109ae10380e06c6d3d95cdac23ed3fed0efc270fa7f895378b07": { "6e3582de4c83830416e39b66d5aa5ae6a5f909e8300209b33083b5ace1745978": { "zh": { - "updatedAt": "2025-12-01T18:59:36.053Z" + "updatedAt": "2025-12-08T15:00:23.214Z", + "postProcessHash": "4dc1ad3beeea9cedae5b3845fe7d5a99cdf64f509405a574b162a54e0a1e5924" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.067Z" + "updatedAt": "2025-12-08T15:00:23.265Z", + "postProcessHash": "f4ecb97286535a10fa229f555205d52fc42a7a117bee60c0b58e2f6776c20156" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.068Z" + "updatedAt": "2025-12-08T15:00:23.272Z", + "postProcessHash": "28646425a600b62162569eb249be38d2de0451acf6cff9e61959501734ed12c8" }, "es": { - "updatedAt": "2025-12-01T18:59:36.068Z" + "updatedAt": "2025-12-08T15:00:23.272Z", + "postProcessHash": "2e22aa423a65aec4bf29c161f6b06a8bcc90b3336fbc9ef9167eedc71bfdb989" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.069Z" + "updatedAt": "2025-12-08T15:00:23.274Z", + "postProcessHash": "684628e986ce6f872fab2157d828003d18eda055c723a318ab25be2282512bfa" } } }, "901be9fc07a9cb91300385e9a0e7a069b3174a6a5e0c759df458dd63a9c05603": { "94b0938ac9636b85ccab63cd7083a3d6e04135b88e91d4ed3f8ecaacc7f492d4": { "fr": { - "updatedAt": "2025-12-01T18:59:36.054Z" + "updatedAt": "2025-12-08T15:00:23.220Z", + "postProcessHash": "d41ac74809e46a433d3879f458a4f21ab900fc6e9cb7f69157eb39390978276f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.054Z" + "updatedAt": "2025-12-08T15:00:23.223Z", + "postProcessHash": "d41ac74809e46a433d3879f458a4f21ab900fc6e9cb7f69157eb39390978276f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.049Z" + "updatedAt": "2025-12-08T15:00:23.225Z", + "postProcessHash": "d41ac74809e46a433d3879f458a4f21ab900fc6e9cb7f69157eb39390978276f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.056Z" + "updatedAt": "2025-12-08T15:00:23.227Z", + "postProcessHash": "d41ac74809e46a433d3879f458a4f21ab900fc6e9cb7f69157eb39390978276f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.059Z" + "updatedAt": "2025-12-08T15:00:23.239Z", + "postProcessHash": "d41ac74809e46a433d3879f458a4f21ab900fc6e9cb7f69157eb39390978276f" } } }, "e06a988b3a0367a8d9f259d34f6afb723682b55e30da2576d1fcfa059dfafb43": { "f03241130049f997da5790c9b171cb1e0fa9898c449bf59935faf6d104964423": { "es": { - "updatedAt": "2025-12-01T18:59:36.054Z" + "updatedAt": "2025-12-08T15:00:23.224Z", + "postProcessHash": "d0bafb639a21842fa4c5f7eb9704c73801da5b0f8c3cffbfad49b220b1afd69b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.057Z" + "updatedAt": "2025-12-08T15:00:23.233Z", + "postProcessHash": "1853e8964ba04497cde8b1e889398360fb7344e039ac7076833abca445810baf" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.057Z" + "updatedAt": "2025-12-08T15:00:23.233Z", + "postProcessHash": "833d61b24cb32b93d745174bf4510d46e6084deef58898376f6fb528b63c2c3f" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.058Z" + "updatedAt": "2025-12-08T15:00:23.234Z", + "postProcessHash": "69ef5116fd98f7305f5e749b3c3b48add34a3d81f5d17610ba52afe5c69364bc" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.059Z" + "updatedAt": "2025-12-08T15:00:23.236Z", + "postProcessHash": "2ce7f8f5c880c39ee8259c82a068675e0b8da04eb4047daf2293799ded4980a6" } } }, "43794ceac4d2520b3662554f3974cc763a4a7683779015de89f589659bbbafc1": { "3012e82faa3874fc3bde205b6da3b774249f383b8cb1af1fcb5627edc2c8494d": { "fr": { - "updatedAt": "2025-12-01T18:59:36.055Z" + "updatedAt": "2025-12-08T15:00:23.225Z", + "postProcessHash": "0cdb14121090f76daeba758a3688171e21908d59afc1acbe89e085aca3526a8a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.060Z" + "updatedAt": "2025-12-08T15:00:23.242Z", + "postProcessHash": "c2f941c7419a379e5149c29ac046b52a66496f1b01b9242da1657c5c4d04cf05" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.061Z" + "updatedAt": "2025-12-08T15:00:23.242Z", + "postProcessHash": "67a6d0b690eab9ab7d77fdc3455255c649be39086314717304dd39ef4993ca53" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.061Z" + "updatedAt": "2025-12-08T15:00:23.244Z", + "postProcessHash": "dba10fd43a9d4e2c99c85cf5c5a422e48ba141f3f57d25f9e1a4fd67c3fff767" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.063Z" + "updatedAt": "2025-12-08T15:00:23.247Z", + "postProcessHash": "d2efe9e748852e53e930f4d885135c58d7b8878c4d2b7951ee8c6db79c5a17df" } } }, "a727aaf57c3ccf44bba2c7c5de037d3bba88665a9f5c844089362190f41928fb": { "7af06d1c5a3c4b9e744209b79a76face0e339aa504d8269c0ecb5960188abb3c": { "es": { - "updatedAt": "2025-12-01T18:59:36.059Z" + "updatedAt": "2025-12-08T15:00:23.239Z", + "postProcessHash": "4272bccc9d8d85a7aa82000b7a3f84bb8c28baa840b3449ded0d12b4cd3d5d81" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.060Z" + "updatedAt": "2025-12-08T15:00:23.240Z", + "postProcessHash": "3f3f87354e2f36ee033b36396087b3e0e178f8cd53754528e2b62d7ff303c528" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.060Z" + "updatedAt": "2025-12-08T15:00:23.241Z", + "postProcessHash": "5316b46cbfdcd7feee5049bf43e000ada4ff2f255409c3c3bd46fae1ff4ad580" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.061Z" + "updatedAt": "2025-12-08T15:00:23.244Z", + "postProcessHash": "648755db3fa3a576086dbd129368d0b3f45842b62ec326123624633b3a0d4d07" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.062Z" + "updatedAt": "2025-12-08T15:00:23.245Z", + "postProcessHash": "00942bbdf19ccff817b29dd568cf27542a4b02517bb16981ed8b7c2d66f85979" } } }, "220f68ed08439267935887a4c7c3539b2ba13f8cbc1c69d52e3a3eca99ddd2ac": { "2564fcdecdf1c775b74a9d80ab7d59d3f292615ce1bb817058fded19877bbe0a": { "es": { - "updatedAt": "2025-12-01T18:59:36.060Z" + "updatedAt": "2025-12-08T15:00:23.240Z", + "postProcessHash": "4eeb850a69668697123d6fcfbf4da64f4d9b90ef84f6e98312225f2155425564" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.062Z" + "updatedAt": "2025-12-08T15:00:23.247Z", + "postProcessHash": "aeb41e4ce755b59bfa819b81c6ffa8920ae67da401dba55969e4ef5314f39c9c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.064Z" + "updatedAt": "2025-12-08T15:00:23.250Z", + "postProcessHash": "475181ecbeb0fe4ce60178d1b14f47ba1d557962cadd815b4dfa04fd6af7cb2c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.064Z" + "updatedAt": "2025-12-08T15:00:23.258Z", + "postProcessHash": "bb125028398f1761f687370abcb13265d89ff69ea95037a4e541b300adc5301a" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.064Z" + "updatedAt": "2025-12-08T15:00:23.259Z", + "postProcessHash": "78c19e8888f4528646d7c10415e6361c97bd7cc1b237fb4a47875323e756a19d" } } }, "10854ad8de2e8427e8cd6547a3017671ff8356c26d6c9aa2edd2a85531588570": { "1107896fcb31f6f531ce048a4fb0d3385b48b838302f37cf5433a6c7439c8a66": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.063Z" + "updatedAt": "2025-12-08T15:00:23.249Z", + "postProcessHash": "c80a40c0df7bf04bef10f5634b1845c4d01384e81e682be52c064a60b7b565e7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.068Z" + "updatedAt": "2025-12-08T15:00:23.267Z", + "postProcessHash": "7016d4de962f4fb6bb1f8d6aff538aa4fb61598568b3c0e9c083db8f03188560" }, "es": { - "updatedAt": "2025-12-01T18:59:36.070Z" + "updatedAt": "2025-12-08T15:00:23.293Z", + "postProcessHash": "1d1f628eee2d4de3981fa3807cba328c3f89c3dc8514d61be616112923ade5b7" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.070Z" + "updatedAt": "2025-12-08T15:00:23.296Z", + "postProcessHash": "7f2ac80334c6bf439d21e41830309c78e7a7503192755543efb3376fb57046ac" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.070Z" + "updatedAt": "2025-12-08T15:00:23.296Z", + "postProcessHash": "938ea407ac0f1041a38f4832c837f47d7f260d5b10b39d65120100ea087e766e" } } }, "cb8d29f8043e9733234a696bc71f6255d2b16c8bce64739dd3c1af4b3d64dccb": { "e866f111e535dc82e7d510c01d482ed73a7ae93d0075970747b130c8cf6fa857": { "fr": { - "updatedAt": "2025-12-01T18:59:36.071Z" + "updatedAt": "2025-12-08T15:00:23.250Z", + "postProcessHash": "6ebc753b0cb95138c0084b81a17a5a10c15f29b6e3bc1380c46a431b6809ea06" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.071Z" + "updatedAt": "2025-12-08T15:00:23.252Z", + "postProcessHash": "5d62f5066d80a8ea108bb71aa0447d5799e500465d20f5977008ccc1de3e1d18" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.073Z" + "updatedAt": "2025-12-08T15:00:23.255Z", + "postProcessHash": "eaa1597ac17d806686e13efea6c01b9ea8af61ff92be18e6794e11871c3ef1ed" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.078Z" + "updatedAt": "2025-12-08T15:00:23.303Z", + "postProcessHash": "feb7720e0a69d0567e6eb1e95c94fc57ea9aa6394cd7d3e5a3bd5cf173d391c4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.080Z" + "updatedAt": "2025-12-08T15:00:23.308Z", + "postProcessHash": "5f20c9353ec3c44a301392843362b3b50495ecb03dd897e7db8e4c91c6c58d6e" } } }, "64a051beb7c5347eea2d0d4e229501cdfd5fde97cc34e3e0230dd461f9b96139": { "16335c9783bb00d094a0bdb81ae20ab0098d826dad054fb44253ff24931423f7": { "es": { - "updatedAt": "2025-12-01T18:59:36.072Z" + "updatedAt": "2025-12-08T15:00:23.253Z", + "postProcessHash": "e14a30db9c3488c556b3445111f37df4dce277ec08faab716d661784926cb044" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.072Z" + "updatedAt": "2025-12-08T15:00:23.254Z", + "postProcessHash": "708961908b379b36e14f2fadb28b74ab0352cb32078ceabd4a9ec0e93711ed6f" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.072Z" + "updatedAt": "2025-12-08T15:00:23.254Z", + "postProcessHash": "0503de326f28431724d6aedacf4cc86e21663bc68ef41f516a384679e606d52d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.073Z" + "updatedAt": "2025-12-08T15:00:23.256Z", + "postProcessHash": "6dd277da4a9f1640fd6076a121f32e39762dc0620ef4d8f34c611ba5254e6c66" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.074Z" + "updatedAt": "2025-12-08T15:00:23.257Z", + "postProcessHash": "35dee3d14e718904701937960214b3352f86b7a1fdc6f8e59fe2e6f48126dcf1" } } }, "5249cd57dda305b53fc0a5349133e2a1ffb6506b6c56b8137de582e83b296247": { "b1256b0214bdf07671644575d8fcdad806b6660ef954d401ca2617cfc484647f": { "es": { - "updatedAt": "2025-12-01T18:59:36.074Z" + "updatedAt": "2025-12-08T15:00:23.257Z", + "postProcessHash": "da373414566d11045ec1c40d837db0717030f8f16164197c97a72b9cdfa3cbb7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.078Z" + "updatedAt": "2025-12-08T15:00:23.304Z", + "postProcessHash": "a64742bb8274b75c7a3e057d114b77b79dc919b6a94741ce9bc548e923887bde" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.083Z" + "updatedAt": "2025-12-08T15:00:23.313Z", + "postProcessHash": "10318bb728cedf16ddbd4326e1e1aa7f019d02c5841f9d8a97921820f1127871" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.084Z" + "updatedAt": "2025-12-08T15:00:23.314Z", + "postProcessHash": "53349786dc38878fdab5d8a0982963b7bebdf5058d79936ff51c4443cf4bf0e3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.087Z" + "updatedAt": "2025-12-08T15:00:23.329Z", + "postProcessHash": "58a822b2ff9a94ab5779e9d9ab67508e81a5163db220c64bc216ac3524dcc338" } } }, "01d1acc7284c496cddd8b1413e4e8e9706b1349f501c2a3b46c5f6d89026ed56": { "a408f8aebe245dd0e4fa7cd394f873234d7c930e16c5e03b55f719c8b708c194": { "fr": { - "updatedAt": "2025-12-01T18:59:36.066Z" + "updatedAt": "2025-12-08T15:00:23.262Z", + "postProcessHash": "3a0c66e642af521401e7cc6eee85a3beedafa88d24ea931f07dc1302afcd1fea" }, "es": { - "updatedAt": "2025-12-01T18:59:36.066Z" + "updatedAt": "2025-12-08T15:00:23.263Z", + "postProcessHash": "18501e3f31b9b6bceb1a2557907b469eca089031daaa4bce2d0c8fafffbbd0b9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.066Z" + "updatedAt": "2025-12-08T15:00:23.263Z", + "postProcessHash": "5ade81af575a01c4eebaa7604bbf603e870d357156d5678355d54cc7bc3b5f3b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.066Z" + "updatedAt": "2025-12-08T15:00:23.264Z", + "postProcessHash": "4996bf0377a1c1bbae6c47a653c8323b379fc64798ab46f0d9a6a38b9173de78" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.069Z" + "updatedAt": "2025-12-08T15:00:23.292Z", + "postProcessHash": "719f109d66c9034514ffab00649a03bb6e15ba524b699043d93f14d13c3fb535" } } }, "e38f1d44af66e511fdd04a786ed1668edee3b206aa8ca7b4758d01803f81a45b": { "a02abcf3f98239aff8c140cb37c232c015c1d46933de77678b3f8ea11e1d54fc": { "zh": { - "updatedAt": "2025-12-01T18:59:36.067Z" + "updatedAt": "2025-12-08T15:00:23.265Z", + "postProcessHash": "6a55f1e6deb2cf95b759437bc07fcdb743879a151cf700aee1d4cae4a26b59c7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.067Z" + "updatedAt": "2025-12-08T15:00:23.266Z", + "postProcessHash": "977ec2c6d8adeb7ea0875dac4fc283ae71da01850fb0a8e5be8ab36169a638b8" }, "es": { - "updatedAt": "2025-12-01T18:59:36.068Z" + "updatedAt": "2025-12-08T15:00:23.274Z", + "postProcessHash": "026f3e240f408c1407d4c66ab5d811ed29d598ade95682fc6b92c6927aad848a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.069Z" + "updatedAt": "2025-12-08T15:00:23.276Z", + "postProcessHash": "f838bbebfeea46a5be4ae9ef2ea172b65a4ab8da177e05a47636c388c93da6c1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.069Z" + "updatedAt": "2025-12-08T15:00:23.293Z", + "postProcessHash": "53817a55a6ba3d9c65a04e6893359b853c8609013f7025141b2f4aa734aee262" } } }, "aa38b821fb4218297d8c1519e963fe085532c1062ce9e560cefa0a9540e760f4": { "4d9143e8b1b2464b6c299c1c6a503207e9b9a2b2f366c192294fa89548493ef0": { "es": { - "updatedAt": "2025-12-01T18:59:36.074Z" + "updatedAt": "2025-12-08T15:00:23.267Z", + "postProcessHash": "c97915823480de226b7c722411cb604959cb30436a7bfe8485b9027ea17530d4" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.075Z" + "updatedAt": "2025-12-08T15:00:23.297Z", + "postProcessHash": "0c2d0697171eaf22387fe5b43a1cd4c60e491df0962956901a8cde713801ac9b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.076Z" + "updatedAt": "2025-12-08T15:00:23.300Z", + "postProcessHash": "4a41f1c543245c6ea00c641e262d2614fa55ab911e9141168683053f2786f649" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.077Z" + "updatedAt": "2025-12-08T15:00:23.300Z", + "postProcessHash": "980e3c94f340d695afbf4ce144db87d41caecac34f3f7a5bd1f85784ed441fc3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.078Z" + "updatedAt": "2025-12-08T15:00:23.302Z", + "postProcessHash": "0c2d0697171eaf22387fe5b43a1cd4c60e491df0962956901a8cde713801ac9b" } } }, "ab4407af7bd23d2079a64cc41b53e4c92fd97d148d479bbe78af6eae8e78bc89": { "c6138c0ff7239b36fcb5d30586a4030c29310ce5e2aace1097c20463ae0f1e25": { "fr": { - "updatedAt": "2025-12-01T18:59:36.091Z" + "updatedAt": "2025-12-08T15:00:23.268Z", + "postProcessHash": "884a22db92b0f11e583f523747d3cc6b5233d4a0af80a3db50c4616190c18b9e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.095Z" + "updatedAt": "2025-12-08T15:00:23.331Z", + "postProcessHash": "d45ef8b4ca92bb874d660b0243a7dde9a9ae481a5cc9a0149d897afb3cf11118" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.098Z" + "updatedAt": "2025-12-08T15:00:23.345Z", + "postProcessHash": "a77450e07339e38fa11a3bcd642402555820125eb98bab032173175f14443931" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.098Z" + "updatedAt": "2025-12-08T15:00:23.346Z", + "postProcessHash": "63e6f995647276339f3bedc11a3af9dd9ab5aa926577321b5991c72d7b52a866" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.099Z" + "updatedAt": "2025-12-08T15:00:23.347Z", + "postProcessHash": "8e745ab17acc36ae493dbcded7c33725253de569f071b9e7d99143e3b4da4a4c" } } }, "2bab204cc64496ff697e53e49cab4979d91faa4e0b9ac4addaada73e81219a65": { "1464e4557b63a61f5990d811e5a36066405c5e62d0e04d64a0ce84b4e84d71c3": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.091Z" + "updatedAt": "2025-12-08T15:00:23.269Z", + "postProcessHash": "545e81412582a77ae8ba51c7cf48adc5f99dc63bc8ce88ec46686349ea3d53c1" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.092Z" + "updatedAt": "2025-12-08T15:00:23.271Z", + "postProcessHash": "a54e33b710fd657e57e8fb306a6feeec14ca568f1a7ddca1087d34a0a8bf1e6e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.108Z" + "updatedAt": "2025-12-08T15:00:23.362Z", + "postProcessHash": "a54e33b710fd657e57e8fb306a6feeec14ca568f1a7ddca1087d34a0a8bf1e6e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.108Z" + "updatedAt": "2025-12-08T15:00:23.363Z", + "postProcessHash": "600d7308add1721885b76d4ed00618e775a163b7b2f3567a91e5a2f0506ad19d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.113Z" + "updatedAt": "2025-12-08T15:00:23.389Z", + "postProcessHash": "22bd3ec15b654323c85d84643202b5fb50e01053ecbd92766cf33eba80dc2c1b" } } }, "1f32b81e4a8f58ebfbc9eb7aab6a289ae7b157c363a70cc5fe4649a6c99bf05f": { "d02615c4b665bb3656752defe225206cc086d4af10ec12dc8d3d7f6228b28fc6": { "zh": { - "updatedAt": "2025-12-01T18:59:36.092Z" + "updatedAt": "2025-12-08T15:00:23.270Z", + "postProcessHash": "adac807e233453946e26c93de381680c214df3647ff08f5e7acabaca8fce6df5" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.094Z" + "updatedAt": "2025-12-08T15:00:23.321Z", + "postProcessHash": "adac807e233453946e26c93de381680c214df3647ff08f5e7acabaca8fce6df5" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.094Z" + "updatedAt": "2025-12-08T15:00:23.322Z", + "postProcessHash": "6bf0c5ffc7da2ff2aaa25ffc73b43db0bcda970ce49e4699c9ea21d828ed8a18" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.104Z" + "updatedAt": "2025-12-08T15:00:23.356Z", + "postProcessHash": "adac807e233453946e26c93de381680c214df3647ff08f5e7acabaca8fce6df5" }, "es": { - "updatedAt": "2025-12-01T18:59:36.106Z" + "updatedAt": "2025-12-08T15:00:23.359Z", + "postProcessHash": "adac807e233453946e26c93de381680c214df3647ff08f5e7acabaca8fce6df5" } } }, "9539b6e745ff9431ed0f6bf96615c762c2e87a0b267604d5c13668f8eb83c6ca": { "92414e6558aa6b0c56696b1f30ba13e68bae7146aa63f9791171b9ebcf3e53a0": { "fr": { - "updatedAt": "2025-12-01T18:59:36.074Z" + "updatedAt": "2025-12-08T15:00:23.273Z", + "postProcessHash": "39684693926a54510d1058f625b415a057f5c393bcc5cbb905175af8ae5e1e2e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.075Z" + "updatedAt": "2025-12-08T15:00:23.275Z", + "postProcessHash": "ace3e88b04a5fc37c166da4dc5a617b111e5acc005cd725c1a812951e9f006b4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.075Z" + "updatedAt": "2025-12-08T15:00:23.277Z", + "postProcessHash": "ace3e88b04a5fc37c166da4dc5a617b111e5acc005cd725c1a812951e9f006b4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.075Z" + "updatedAt": "2025-12-08T15:00:23.294Z", + "postProcessHash": "ace3e88b04a5fc37c166da4dc5a617b111e5acc005cd725c1a812951e9f006b4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.075Z" + "updatedAt": "2025-12-08T15:00:23.294Z", + "postProcessHash": "ace3e88b04a5fc37c166da4dc5a617b111e5acc005cd725c1a812951e9f006b4" } } }, "f6118c733898d579dcf800b4afe16f9d9ff7ebde31edaeb757c9bb61f2d3c725": { "df36cd461688ee898524308bbacdfd930cb8b7c5705650f39f35731e396a0e1d": { "es": { - "updatedAt": "2025-12-01T18:59:36.076Z" + "updatedAt": "2025-12-08T15:00:23.298Z", + "postProcessHash": "c35b758aabe29d5ddbd83a73964c1d4b8ce861f11370de20303baa24a764006e" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.076Z" + "updatedAt": "2025-12-08T15:00:23.299Z", + "postProcessHash": "9510acb4f5c8eaeeb1461101ef00fabeaba20116f86db20b1ea27d58a4d7f139" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.077Z" + "updatedAt": "2025-12-08T15:00:23.301Z", + "postProcessHash": "32ce5ad1a3237878cdb74ac5667a6564723a4bedb8c183b7bf8bbb4ce97b5f3a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.078Z" + "updatedAt": "2025-12-08T15:00:23.302Z", + "postProcessHash": "fc8679e01e46515d31a201bc25971dba3d1af189ee4564577404b00f173f50bf" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.080Z" + "updatedAt": "2025-12-08T15:00:23.308Z", + "postProcessHash": "50a8625b4870a2f676430036a9b4c676accb8cc12a52236b3e14b3a1fe1e4829" } } }, "4852c85212c804b0dca0e11072a884b86ea2e4a85f278bc3d3e6cef3567003b8": { "28c12e415e43f6fd7f572e53028b9340d3f0cc386105b76c61988b3bc0c73aea": { "fr": { - "updatedAt": "2025-12-01T18:59:36.079Z" + "updatedAt": "2025-12-08T15:00:23.305Z", + "postProcessHash": "bcf86cb1692e614608e03fca7648799e828be101c951270ad6dbc0c91d38e4a2" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.080Z" + "updatedAt": "2025-12-08T15:00:23.307Z", + "postProcessHash": "019689a1d6efc809d24f7dd38963ee3b9a93b0959b742d3ebbf49282c95e420b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.082Z" + "updatedAt": "2025-12-08T15:00:23.311Z", + "postProcessHash": "7829bdd90fe17e61f33e5e928330fb63bde116b16dcdd61b459341085b9bd7ac" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.084Z" + "updatedAt": "2025-12-08T15:00:23.316Z", + "postProcessHash": "4d6a9dd10fdf99aa13d578b91e597068c0e55ae75b40474018ea29d2787cbeea" }, "es": { - "updatedAt": "2025-12-01T18:59:36.085Z" + "updatedAt": "2025-12-08T15:00:23.317Z", + "postProcessHash": "504cb40c15fb0fdd1e6394ddad2b1d169275e5fd17d4961c5eee9fdfa6dc100f" } } }, "2c29c3f45e2e481c06a91a16e3ec049bf04ea1ac5f959f2143b45ca685cc2349": { "1771dc1e4b2fd2f83f3663031a9a68e3b340cbc44541a21ea26b0a35e9895488": { "ja": { - "updatedAt": "2025-12-01T18:59:36.079Z" + "updatedAt": "2025-12-08T15:00:23.305Z", + "postProcessHash": "07a9583c67a5b66f4c52fd9337079a37b5fbaa4726ff8b6633ade91dc60ff17e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.079Z" + "updatedAt": "2025-12-08T15:00:23.307Z", + "postProcessHash": "5f43ab010f517cb86a8718a1077fe793ab3d7aeea98baa6a3a65feb6e296928a" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.086Z" + "updatedAt": "2025-12-08T15:00:23.326Z", + "postProcessHash": "e1422b883ecca13c7ef1a6286216431254275facc338375fe08e46311a467875" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.087Z" + "updatedAt": "2025-12-08T15:00:23.327Z", + "postProcessHash": "7795acf6e67d6bf3d4cd1cfa7482bb0beaf8fa5485514171de53d7ac315434d3" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.087Z" + "updatedAt": "2025-12-08T15:00:23.328Z", + "postProcessHash": "d14fac7499886b8804cc91321ac55fc1d097007564760fa754242e069e2c4b91" } } }, "6f875b11d53b43d9eba49879ea5b8bde0e7e756ea468dd8fc2ace8c348b310af": { "c9be356d0db4ee9170ce7b865798be5952eadd6ec8efc1c85bed0f213233a978": { "zh": { - "updatedAt": "2025-12-01T18:59:36.079Z" + "updatedAt": "2025-12-08T15:00:23.306Z", + "postProcessHash": "8827217c8f4dd2ea92b3e0055b6f88c7b54d3d4cb878fd721c0cbf04f29ebfe2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.080Z" + "updatedAt": "2025-12-08T15:00:23.309Z", + "postProcessHash": "f966bd8b4b0dbf99e3d670daf72336ca2fdbb10d4ec421c0b9c7f67460c37874" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.084Z" + "updatedAt": "2025-12-08T15:00:23.315Z", + "postProcessHash": "e60a4cf008c091606452f6e7c84cb52cdd4cbc3b86939a37b25be3200c45a0ce" }, "es": { - "updatedAt": "2025-12-01T18:59:36.085Z" + "updatedAt": "2025-12-08T15:00:23.325Z", + "postProcessHash": "eff8168feacbfaec50389fa65c847df89f0cfeba44085ac8cb0f2de08ce5ec07" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.086Z" + "updatedAt": "2025-12-08T15:00:23.326Z", + "postProcessHash": "c96a710f1c54398276beaad1493ea2fd2c0ff62e9b7fb7f27472133091bd7147" } } }, "a8803430b83d63d2f098eff99097d7d02bf678e80f772107fe3315822ceb2ded": { "31c0e64967127d07130e4706d667d587ad81a7c792b1ac155aec57aff1059962": { "es": { - "updatedAt": "2025-12-01T18:59:36.081Z" + "updatedAt": "2025-12-08T15:00:23.309Z", + "postProcessHash": "fcd05820a42afa93d62e39258acfcdd00facfb3f4f2380d18ae05e6847a33bba" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.081Z" + "updatedAt": "2025-12-08T15:00:23.310Z", + "postProcessHash": "ed495feaf072bfeff73440061718cb04191e92841182f2b60d2d42d0cd97a5de" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.083Z" + "updatedAt": "2025-12-08T15:00:23.312Z", + "postProcessHash": "4350aaeaff5e637af5ceb9a2e3972bdf38b921d32cb8b9818d87d3498c025b96" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.083Z" + "updatedAt": "2025-12-08T15:00:23.313Z", + "postProcessHash": "60df4ed6fe1044cf85143c68f40132e61229b01705b1c1162e6ae2cc7ddeeaea" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.086Z" + "updatedAt": "2025-12-08T15:00:23.327Z", + "postProcessHash": "397c40f2a0c9df0c421d154e4514f43314e7c4387cf39d2de10a4830f6be927b" } } }, "31dffcee530c1e1d6da07973dd48920b7c4e6d916ce40797ad3ce43de3d21d91": { "66535316723e6fea1428aac4383a9834b6dc13c744b797f9914bb46285ee6584": { "es": { - "updatedAt": "2025-12-01T18:59:36.082Z" + "updatedAt": "2025-12-08T15:00:23.312Z", + "postProcessHash": "946b16827c7b3252e1c79d436d30c035bd8f8b5ba11eeddc68664fd8149f3436" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.088Z" + "updatedAt": "2025-12-08T15:00:23.330Z", + "postProcessHash": "3986ef5e100160c13346486ddea46cf216b54f021d49828c05b99d3256bb3def" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.088Z" + "updatedAt": "2025-12-08T15:00:23.330Z", + "postProcessHash": "d369f77e3b9927fdefc153c4aae4132d5a7930edf4356f0117ac488b78b06f94" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.089Z" + "updatedAt": "2025-12-08T15:00:23.336Z", + "postProcessHash": "d8dde337353dfa911e14303c98c40525b4688353bf7b48b21b0e009a6cfeb944" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.090Z" + "updatedAt": "2025-12-08T15:00:23.338Z", + "postProcessHash": "998337cb4110cede9fd78c042fc37abca2643ae8f7cb19c76a05b2b4359d2457" } } }, "ab9dd37c057459ddd9e02b0e6655c3a5155d5a7d8a5544e8f171683d3f1c78f8": { "776c528b3a4a4f4016ca6b63eaced7265778c37ad0e16bace1e63f4d642f294b": { "fr": { - "updatedAt": "2025-12-01T18:59:36.085Z" + "updatedAt": "2025-12-08T15:00:23.317Z", + "postProcessHash": "76e77e41486781a25a9b2adcb1c56353bb05c16dc485f85359762d57fb73ad83" }, "es": { - "updatedAt": "2025-12-01T18:59:36.088Z" + "updatedAt": "2025-12-08T15:00:23.332Z", + "postProcessHash": "0c3b489b1603a3682b66a4897201cac84cb6e3674f34195dc82a068718fa6820" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.090Z" + "updatedAt": "2025-12-08T15:00:23.340Z", + "postProcessHash": "8ec5ae2193a282e2103c9c5e50945a8e3ef0b644149bf5fe530b2417feef655c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.090Z" + "updatedAt": "2025-12-08T15:00:23.341Z", + "postProcessHash": "6e4d8a28bf3e00ffbc3bfeb26fc77ba8e9bc63903aa2a8cc3bf8751389551871" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.105Z" + "updatedAt": "2025-12-08T15:00:23.356Z", + "postProcessHash": "274e33003d21f9c31cfeb89b9b2e20c38248bb053a0509918bd5198b465a8b9a" } } }, "45c82e87fb179f1c362a6a4cfa1d9503cf94ff1bff331f4d10b23407bb28e633": { "c6138c0ff7239b36fcb5d30586a4030c29310ce5e2aace1097c20463ae0f1e25": { "fr": { - "updatedAt": "2025-12-01T18:59:36.093Z" + "updatedAt": "2025-12-08T15:00:23.318Z", + "postProcessHash": "e885982a73f5bd55e8f3adc780d15c03f460b73ee20a15d7fa910b7780563cb0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.099Z" + "updatedAt": "2025-12-08T15:00:23.346Z", + "postProcessHash": "ef83894cc3a2d5db864879e9ffef47d4c136974161ef9dcd29359d80291f30fe" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.099Z" + "updatedAt": "2025-12-08T15:00:23.348Z", + "postProcessHash": "9a21e331abc086a4d712e09fa141aef3fee6f77e7562f488ed9433037fbde166" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.101Z" + "updatedAt": "2025-12-08T15:00:23.350Z", + "postProcessHash": "8547189a5e4551f66ad5747d77b747d0a45c6ed4f30337b3ae0e687ebb7b6e0d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.101Z" + "updatedAt": "2025-12-08T15:00:23.350Z", + "postProcessHash": "f043be2d52451f6e11feccb235936e036eeacabfca7ea03401289f26c422ad01" } } }, "41103b61fee373ab96fabd54f0b00499cc4c05fef7ce39ea6061633372eac99c": { "59f52b0f124327128daf63d0b0de73cd2054eabed71afe964bfe0732d450c865": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.093Z" + "updatedAt": "2025-12-08T15:00:23.319Z", + "postProcessHash": "0e4fa58582821548c82090858fffbd5b2c75fb1314f3b08d2ee128626de2eb64" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.097Z" + "updatedAt": "2025-12-08T15:00:23.339Z", + "postProcessHash": "6a9e23960fbf7f9f417a0a08aea10d1880d112d84bc98380831c200e4496abd7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.097Z" + "updatedAt": "2025-12-08T15:00:23.342Z", + "postProcessHash": "fa6b939fdacdc0120ddfa931eb32e7e2454802ff1e3855bc7bbd2390819b35ec" }, "es": { - "updatedAt": "2025-12-01T18:59:36.097Z" + "updatedAt": "2025-12-08T15:00:23.343Z", + "postProcessHash": "7e8a2f76ffb8130ea88aa63bfeace96c17d1ad10ec5b3a6f50667c673e24b1bd" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.100Z" + "updatedAt": "2025-12-08T15:00:23.348Z", + "postProcessHash": "679a32b4f4fea2cf0bb0233813c03337aef861e39b17a80e82b4a3d7d6da93cc" } } }, "eb8ae1611aabcf93bcfc2552ecd99bb9df140c4b24b6758193db81f6a8def506": { "df8a8b6d6b76cf6140d24749b6e1031a31ab5a99a337d077304b9ae974bb2fcc": { "fr": { - "updatedAt": "2025-12-01T18:59:36.093Z" + "updatedAt": "2025-12-08T15:00:23.320Z", + "postProcessHash": "462794a9b93a4966b13e76ac49e813c143435eca849f034311961479289baa5a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.103Z" + "updatedAt": "2025-12-08T15:00:23.352Z", + "postProcessHash": "b408c7062efd7a9314ded7aac6438dfddf28f66e97946fffe0e801cd30929a4a" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.103Z" + "updatedAt": "2025-12-08T15:00:23.353Z", + "postProcessHash": "f8bde51a4334fd197c5517640089416954b760b18bfd823700ef2eadea06c67b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.104Z" + "updatedAt": "2025-12-08T15:00:23.355Z", + "postProcessHash": "38677473eb5fdc99f12f1d97a0dccff2400373f840d06f6a8bef55fa2e99d490" }, "es": { - "updatedAt": "2025-12-01T18:59:36.107Z" + "updatedAt": "2025-12-08T15:00:23.359Z", + "postProcessHash": "11cd78d3a5cd081238f80f340878a2bcc973f7b33cbe54a18a1cea0678172240" } } }, "33bdd56f7f87066a2fae8093a500cbe4f8f032ea3649f33ca9f075a9dd1ee7e4": { "5242da3bad242c8f66b698ad8b9e41fbe84c32fc877056eafdef1d416dc9996d": { "fr": { - "updatedAt": "2025-12-01T18:59:36.093Z" + "updatedAt": "2025-12-08T15:00:23.320Z", + "postProcessHash": "bdda21544e8f4e73db7f0d4ccc69a1571cba34aa04e72f9cb75e85a51c44aec2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.094Z" + "updatedAt": "2025-12-08T15:00:23.323Z", + "postProcessHash": "7c0d3bc0e91c9fcbe515bc997e291053091ea2b59e59d05e23224a9ab61971d2" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.094Z" + "updatedAt": "2025-12-08T15:00:23.323Z", + "postProcessHash": "0db098205238471e9d51fe23ab7a68e849eeb19e5b79b27e9219fe753a08008e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.104Z" + "updatedAt": "2025-12-08T15:00:23.354Z", + "postProcessHash": "7be3a19e0d54518d3851063aeabdb056af1a4ff11cf7c64ad81cbfb575b55df6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.105Z" + "updatedAt": "2025-12-08T15:00:23.357Z", + "postProcessHash": "b9e98c81b830022214d77911e37133ef61df0a962e915f865b8c41ae5ea521fe" } } }, "22aa5f6656a51ede1b1dc170265059aa9dfbc94dd10527a4ee5eecf9473616e9": { "eaba67235f1d53483f4493bd5990ce3b4506b07499634edbe8484378742b1475": { "fr": { - "updatedAt": "2025-12-01T18:59:36.087Z" + "updatedAt": "2025-12-08T15:00:23.329Z", + "postProcessHash": "3246a2c1dd2b49e31863f60bc30a72425ab2f905d5be2c53abce7c09b195385a" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.089Z" + "updatedAt": "2025-12-08T15:00:23.335Z", + "postProcessHash": "cca978487fe3c449dc119584ca76c048308e60a5e5f1837410210355fee915a8" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.089Z" + "updatedAt": "2025-12-08T15:00:23.337Z", + "postProcessHash": "1e044dc81f3b09a86980d0f9af7ec8e08edfe72e4a04b241466c19b349f8111a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.090Z" + "updatedAt": "2025-12-08T15:00:23.338Z", + "postProcessHash": "e8a6acdb8a71e31cb2cb5d4ff4a99184dadde6d8e1353d4438f9ad7037993acf" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.091Z" + "updatedAt": "2025-12-08T15:00:23.344Z", + "postProcessHash": "7e56e041acb5a43ddaf4a3ae023e2feed1660fd9b82b530f15de6977ba330614" } } }, "8cfd6b4c6d178f23d3df6bbbd35ae1e2cad3c793f68ab6fe405b67a4ed96d5a2": { "beea4850b1cf754ddd8a3b8f8ea2ff5c0cf31e765bfaf26d62e03973c9d0b72b": { "zh": { - "updatedAt": "2025-12-01T18:59:36.095Z" + "updatedAt": "2025-12-08T15:00:23.324Z", + "postProcessHash": "342c0655d0a8cdc05ad5aa0894478071fd3327b7282f74ea95ce307b4f1b505d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.095Z" + "updatedAt": "2025-12-08T15:00:23.325Z", + "postProcessHash": "407052b766e0c7e0b644f8cb23cc87fad1ea18561dc48d0f184d7f106356ed4c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.105Z" + "updatedAt": "2025-12-08T15:00:23.357Z", + "postProcessHash": "3e213f0a40072497af849fe95bf2c8d607d9f25ad9b97c4e76d6dc7da3504861" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.107Z" + "updatedAt": "2025-12-08T15:00:23.361Z", + "postProcessHash": "aacea1489c8c8eeb3a22786088f7bb0d6ccb4ca03bb0bd6d22bdef4776d23ba4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.108Z" + "updatedAt": "2025-12-08T15:00:23.362Z", + "postProcessHash": "a399c6de14ed1bb04b225e00f53be327492f8f0a78689e8d9f2a647a6b50f199" } } }, "620992f145c22da66cf937cb5d268bf85e35d3e292940dcd67f91c76d7577c88": { "97e81bc302d8d40cb6f1658cc475fc4fbc3f27ced14e0f22bb18a8f37140eef0": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.096Z" + "updatedAt": "2025-12-08T15:00:23.332Z", + "postProcessHash": "97e81bc302d8d40cb6f1658cc475fc4fbc3f27ced14e0f22bb18a8f37140eef0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.096Z" + "updatedAt": "2025-12-08T15:00:23.333Z", + "postProcessHash": "1d0edfc37989d6571e74bd1f243ea1f316df8bd16ea0a2d37c8f02be3d8295ee" }, "es": { - "updatedAt": "2025-12-01T18:59:36.096Z" + "updatedAt": "2025-12-08T15:00:23.334Z", + "postProcessHash": "caff3378019cc2f4415676be5cc86e7569b8690ea738c0c9988086253b95f0da" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.097Z" + "updatedAt": "2025-12-08T15:00:23.334Z", + "postProcessHash": "97e81bc302d8d40cb6f1658cc475fc4fbc3f27ced14e0f22bb18a8f37140eef0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.098Z" + "updatedAt": "2025-12-08T15:00:23.344Z", + "postProcessHash": "a3e09ec1f8e7f191f878fd4cac33511b8b20c6361b1a93398c8cbd11cfe08714" } } }, "84b02634e09d41495aae214ad574ee5017de6c087cbcec95b6986a9ab71d49b5": { "09b38af06768be7ca4bae1be519bc468d17c8251260a7e88ca56720f17845691": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.098Z" + "updatedAt": "2025-12-08T15:00:23.345Z", + "postProcessHash": "38d906e2954979e302d102e599b151a07b095c46c0e70ba46464026b50604d3a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.100Z" + "updatedAt": "2025-12-08T15:00:23.349Z", + "postProcessHash": "819071580f69b6259ea457e8540b0f29d79122bd46e5b83e1c83d98918651f03" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.102Z" + "updatedAt": "2025-12-08T15:00:23.351Z", + "postProcessHash": "7e8615db54840c28d92ef5b1b822f31c42ce4d3a8d39a3eec88204d332008b8e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.102Z" + "updatedAt": "2025-12-08T15:00:23.352Z", + "postProcessHash": "f6240efe0c483c5165baaf718c4c5c37e940a09c03b8fa47f8fdcf7fe10150d6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.103Z" + "updatedAt": "2025-12-08T15:00:23.353Z", + "postProcessHash": "ce258cffcb192bbce3c688f90aee540ac3cad302de4db6f0308b83589e326e11" } } }, "3d7b20aaddb0eb9cfbe22b700d7238cfa2fdf697007758e4358bcb9dae7dbda2": { "deacc229bc1da59b6d143a251799a527d47d052fde5147a32bc6182e05edccdd": { "fr": { - "updatedAt": "2025-12-01T18:59:36.107Z" + "updatedAt": "2025-12-08T15:00:23.360Z", + "postProcessHash": "adcb0c846404b6ff4bde68aeb94a1362d20d22ee83d3cc26871732157f35da8b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.114Z" + "updatedAt": "2025-12-08T15:00:23.367Z", + "postProcessHash": "957da997de82403b58610f02c57b1d3b44c4a83b78a407a75f276bb0c9c9fcdf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.114Z" + "updatedAt": "2025-12-08T15:00:23.368Z", + "postProcessHash": "e31d28295f24845d2682b6445b24ba0d172d351f37a02cb0e4064b9262dce325" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.111Z" + "updatedAt": "2025-12-08T15:00:23.369Z", + "postProcessHash": "b524f78469e30973f16cf730c5c917dde78218aa6316f175ef76eed842452048" }, "es": { - "updatedAt": "2025-12-01T18:59:36.113Z" + "updatedAt": "2025-12-08T15:00:23.402Z", + "postProcessHash": "5226e965837371d69551af69753409325607fdf6f051a97d4d285773627fd9ca" } } }, "46d8b7a1984b8e73df936f022d3e71032abcff1c90a6c560b0ecc2e5249539c1": { "09ad0a9396bc1e5eda676c4bfe371d0d12aaade3c6174ad08e0a6b3b018a2b63": { "zh": { - "updatedAt": "2025-12-01T18:59:36.108Z" + "updatedAt": "2025-12-08T15:00:23.363Z", + "postProcessHash": "55b78c878e8d9b082f5585487521da1200587e9c594637fc6161501334ebef4b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.109Z" + "updatedAt": "2025-12-08T15:00:23.364Z", + "postProcessHash": "b820ce90e95b4369f7bc38e54eb8a77fd7904a62915573b0332402da6977976b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.109Z" + "updatedAt": "2025-12-08T15:00:23.365Z", + "postProcessHash": "29c321bf7410310b5f10fa1653a9b3dc7148ae96da1beb3b6a2e13d537ebcad0" }, "es": { - "updatedAt": "2025-12-01T18:59:36.111Z" + "updatedAt": "2025-12-08T15:00:23.367Z", + "postProcessHash": "3492272fd58f62b490354458bc76662f9f83d3f9dfa9d162bb3eeea67d24e250" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.112Z" + "updatedAt": "2025-12-08T15:00:23.372Z", + "postProcessHash": "c3e0fb9364fb1ebd197db0f14ddb0024a27c3e2a566f30b35d681ae7bf753ad7" } } }, "e154549c9a7ccbcacda787ef66852a1e08d6949f940bfd3434008f614c4db387": { "0a526c69f84602894e1076a14638ebad7f7c20bc346626be6ec08ffcc32e4bf4": { "zh": { - "updatedAt": "2025-12-01T18:59:36.109Z" + "updatedAt": "2025-12-08T15:00:23.364Z", + "postProcessHash": "25730f467d881a68bb12f8212efefb71d521c6e2beccd4daf6dc45fa66f878a6" }, "es": { - "updatedAt": "2025-12-01T18:59:36.110Z" + "updatedAt": "2025-12-08T15:00:23.365Z", + "postProcessHash": "6e73e62ecf9e540042c9294447457653ff90be97372149fa9f110708e649b243" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.110Z" + "updatedAt": "2025-12-08T15:00:23.366Z", + "postProcessHash": "b5851a8299c453d83091b69a1786f13d0c2014f7c2f168d62378b38da255ae3d" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.112Z" + "updatedAt": "2025-12-08T15:00:23.370Z", + "postProcessHash": "f677ca3999995dfac76d07048f764564adc2768b74bf8aba21fd89a9cf165fa7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.113Z" + "updatedAt": "2025-12-08T15:00:23.375Z", + "postProcessHash": "246babfab2aabd4bdc3104daa5d4fd0aae05245a6f101faf3fd0d8f811ca212f" } } }, "ec53c3c7bc7de4c5c7c01b34bebe129422182a822016639fddc954e05b232545": { "a9a08b0825496e5bc41c7fb37ed94bc13fd7d27c4ee252c0158175f8de707c66": { "es": { - "updatedAt": "2025-12-01T18:59:36.115Z" + "updatedAt": "2025-12-08T15:00:23.371Z", + "postProcessHash": "82cdf736fa3afec56baddb5515a34cdf050eb9884e1ecc27fde79f3bce6c2544" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.117Z" + "updatedAt": "2025-12-08T15:00:23.377Z", + "postProcessHash": "5a5cb6a01a6d2c4f6b9271ef4acc173ed494d1e4a26f93a1ee957d1921c2a357" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.117Z" + "updatedAt": "2025-12-08T15:00:23.377Z", + "postProcessHash": "59e8561beee6e0e5ac45fc600ed18975b3555de13a82101190d415878c875a8b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.122Z" + "updatedAt": "2025-12-08T15:00:23.391Z", + "postProcessHash": "050be005c8da4274240e6ada0c2480208a69b5e05beeec0a33f4b9c7d47c9128" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.133Z" + "updatedAt": "2025-12-08T15:00:23.428Z", + "postProcessHash": "5457a4f8b4b4140f579f80ffee65798efc819ff8d7d4459c182bb307bde60174" } } }, "fe53ffa3df5dacbae52f2d9c0c3788e91fc45b7ad8b19103a73a9a7a0ee6707b": { "3a50d208272e2f0650565f27ac54e341e0c9656a635b2e8433f358196e31b6a8": { "ja": { - "updatedAt": "2025-12-01T18:59:36.115Z" + "updatedAt": "2025-12-08T15:00:23.372Z", + "postProcessHash": "18cd104112905eabd8f7d78cc3c2f38432896ffaeecaf2211aba85a0d7074e54" }, "es": { - "updatedAt": "2025-12-01T18:59:36.116Z" + "updatedAt": "2025-12-08T15:00:23.373Z", + "postProcessHash": "e87b081244aa55f15a424ed40746a717f2f6a943d665feb017e49aa2a2f2c6bc" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.117Z" + "updatedAt": "2025-12-08T15:00:23.374Z", + "postProcessHash": "838b43bca8ed2a412d4eb8e5824a8cdabe4e39249fd2bb7dbf10bea298dad535" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.118Z" + "updatedAt": "2025-12-08T15:00:23.381Z", + "postProcessHash": "f81966838d563ff74c89944ffa33baabcd5f134f5f6f8a55e7c588c34c36e6aa" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.127Z" + "updatedAt": "2025-12-08T15:00:23.407Z", + "postProcessHash": "18cd104112905eabd8f7d78cc3c2f38432896ffaeecaf2211aba85a0d7074e54" } } }, "6fd7bb1b3c7874e5c871cf76b7ead7aaf38de0ee278af13bb955b99f04c17d5d": { "fc3d8bff3d5c816997d8dc354dcefeb3bf601d85570af9c1dbcbb827838425da": { "es": { - "updatedAt": "2025-12-01T18:59:36.117Z" + "updatedAt": "2025-12-08T15:00:23.379Z", + "postProcessHash": "b34339c7bd94c8fd4c5a96325e7c9e3b2f2c9382d77f8e5861ae6a9270c2b2b2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.119Z" + "updatedAt": "2025-12-08T15:00:23.382Z", + "postProcessHash": "b6e6e920b7a77e1099c690d0beb325bdc7659e1df36f61f4bb9b654aa9f488ee" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.119Z" + "updatedAt": "2025-12-08T15:00:23.382Z", + "postProcessHash": "ab29b42b384309206405b4ede34ae8b02e509e6e5a12e8916375f49f79af8595" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.120Z" + "updatedAt": "2025-12-08T15:00:23.383Z", + "postProcessHash": "ab29b42b384309206405b4ede34ae8b02e509e6e5a12e8916375f49f79af8595" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.121Z" + "updatedAt": "2025-12-08T15:00:23.387Z", + "postProcessHash": "ab29b42b384309206405b4ede34ae8b02e509e6e5a12e8916375f49f79af8595" } } }, "5459d58afa65261fea85d3ac70904ced40f9c4597e0a9e491371642cc86f35c2": { "a1b8532f5f68a979933f664c72c149eeb65c1089d03788cff2c2d732d20753f2": { "es": { - "updatedAt": "2025-12-01T18:59:36.118Z" + "updatedAt": "2025-12-08T15:00:23.381Z", + "postProcessHash": "185026327e4b2af425210b3aa929f9e48ca688105de94fd3a84b3b0f2a7a553f" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.121Z" + "updatedAt": "2025-12-08T15:00:23.384Z", + "postProcessHash": "1e34a1093dea32936dccbcbc931c82a4e3d003d0ce7229352e4e48efce7c14fe" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.121Z" + "updatedAt": "2025-12-08T15:00:23.388Z", + "postProcessHash": "35fef9b2607a173da40bf305d28ba826f28166ff583398536f516d8398b1ff0e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.122Z" + "updatedAt": "2025-12-08T15:00:23.388Z", + "postProcessHash": "fda0d8a99c518f3108656799b80b58fe9126d53e5d19cfe699d451fcd6dfe0a4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.122Z" + "updatedAt": "2025-12-08T15:00:23.391Z", + "postProcessHash": "64f10220553a1e5840947fd3f6cbe30a4e02c3e544ee547d082f69bcdde1ad30" } } }, "c303cccaa392902ca8dfb8faed259e6a6f9b328774e140597c0c9a28552fc5a7": { "99c0a79b804b0613b0d217ee21f6a3fabae12cb48e2991b6d1bc90b142b39c36": { "zh": { - "updatedAt": "2025-12-01T18:59:36.120Z" + "updatedAt": "2025-12-08T15:00:23.384Z", + "postProcessHash": "eddfd5dedbf6e3ad9978baa3f8fab9251d1eb40a7bb09ddab0e6a6d029e24533" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.121Z" + "updatedAt": "2025-12-08T15:00:23.386Z", + "postProcessHash": "b26abb135b4931575592a4440b93d503a70f5a100174e3dcfde2ca54f174752b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.123Z" + "updatedAt": "2025-12-08T15:00:23.392Z", + "postProcessHash": "648894ca89b4dc6a4d1cdb9dc19aa0bbb4114b53e0aa24db665092621bb560e6" }, "es": { - "updatedAt": "2025-12-01T18:59:36.123Z" + "updatedAt": "2025-12-08T15:00:23.393Z", + "postProcessHash": "99375f19b4ee642f3c1fad12ccd32b70268c1e3cab264bc8e17c599bdb8fc33e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.124Z" + "updatedAt": "2025-12-08T15:00:23.394Z", + "postProcessHash": "72020c922bcf9f87d4d8a6904de74d8ed8355ab0131d90cc4caf87362ea05201" } } }, "c15200a900af20d66251e0040046764f427da96a30b791e102b0e140ed8f7dba": { "c615ea4fb1b4b0ddd5a20df9c16bb676f94d7f8690b4f6855e528c9a689c8991": { "ja": { - "updatedAt": "2025-12-01T18:59:36.122Z" + "updatedAt": "2025-12-08T15:00:23.390Z", + "postProcessHash": "27a617db8f0557506d83ca136946c0ba37adcd545a848c604148eb1057c25a6d" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.122Z" + "updatedAt": "2025-12-08T15:00:23.390Z", + "postProcessHash": "09ee6a04b95a0810e7356f95ed7581de5274a0abb1c87575e0b65f3a824a83da" }, "es": { - "updatedAt": "2025-12-01T18:59:36.124Z" + "updatedAt": "2025-12-08T15:00:23.395Z", + "postProcessHash": "1b87100b4962f06fdeb5b10ec13ebc2b18f3a1a64911a06b210a0371750695bd" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.126Z" + "updatedAt": "2025-12-08T15:00:23.404Z", + "postProcessHash": "1bce26add789cd1c05e01e879b123d7938f5a8cf7abcb94c6c34ab3b675742db" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.127Z" + "updatedAt": "2025-12-08T15:00:23.408Z", + "postProcessHash": "0e96c5d0a64dd09e798dfe8ac4e76acd17635d978a698416512ad78b9f8cf8cb" } } }, "77abe816a5b6d061ee8639317c66e227afe15f2c97de8225b1440a251a9604b7": { "a7436a198764caaf69ece5d812a880c1972271fd43874d7598c9e7b8f09cc381": { "es": { - "updatedAt": "2025-12-01T18:59:36.123Z" + "updatedAt": "2025-12-08T15:00:23.393Z", + "postProcessHash": "2f4bbf6bf61278f7dbc32e52fb4907fdc11ea84934f7390104fa3f72c4bbef23" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.123Z" + "updatedAt": "2025-12-08T15:00:23.394Z", + "postProcessHash": "157e863661768f4392717946500689c03e4ab84743cacd2e6950dcc54dd4de76" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.124Z" + "updatedAt": "2025-12-08T15:00:23.396Z", + "postProcessHash": "4155618c9cb4f6a42db566457f32d50a22aea588d68a3fe4b03036463886c004" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.124Z" + "updatedAt": "2025-12-08T15:00:23.397Z", + "postProcessHash": "46b71ae7ab0069f9b4d64510602a70ba0b642cbf6d59175308c2b412b3363177" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.125Z" + "updatedAt": "2025-12-08T15:00:23.400Z", + "postProcessHash": "fb1822179d1ec57bcd893dc9fa74a97437041e3f3e4421647cd8411fab1f0843" } } }, "eee6af3c5fb25a681de891a793ed75970adbfcb403c61f86c2ec3c50ec1fa5a5": { "21a1c57f946139df5f310105240266fc1cc7bf6ab12fbba957c2c9db7b16eecf": { "es": { - "updatedAt": "2025-12-01T18:59:36.125Z" + "updatedAt": "2025-12-08T15:00:23.398Z", + "postProcessHash": "a30c0ade3b0d9839162d51d9069d8cd8e5d728bb08f30c626a04c4d5fc62a7d1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.125Z" + "updatedAt": "2025-12-08T15:00:23.401Z", + "postProcessHash": "716304749b645299229c3c772c62e0665f71f019df85d0c5324f0368e58d082f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.128Z" + "updatedAt": "2025-12-08T15:00:23.409Z", + "postProcessHash": "019f6c19d57c79fa8f8e67c86202689ed523a0090f4b8b38d1830e152d900c41" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.128Z" + "updatedAt": "2025-12-08T15:00:23.415Z", + "postProcessHash": "933f26d3683925b249b0722a649483be98c571ba52269551c671f584d19bbc97" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.130Z" + "updatedAt": "2025-12-08T15:00:23.418Z", + "postProcessHash": "73f0176dba1f3620996e0b46dc1be69846e8a5c8e03bcf8a3aa93df8cffe4452" } } }, "c823b222add9c321ee98c2e5a5810c41fea3e46f136269ccb8e1d7b62f1ef395": { "028cc179d52908cbe1cb6d8193a7c5f3091d98b861613a2ccebbd05642b124c0": { "es": { - "updatedAt": "2025-12-01T18:59:36.126Z" + "updatedAt": "2025-12-08T15:00:23.405Z", + "postProcessHash": "4dd8e36efccfcf90e4105a6536ce5465918a6ffd38eee58dd34065092e2a5ff4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.130Z" + "updatedAt": "2025-12-08T15:00:23.418Z", + "postProcessHash": "150332af690caacf58fae1e74a9b5f05b0debb813981f28c70e755e34e5d0717" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.131Z" + "updatedAt": "2025-12-08T15:00:23.423Z", + "postProcessHash": "aafa0321a26e736be71d96899f73493309e284c94c50b62605fe427a99dee698" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.131Z" + "updatedAt": "2025-12-08T15:00:23.424Z", + "postProcessHash": "9a862b662109e2c064480144c6b742b40ab069eb861f1844fdf16fbd6e208335" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.133Z" + "updatedAt": "2025-12-08T15:00:23.426Z", + "postProcessHash": "c6b468e1edbb9fa624b3ec6f069e9e56fe65de0c0b13761ee0fb67e7d63093d5" } } }, "768faa21c33f8e291b85ecfd8fc167ece5c9f09de33d9ff20bf674059d263302": { "e2f697fcfcbb6d8e0e6c480318d3407bfe41dbbc06e5b213de138ae3ceb71f7a": { "fr": { - "updatedAt": "2025-12-01T18:59:36.127Z" + "updatedAt": "2025-12-08T15:00:23.406Z", + "postProcessHash": "7ce59b40ee48ed74b75f98cdd64fd47f8317262e01b6d466867b5f5610814b51" }, "es": { - "updatedAt": "2025-12-01T18:59:36.128Z" + "updatedAt": "2025-12-08T15:00:23.410Z", + "postProcessHash": "433e9655ce4cfb01c1eb0a45c8e695d8aa3f8e8f0cb4d4ee9afaf35ed63ee439" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.128Z" + "updatedAt": "2025-12-08T15:00:23.413Z", + "postProcessHash": "ede1cb2ee9c588cac76ae84b2a6c4b7a08256e0993a484b66a979235349c8f12" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.129Z" + "updatedAt": "2025-12-08T15:00:23.417Z", + "postProcessHash": "62b9db0a952ded9df8cf2bd457507d0f357d7de31c088d41ae3ffb558f5bb168" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.132Z" + "updatedAt": "2025-12-08T15:00:23.425Z", + "postProcessHash": "b38aeca3d4262e46ed2511822e7b4b53951eebb3120010e003674b5a4a08c559" } } }, "07091bc0fd249e5f4d72489ce954037d412a52f70000d6594fe5d04cb8f33325": { "5e141dd33a31ec31f4bcb25cb3c772d9ff0c9b9d2ad321a3ce922f7d73e68708": { "zh": { - "updatedAt": "2025-12-01T18:59:36.129Z" + "updatedAt": "2025-12-08T15:00:23.416Z", + "postProcessHash": "83236c098710d50bb10cdfa9c0430f481ed2dc765b0afbd987562bfc24ff806b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.130Z" + "updatedAt": "2025-12-08T15:00:23.420Z", + "postProcessHash": "2eae857f911c8fa62c4116960cb6677299dd85944e57f608273d320e309b0d23" }, "es": { - "updatedAt": "2025-12-01T18:59:36.130Z" + "updatedAt": "2025-12-08T15:00:23.421Z", + "postProcessHash": "583a3373266d36b6a7f93bd40b40353e914aba8db902826b31ec9fb3939fd75a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.131Z" + "updatedAt": "2025-12-08T15:00:23.422Z", + "postProcessHash": "115dff12e86f9aaacf435f41c69e1174cdcb9a71cccf686a81d86d042c43d050" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.131Z" + "updatedAt": "2025-12-08T15:00:23.422Z", + "postProcessHash": "4d24e91bec20022392cf8acc7e44f8897802e2758d17d38edbf656ea436961f8" } } }, "4c3527fc80634d8a858f6c78beee5ccf3a867fb2e404456aa0fc5d7f0d8f2ef2": { "5e6b87c6672ee2f5d7d7039cc332f5fdc94b70c2c12f02c6c5d5db6ef394ba28": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.132Z" + "updatedAt": "2025-12-08T15:00:23.424Z", + "postProcessHash": "fb057087ab42877724472b39f489697cca3475e1af7f020b74bc9d2072c2b5a2" }, "es": { - "updatedAt": "2025-12-01T18:59:36.133Z" + "updatedAt": "2025-12-08T15:00:23.427Z", + "postProcessHash": "57ccc3e3fda98556e4ee4935b42d473b0941bbf40dbb4a152a68c574ae09e250" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.133Z" + "updatedAt": "2025-12-08T15:00:23.428Z", + "postProcessHash": "fb057087ab42877724472b39f489697cca3475e1af7f020b74bc9d2072c2b5a2" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.134Z" + "updatedAt": "2025-12-08T15:00:23.429Z", + "postProcessHash": "fb057087ab42877724472b39f489697cca3475e1af7f020b74bc9d2072c2b5a2" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.134Z" + "updatedAt": "2025-12-08T15:00:23.430Z", + "postProcessHash": "11a7b976d600a219b13fec5ea79c9a24ab029e44e1b214380a2da36a1a968dce" } } }, "f3aa49e3e783139324bb603cf16eefcf344709c9f4c404006e9f6cae30a91375": { "f6769d2fc5e78c0eb54b9211d6f686a94e2f7dfc243d9a58e411ad89d3d1219a": { "es": { - "updatedAt": "2025-12-01T18:59:36.132Z" + "updatedAt": "2025-12-08T15:00:23.425Z", + "postProcessHash": "c2b881a9cdd89b3e1684a495309201d4bd4db5ac6aaf99cb7af3e41d568c7513" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.135Z" + "updatedAt": "2025-12-08T15:00:23.426Z", + "postProcessHash": "6196607eba1efdd584df5840acf06633ba4ca84b20b95216b5bf95a71585e7e9" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.135Z" + "updatedAt": "2025-12-08T15:00:23.427Z", + "postProcessHash": "6eb4315edc03796ffed791b4a710b6b22fe89fb411505f7e8aac4293ed69af6c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.137Z" + "updatedAt": "2025-12-08T15:00:23.434Z", + "postProcessHash": "fddbc3cb0e567f2846d0b05828cb37c259fc4e29a5cadcc4a0fbd950531c29c9" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.134Z" + "updatedAt": "2025-12-08T15:00:23.435Z", + "postProcessHash": "d8b48a3dfeff74bef128a910120c748eeb46644f85f285ad850a70e41bd2e902" } } }, "01a21efe3d3b87ad2d2a331833396746f30f17f17797956fc6c2d3e6cb647fce": { "e08656c2f1bcb60433a1149410e61653af6f6f064c90a5a5dd6b134a76cb16c1": { "ja": { - "updatedAt": "2025-12-01T18:59:36.135Z" + "updatedAt": "2025-12-08T15:00:23.431Z", + "postProcessHash": "fe4a8e918bfbfc1a512b657f88148529695ff76ee9438e19f6431a87a53c5abb" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.135Z" + "updatedAt": "2025-12-08T15:00:23.431Z", + "postProcessHash": "57ae5f58aa839ce0dd995b0f8b01c65fb7b9222f2c00506ebe8a29a0618703f4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.136Z" + "updatedAt": "2025-12-08T15:00:23.433Z", + "postProcessHash": "12d9afc4f3e8efcf2ab495c1c3a189e2194d33a1dce58d2e77dc9ac676b1e118" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.137Z" + "updatedAt": "2025-12-08T15:00:23.433Z", + "postProcessHash": "d67b1d0e29181d9962b3ba78d0c676c9ec3b83cb691da3c2ec65fb49461a99fc" }, "es": { - "updatedAt": "2025-12-01T18:59:36.137Z" + "updatedAt": "2025-12-08T15:00:23.435Z", + "postProcessHash": "1188cf1b55d6c644bd63269ba58f077e79ca592ce20e5039fb86cfa95764c589" } } }, "b83161b633c695dae680accd5935a66c4769a51694037ae9d2869b2faf067315": { "4f5057d3de65775adb48756102237dff3ae33a727b1a173ea21ef8e1b97add0c": { "fr": { - "updatedAt": "2025-12-01T18:59:36.136Z" + "updatedAt": "2025-12-08T15:00:23.432Z", + "postProcessHash": "bc0623c823acfac511082526d587986864088eaac184796ceb420a7a160fb40f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.136Z" + "updatedAt": "2025-12-08T15:00:23.432Z", + "postProcessHash": "84271cdff4e1d442310fcaf41d94a87ce659d7934bea0edc520aaec28e304436" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.137Z" + "updatedAt": "2025-12-08T15:00:23.434Z", + "postProcessHash": "c8cb1e811ca84539f952ded78f22c036ced82f9544401cb3e676046aa2df7d8f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.138Z" + "updatedAt": "2025-12-08T15:00:23.436Z", + "postProcessHash": "5450bda0135c574723bc70f7a0b314db7c9c25cd37b1f8af3e63ba83b8361ee2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.138Z" + "updatedAt": "2025-12-08T15:00:23.438Z", + "postProcessHash": "fc252c43695a4d566a8d0e7f34e158510dc4420b78666d0ef8e6104d4812680a" } } }, "6d833358ceff509c5534f9bda09e25888b46aa56898f8edb3cad8124379c26a3": { "93aa74dc3b901b57eae3e8494aed76a3d5f40fbe6f756cb8a3b36820b8b22ef0": { "fr": { - "updatedAt": "2025-12-01T18:59:36.138Z" + "updatedAt": "2025-12-08T15:00:23.437Z", + "postProcessHash": "fb9ad4d821a0e32c58b332d0e7c36108cad9c1191d98dbd62358110c5557e0ee" }, "es": { - "updatedAt": "2025-12-01T18:59:36.138Z" + "updatedAt": "2025-12-08T15:00:23.437Z", + "postProcessHash": "d6fb5ff533bd30020fe5500856bde8ae68081f87784f2eea5aad33bbba84d3b9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.139Z" + "updatedAt": "2025-12-08T15:00:23.439Z", + "postProcessHash": "1c3c06d6e0be130ae5d7a19a1cdd78c05af1b3747dfbb84130245fd0d7c4d3fa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.139Z" + "updatedAt": "2025-12-08T15:00:23.440Z", + "postProcessHash": "d16acf498e931dccf75c6e3b8adc1c935aa86f564750fa3720c572e42a1ab5ae" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.152Z" + "updatedAt": "2025-12-08T15:00:23.463Z", + "postProcessHash": "1c3c06d6e0be130ae5d7a19a1cdd78c05af1b3747dfbb84130245fd0d7c4d3fa" } } }, "5e7894f6d6a6874bcc4d556a4fee3313ed9dbe9beb1740c6ab23385cca93b4e0": { "f02a0b573f629d21160dae557c81affe246253064dd7e84d2d5af15eab222f07": { "es": { - "updatedAt": "2025-12-01T18:59:36.139Z" + "updatedAt": "2025-12-08T15:00:23.438Z", + "postProcessHash": "e865a892d678fa2746bc35694b12c6c518f554365b45aaab2131dbeb694d1a98" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.140Z" + "updatedAt": "2025-12-08T15:00:23.441Z", + "postProcessHash": "6ccd6e0388b75a9f71b0f8f43db53c71b23d89a44d0563ba0326cd4c65ecf529" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.141Z" + "updatedAt": "2025-12-08T15:00:23.441Z", + "postProcessHash": "7b1e57b7410e5aefca069487a9e49b99a8dba53881bc6d835518a9c34df120aa" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.143Z" + "updatedAt": "2025-12-08T15:00:23.446Z", + "postProcessHash": "d43b2f891a0597c4d62bc3235467176b598c5daa2a7ec4ccafe6fba32108b39d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.152Z" + "updatedAt": "2025-12-08T15:00:23.469Z", + "postProcessHash": "b684e19c940a9af4a31f092ddf3589593d514ff24019e105b3bf5c6710c9efb6" } } }, "a03a2fa7648b84e84e9c3c7096e79b0af832d195dfe38705adec39a2e77374c6": { "9ee4a164b7477ee3d56a6bfbd59abfdd6589a412dd00c5a60be1a8e7ff4f68c5": { "ja": { - "updatedAt": "2025-12-01T18:59:36.140Z" + "updatedAt": "2025-12-08T15:00:23.440Z", + "postProcessHash": "0d5a099c60d64090e5a7b73573d627951140f4e8a54665f1e3d53cff6a1c6ee6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.141Z" + "updatedAt": "2025-12-08T15:00:23.442Z", + "postProcessHash": "d353227aae11cc26f1789025b0474b25649c25c2b8511b5d71d5a00e63bce120" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.141Z" + "updatedAt": "2025-12-08T15:00:23.443Z", + "postProcessHash": "727f6c9548f9d6e24743ec6e39d380a83bce2e7bcc98c400ec517f2317e029c1" }, "es": { - "updatedAt": "2025-12-01T18:59:36.143Z" + "updatedAt": "2025-12-08T15:00:23.446Z", + "postProcessHash": "6b0a8933817e0926ea291133bddd9a28906de17f77a6d465e5209de9317335dd" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.152Z" + "updatedAt": "2025-12-08T15:00:23.477Z", + "postProcessHash": "0e77a4b09c0e7a3f056931c9d8618c81f660ead27fd256545a78fe03cfe68c63" } } }, "016695141e8cca25588d3327882602ef2fa893b0fa0282819fe09598a7beb862": { "c578ffee94d282151be4285f79933e9cf79a28220893cd3999f9a22610986ef3": { "fr": { - "updatedAt": "2025-12-01T18:59:36.141Z" + "updatedAt": "2025-12-08T15:00:23.442Z", + "postProcessHash": "e899ae3b3e1a0d6355558c848ea5d0bf5d4021a264081f99498b5471d4a60890" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.142Z" + "updatedAt": "2025-12-08T15:00:23.445Z", + "postProcessHash": "c3b9730cce6e12b031c4668f5bfbbefda2aa788a8de759711efd9c017dfd9459" }, "es": { - "updatedAt": "2025-12-01T18:59:36.143Z" + "updatedAt": "2025-12-08T15:00:23.447Z", + "postProcessHash": "188d81f0eb22b9303114d1fdcf12769cc2d879b2a69e7d835a74dc8fe5ce5189" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.144Z" + "updatedAt": "2025-12-08T15:00:23.447Z", + "postProcessHash": "9b54ec8143ba2a612db670687eda3042fa03e6faf4fd66f98cd5f2d579400fc0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.146Z" + "updatedAt": "2025-12-08T15:00:23.451Z", + "postProcessHash": "54b6f03acdd55633e19627bfcf101e0f959eedec22a655f0faa0c02e7680da48" } } }, "5e567e2b9a457cf7e951ded2e08118eb2ee792f770b3486a111207b78ede62e8": { "1e0b8c8db7c075a9c32848436021a678fa1fe66025790c6e57a9a785d7ee909a": { "fr": { - "updatedAt": "2025-12-01T18:59:36.142Z" + "updatedAt": "2025-12-08T15:00:23.443Z", + "postProcessHash": "00f044673897489e59f02e6e39230784c1024948dba6189c9dfe1db4e1657f4c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.142Z" + "updatedAt": "2025-12-08T15:00:23.444Z", + "postProcessHash": "b418515bd26c614be7d9265bf86b1516ea83691f4fd02e08a9ca336b73af182b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.142Z" + "updatedAt": "2025-12-08T15:00:23.445Z", + "postProcessHash": "8c0911fd12f7d0294dfc0a31257b589c69806a14ed383d929a54bccdb2b91d4f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.144Z" + "updatedAt": "2025-12-08T15:00:23.449Z", + "postProcessHash": "7875224c37b0966cef1cb36a3892b12bfecd9d664bfeb7a408091ed8824c6165" }, "es": { - "updatedAt": "2025-12-01T18:59:36.153Z" + "updatedAt": "2025-12-08T15:00:23.487Z", + "postProcessHash": "b3e114d322dd9c924283cffcd8a988521a7cfec360797372c82c367dd74b6552" } } }, "75850eda5da33d17998d4248d7aacdc279ddcfca237b496331f84018c5689edc": { "d73d48b642d7a57e2881d1ba11cdfaf5f6e10430b14e0be60d868e6f0b80a36c": { "es": { - "updatedAt": "2025-12-01T18:59:36.144Z" + "updatedAt": "2025-12-08T15:00:23.448Z", + "postProcessHash": "003b3bdcae073b762575110f672b46e5437256a0c25f32044e1fbc587fe32372" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.145Z" + "updatedAt": "2025-12-08T15:00:23.450Z", + "postProcessHash": "d73d48b642d7a57e2881d1ba11cdfaf5f6e10430b14e0be60d868e6f0b80a36c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.147Z" + "updatedAt": "2025-12-08T15:00:23.454Z", + "postProcessHash": "d73d48b642d7a57e2881d1ba11cdfaf5f6e10430b14e0be60d868e6f0b80a36c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.149Z" + "updatedAt": "2025-12-08T15:00:23.457Z", + "postProcessHash": "d73d48b642d7a57e2881d1ba11cdfaf5f6e10430b14e0be60d868e6f0b80a36c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.153Z" + "updatedAt": "2025-12-08T15:00:23.486Z", + "postProcessHash": "d73d48b642d7a57e2881d1ba11cdfaf5f6e10430b14e0be60d868e6f0b80a36c" } } }, "4ed9f8811e4f68971ff4616e8b5242cd7748725675e6fb59b58602e13eb8d79f": { "4eb0be647d15caecbb566a878ee4c3ad53afc7ba3b1afc217cb5f020edab9f9c": { "zh": { - "updatedAt": "2025-12-01T18:59:36.145Z" + "updatedAt": "2025-12-08T15:00:23.449Z", + "postProcessHash": "b4408250fe2f8819532198fdeec1534a76e1baa4b06a30715486521aec6e1d14" }, "es": { - "updatedAt": "2025-12-01T18:59:36.145Z" + "updatedAt": "2025-12-08T15:00:23.450Z", + "postProcessHash": "8d384be8368515fbedd7d7e5ac896bef47453580ec9b96d9dab030a671e2125f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.146Z" + "updatedAt": "2025-12-08T15:00:23.452Z", + "postProcessHash": "784539d21b3592dedce54e252534046afa46378f8c0384f2cc084f8ad9fa7d88" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.150Z" + "updatedAt": "2025-12-08T15:00:23.458Z", + "postProcessHash": "77c715a7deffdf8cd6d37d91106ba4103d0764b4ac5be59f43c74d5712d27366" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.153Z" + "updatedAt": "2025-12-08T15:00:23.489Z", + "postProcessHash": "5e6b31b009a55d98aad744b5eb9a384ce664d2cb54433f3bb61210509e345619" } } }, "be510364066b3f532c0b0ad66e3fb467ca3a4a185f3f58e77bfabc3c0f5ca97c": { "2ad08bcc22f5545bdfc54b72df92187a8dfa5b1975d6682c3bb8777921179f15": { "ja": { - "updatedAt": "2025-12-01T18:59:36.146Z" + "updatedAt": "2025-12-08T15:00:23.452Z", + "postProcessHash": "2d6c421d5f6b99e2f247edeb72fe4010e522df0b376c26bd4961468f8b92d906" }, "es": { - "updatedAt": "2025-12-01T18:59:36.147Z" + "updatedAt": "2025-12-08T15:00:23.453Z", + "postProcessHash": "87d7dc15963c482ba82398fab8472c31c1e9375d01e09d032020d591f44a0025" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.149Z" + "updatedAt": "2025-12-08T15:00:23.457Z", + "postProcessHash": "ae318740ced26cf1cf37f0b0acb51dc9174d229f7cfd131902453d1526ccc171" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.149Z" + "updatedAt": "2025-12-08T15:00:23.458Z", + "postProcessHash": "69dc9c6323dbb32b9bd2842c218a4664e2db4053bc7dd408252ba6ba0c3d67bd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.151Z" + "updatedAt": "2025-12-08T15:00:23.461Z", + "postProcessHash": "6c1e40feb3e5772ec60762c553720ed1469b5836d80761fc17b076417de93e16" } } }, "5fadeeef739a3434f75433c4e29c2cd20e4592e72d297ba163cf9240ffbb9184": { "5de143aa78b46b2e873356db1890f0d2e4a2bf888fbf9ac4bed0d1579f87688b": { "es": { - "updatedAt": "2025-12-01T18:59:36.147Z" + "updatedAt": "2025-12-08T15:00:23.454Z", + "postProcessHash": "eddc2084bcbab537a1cadda3dd43b963f09f927702b3fec280fda39538fcb50a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.148Z" + "updatedAt": "2025-12-08T15:00:23.455Z", + "postProcessHash": "91b7b49acc476099740de77f35f475ae9fb23c0ad646c72ee64deb87fbd09773" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.148Z" + "updatedAt": "2025-12-08T15:00:23.456Z", + "postProcessHash": "857395e40cca1f0de3be309688bcdbb1e94c145f721b4a38787ce50aaa7174de" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.149Z" + "updatedAt": "2025-12-08T15:00:23.456Z", + "postProcessHash": "9e3302425d01276a29a2a031fcebd6b1813ea3477c9b8bcfcb8069affa41c6ea" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.153Z" + "updatedAt": "2025-12-08T15:00:23.496Z", + "postProcessHash": "d0617c9819fd72b909744539d72801a7e7511913dd949d0f52ef2a4571d9f661" } } }, "6014c68c3e40c0b6f751330ebbe83576a8053acbfbb252539eb451d989e9664e": { "0c925ebc32e69575d36ab730a6172a8f71cc44f8101a37b1768a211bf02955c7": { "es": { - "updatedAt": "2025-12-01T18:59:36.150Z" + "updatedAt": "2025-12-08T15:00:23.459Z", + "postProcessHash": "eff67d1196544cc5900d9f0fafab73b37abcfbcf1434e20618525c9088d127c5" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.150Z" + "updatedAt": "2025-12-08T15:00:23.459Z", + "postProcessHash": "0b7fee693afe38ad6d27878cc1c01fadcb01a469235566400ba72d81bb49a8f9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.151Z" + "updatedAt": "2025-12-08T15:00:23.460Z", + "postProcessHash": "dd836bb6f33d4e8f45ff164f85257dbab1597055899b6108ff8bb8b9ecf9faf1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.151Z" + "updatedAt": "2025-12-08T15:00:23.461Z", + "postProcessHash": "ffbaf0685bfdec18687b68e4a8dd79264bb183815096ab7717b269baf553f90c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.152Z" + "updatedAt": "2025-12-08T15:00:23.462Z", + "postProcessHash": "397ff470b4fd9b7f5d843f55d92d02042a7d0540927357848891bbdcfba9566e" } } }, "be419082f3c9eabbcda79f218f2880430d7f03de0984116b69ebc2db3bf23e52": { "72965df604cf972bd1e7f38f3ad987c397b507d349d1679df910f68647f4833c": { "es": { - "updatedAt": "2025-12-01T18:59:36.151Z" + "updatedAt": "2025-12-08T15:00:23.462Z", + "postProcessHash": "55041cc6841870ccf0966d19b3c8ef14d86745df3ee6374fb8237a3455dbd759" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.154Z" + "updatedAt": "2025-12-08T15:00:23.464Z", + "postProcessHash": "c5f92f28d5ce0abca394b2b480956830f1ae9f6128ddcb2036ce43340b7fc449" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.156Z" + "updatedAt": "2025-12-08T15:00:23.468Z", + "postProcessHash": "ebaeae6885c203972af50c468335c5950fa2799ceb9814b67717868a6c71735c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.156Z" + "updatedAt": "2025-12-08T15:00:23.469Z", + "postProcessHash": "3ba48c524c2195f9b14286645c1a955475845b4e71f85eb1964e983efe4f0af3" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.171Z" + "updatedAt": "2025-12-08T15:00:23.499Z", + "postProcessHash": "af4c4c118f5c5ad4bf7aa060c74e038ddd68362cbfa3b49ffd5c091eef664bdb" } } }, "0472459cc123fdbeded0455a6f0b217d3d8df5b529cc6bf5451ff3a579f76d40": { "41ed70b8ded3ab2f750328c03ca37f7793f28e0e8b2085c44b8f0872b8c84d25": { "fr": { - "updatedAt": "2025-12-01T18:59:36.154Z" + "updatedAt": "2025-12-08T15:00:23.464Z", + "postProcessHash": "2477b38c76fefb65c94a8984e942682f3cddcfcbbe4fd7d1caf29e035f45eef6" }, "es": { - "updatedAt": "2025-12-01T18:59:36.155Z" + "updatedAt": "2025-12-08T15:00:23.466Z", + "postProcessHash": "e5c7aba6d421ca95e7d7c71dcf42f2cd1f5f79b35d27923d1ee11d1ff1546dec" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.156Z" + "updatedAt": "2025-12-08T15:00:23.467Z", + "postProcessHash": "31aacaabb28a5b7d263caf87ea210881c4618716febaa9533bdd018dbd20c548" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.157Z" + "updatedAt": "2025-12-08T15:00:23.470Z", + "postProcessHash": "7dee91825f519d9fd0a1c6b400a987d8bf979d869410d0835e8bfd915df0e793" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.170Z" + "updatedAt": "2025-12-08T15:00:23.498Z", + "postProcessHash": "d766b3013ed135882879e19737b10ae94659153e0b04001cbd07e611fab453e3" } } }, "a283bb00088f2aa88f9fc5c868c5678f4a544481c8f2d9389b95fe90c1e8720f": { "4067c5534f20d0bc099e3994e0fc9710c9aa80dc5669eaad31343c1efb5db024": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.154Z" + "updatedAt": "2025-12-08T15:00:23.465Z", + "postProcessHash": "8f92996b8276e1d920c9c3f4ac077a949c02a2da7d348dc3373a0049199423df" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.155Z" + "updatedAt": "2025-12-08T15:00:23.466Z", + "postProcessHash": "bcb2ea3da31c27b7ee17a31005f7096b5381ee042972262e62fcfabf4fee184f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.156Z" + "updatedAt": "2025-12-08T15:00:23.468Z", + "postProcessHash": "66ca2494fbad8901ddf4f48f64b64aaa547e2a64cd9e8e8b6c0a0ca3b77ab4ba" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.157Z" + "updatedAt": "2025-12-08T15:00:23.470Z", + "postProcessHash": "bcb2ea3da31c27b7ee17a31005f7096b5381ee042972262e62fcfabf4fee184f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.167Z" + "updatedAt": "2025-12-08T15:00:23.490Z", + "postProcessHash": "bcb2ea3da31c27b7ee17a31005f7096b5381ee042972262e62fcfabf4fee184f" } } }, "3d1dfadf07f1a0795e6786aafb830e673b9bedcdefef73b538476ecb44b8667e": { "0a0abb2a753c679deb3815b1299961620cae832ca1e644119d5fe0eb6af1441f": { "es": { - "updatedAt": "2025-12-01T18:59:36.157Z" + "updatedAt": "2025-12-08T15:00:23.471Z", + "postProcessHash": "ff43afe874981f06f623ebbb56e6fce230ff62ea1cc73e6657da1c2e31ef39b6" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.158Z" + "updatedAt": "2025-12-08T15:00:23.472Z", + "postProcessHash": "5fc9e21a63a9a4695d5f2a5ddd91d1ee2605ea7c6776f02adc77f12f44baa0ce" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.158Z" + "updatedAt": "2025-12-08T15:00:23.472Z", + "postProcessHash": "60da40d41fed0a8baaf7c73ec27ac0b536e221d0312c5763febfcccd15304184" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.160Z" + "updatedAt": "2025-12-08T15:00:23.475Z", + "postProcessHash": "55b03059064afc391c4da48de8e5bf71c6d6efc327ec61d701d8540cc332aa9e" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.163Z" + "updatedAt": "2025-12-08T15:00:23.481Z", + "postProcessHash": "aede110b6ced84b18a318ba6ae04005df3afb22a0354e9c5e60eff9eaf4ebae3" } } }, "d49d742f065749db5876433cfc830e5b16a7b6e7973e4876ae0faaca4520749b": { "61c89b1241d23569ab80d2a3fb9ae23f4ebba0063f9640eda6396467e28b5f9e": { "zh": { - "updatedAt": "2025-12-01T18:59:36.158Z" + "updatedAt": "2025-12-08T15:00:23.471Z", + "postProcessHash": "0a3082f15748052028f111a2512193dda520da39882814a8055cca3656ccdc0b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.158Z" + "updatedAt": "2025-12-08T15:00:23.473Z", + "postProcessHash": "b0113b076c590cff67e893beea6b5ce59661f8c2b9927b0c63b603af9ccb461a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.159Z" + "updatedAt": "2025-12-08T15:00:23.474Z", + "postProcessHash": "0a3082f15748052028f111a2512193dda520da39882814a8055cca3656ccdc0b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.159Z" + "updatedAt": "2025-12-08T15:00:23.474Z", + "postProcessHash": "0a3082f15748052028f111a2512193dda520da39882814a8055cca3656ccdc0b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.174Z" + "updatedAt": "2025-12-08T15:00:23.509Z", + "postProcessHash": "7b3a3957cee817b9f4cbb7c6090df578777cbe1cb987faac44d3057d611011e9" } } }, "0b0d729c4e917c4477f37d317801ab4570f314dfca74085b9c4fbf2b931a127e": { "c687cf5b3045601c9f326c02b0eab1e5c6448f545f2f5c8f0e46b3ba32cc23dc": { "fr": { - "updatedAt": "2025-12-01T18:59:36.160Z" + "updatedAt": "2025-12-08T15:00:23.475Z", + "postProcessHash": "288f8e080adc5c2467400858708bb6bbe965865f9f855279d426878edaebdf3c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.160Z" + "updatedAt": "2025-12-08T15:00:23.476Z", + "postProcessHash": "b737f5bbbec657d29b138bcf321b0700462d1a78be21a291142dd1c993ccd84b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.161Z" + "updatedAt": "2025-12-08T15:00:23.477Z", + "postProcessHash": "577a7933c433b1fcd9eee0c6d40bd7c952822b7bb4e96fdf99becd142b5432df" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.161Z" + "updatedAt": "2025-12-08T15:00:23.478Z", + "postProcessHash": "ed35c5e1fdd65794935f7591580ec252abb4e3e13754e6a9eb105849f3407f9e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.162Z" + "updatedAt": "2025-12-08T15:00:23.479Z", + "postProcessHash": "594589fa4dc1e7e25e90a6c53ffd1dcbf8caa94edee5152654f8c60760bc6ac6" } } }, "5fffbe6483fd3639c2a7ba9ea379514a7f3c5fa3c6f10906edb3a022803c09c9": { "235dca1485b57eacf76acbdc62c2b8a1a33ecbd54f7d8bee4f34fbea00788cdb": { "zh": { - "updatedAt": "2025-12-01T18:59:36.161Z" + "updatedAt": "2025-12-08T15:00:23.479Z", + "postProcessHash": "4729a8eeac7ad5e4183c9614c63564085ab15707b4ee261ccf5627af8d32aafc" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.162Z" + "updatedAt": "2025-12-08T15:00:23.480Z", + "postProcessHash": "67888e25cf820f7e4433b3bc964515b12d7119ab5c8668772dc2fbe12830fa4d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.162Z" + "updatedAt": "2025-12-08T15:00:23.480Z", + "postProcessHash": "a955310c7cb005d38d18bb07d792144827f260848be2373df8cea27b988728ca" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.164Z" + "updatedAt": "2025-12-08T15:00:23.483Z", + "postProcessHash": "48a92eca56e44672f4d14a522afc955b26cec8dc1a3ee247a9cc98991ba41d21" }, "es": { - "updatedAt": "2025-12-01T18:59:36.171Z" + "updatedAt": "2025-12-08T15:00:23.499Z", + "postProcessHash": "397c790f8e5932a2e131370a9810fb28dc23026221a210c16ebd888138de73c7" } } }, "31baea03080d96973ebb17b555c220344bc015444dde536431784b4bccfcdf27": { "72e5d5016c93e7cfdbaf60756753d4ea53b97d17d953c75b681312d4bbc98fed": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.163Z" + "updatedAt": "2025-12-08T15:00:23.482Z", + "postProcessHash": "6e30b036cf694fba953be5395bbd63efe3ebe17e8905a67df2ad2da683503ab9" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.164Z" + "updatedAt": "2025-12-08T15:00:23.482Z", + "postProcessHash": "72e5d5016c93e7cfdbaf60756753d4ea53b97d17d953c75b681312d4bbc98fed" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.165Z" + "updatedAt": "2025-12-08T15:00:23.484Z", + "postProcessHash": "72e5d5016c93e7cfdbaf60756753d4ea53b97d17d953c75b681312d4bbc98fed" }, "es": { - "updatedAt": "2025-12-01T18:59:36.165Z" + "updatedAt": "2025-12-08T15:00:23.485Z", + "postProcessHash": "72e5d5016c93e7cfdbaf60756753d4ea53b97d17d953c75b681312d4bbc98fed" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.173Z" + "updatedAt": "2025-12-08T15:00:23.505Z", + "postProcessHash": "72e5d5016c93e7cfdbaf60756753d4ea53b97d17d953c75b681312d4bbc98fed" } } }, "cfe261c79a0ba403dcfa21a13913788a7ceb91ce6c24b7500eae8bf901e9895c": { "ddca93f175b943a3c07e8784f3b7ca4775144b64ca12345c65c4a3392c2d434f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.164Z" + "updatedAt": "2025-12-08T15:00:23.483Z", + "postProcessHash": "93860a2a4fd618f2d0245c3a3829116bcbae08c9f488e180abe884c6ac969c76" }, "es": { - "updatedAt": "2025-12-01T18:59:36.165Z" + "updatedAt": "2025-12-08T15:00:23.485Z", + "postProcessHash": "5ba9e8aca7dc9ec6a74cdc09877cfac5284ce22ca62cc7208bf49ddbfa9611b8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.165Z" + "updatedAt": "2025-12-08T15:00:23.486Z", + "postProcessHash": "4aeabfdb02099d3fb6e0f8e4d9b7cec97b715a6643cedd94293aad5c38fc0e56" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.169Z" + "updatedAt": "2025-12-08T15:00:23.497Z", + "postProcessHash": "61644abb5bc15cdef32484a0f664a0d4710ecbfed0b924bcb114e67606c57a35" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.174Z" + "updatedAt": "2025-12-08T15:00:23.536Z", + "postProcessHash": "237e25339c8e36ef14a5d3d4da2bdc9789aeef2a77e644c3bff2e790dd3535d9" } } }, "2425f79d248356b5046f9990196658442876c16097e6d4ab48afa233b6c0e102": { "e0d238a4e37d8a1add4f78b9e02c405a73f4cf3fb065c4c054c6ab165bffd2ad": { "es": { - "updatedAt": "2025-12-01T18:59:36.166Z" + "updatedAt": "2025-12-08T15:00:23.488Z", + "postProcessHash": "b9b63d4d80c338e8751504d037338683f4ddc65c8478bc9c982af00295685b12" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.166Z" + "updatedAt": "2025-12-08T15:00:23.488Z", + "postProcessHash": "bd10ac7e57baaedce4993f8cfb9ce3eda4632742baebbab0d1085018fc77abed" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.167Z" + "updatedAt": "2025-12-08T15:00:23.489Z", + "postProcessHash": "37500abc615636abf1591839e383b4f23cf1c3d5a7f2026ba18333cd286afbfa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.169Z" + "updatedAt": "2025-12-08T15:00:23.495Z", + "postProcessHash": "109365e7edc2c1dee766a98b8f68c3fcfd6a599154e0b6fc77c98f786d290995" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.173Z" + "updatedAt": "2025-12-08T15:00:23.508Z", + "postProcessHash": "ec8017daea9c1c41491107a9224a21e39b9808c84964eede96745696840527e6" } } }, "73a78cd3badc156d9896902982f7de914ac9cb613032ed423d08ec6c01a149b0": { "e66a6d1137abc022395b2c7d191e7a35f2fc60d85809556976a63d383147759f": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.167Z" + "updatedAt": "2025-12-08T15:00:23.490Z", + "postProcessHash": "bb333d3e3f8b936bfa68122fe09ef599a65cfb2d7a4bcc2fecdeb5176239984b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.168Z" + "updatedAt": "2025-12-08T15:00:23.493Z", + "postProcessHash": "56c05e6e1841936ee9f6d72592b9975da80016252b019b39abacca532ac0a160" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.172Z" + "updatedAt": "2025-12-08T15:00:23.501Z", + "postProcessHash": "ffd4e8b9dc8a653fc80b6ddf0e297492415526caa99c2528459093f2fb080e7c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.172Z" + "updatedAt": "2025-12-08T15:00:23.502Z", + "postProcessHash": "c3f8b16c7532e882371c73a8863095c71d1957f0bc276e88f4915e6f25d870ae" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.174Z" + "updatedAt": "2025-12-08T15:00:23.549Z", + "postProcessHash": "e2916b09ad12e06871241985ef26469a935350ee77fb8e33d50ccf7ee149a3ae" } } }, "c401b08c354c4052e915a1ade7ffcacdce0ba29fd1123ef7105db8035c743fa9": { "0009d9d8c1b90fc1bb636fac42b56129f0f735551466bac49ae645c0778bb587": { "ja": { - "updatedAt": "2025-12-01T18:59:36.175Z" + "updatedAt": "2025-12-08T15:00:23.491Z", + "postProcessHash": "4595cc5b1f8956918f68bfe732d7b000baf7415ab7e2f7758fe8eef667e94875" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.175Z" + "updatedAt": "2025-12-08T15:00:23.492Z", + "postProcessHash": "1e58afda91c1ee4be4921b014621e474138f4b2f4f4d11f232fbd05b70390f78" }, "es": { - "updatedAt": "2025-12-01T18:59:36.176Z" + "updatedAt": "2025-12-08T15:00:23.500Z", + "postProcessHash": "a4fbee567d9a60bf81d3047cd5dc8775c4ba8e733aa0a4043790d211d0eeb81e" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.176Z" + "updatedAt": "2025-12-08T15:00:23.502Z", + "postProcessHash": "262c367273d16953f83fd56615e1fcfe3780fc8d74483eb093bbcacf25fa6453" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.179Z" + "updatedAt": "2025-12-08T15:00:23.513Z", + "postProcessHash": "aa45b26103a2913954e25319fc5a78975fe305c1921a8185b048dfca2095aabe" } } }, "e5eb5428a8808be4f09931ebd983e0f2797bad6e541c31a3c18905a1dfea17be": { "d64984710fe767247ee561c011b4af0dba874a87e0de7c7682c3e102fa7fb431": { "zh": { - "updatedAt": "2025-12-01T18:59:36.167Z" + "updatedAt": "2025-12-08T15:00:23.492Z", + "postProcessHash": "358a32f26adaac600ff8c63fe2fcefc4ce7859102f5db6e61bddf7929360065a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.168Z" + "updatedAt": "2025-12-08T15:00:23.493Z", + "postProcessHash": "48ba1c6c15c496256cf5d1bf53b5334bb7c8f5b709d5b48ffa38f698ac6570c2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.173Z" + "updatedAt": "2025-12-08T15:00:23.503Z", + "postProcessHash": "6069e2f56033375815c4e65242f7b6b7449b4ea4526a2c42175b9b4ec4af252c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.173Z" + "updatedAt": "2025-12-08T15:00:23.504Z", + "postProcessHash": "4e7a5d40657bf1a280b531f1300049231ba49e5cf6e063fd5a5999698ea5f32c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.174Z" + "updatedAt": "2025-12-08T15:00:23.513Z", + "postProcessHash": "5c3d3f2f8d90f162b446aec4437176a2198d2eb59aa65bee39ce91c714b14300" } } }, "107b93d198d394795092c27db2878ace97d608e0d117604275e56fc2e8eb0a80": { "6dba7cd7deb0abf6c4e67f9e554cf654c52afe2139ac021e02ae5a6bbef4bbcc": { "fr": { - "updatedAt": "2025-12-01T18:59:36.175Z" + "updatedAt": "2025-12-08T15:00:23.494Z", + "postProcessHash": "099c4c29e5e5a0457701982ff6a4b2a99afde196879116f432c6eb32e846ec0b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.178Z" + "updatedAt": "2025-12-08T15:00:23.510Z", + "postProcessHash": "074fc11131c5d9f24dc45995a39edd468e9457aaf6c4a86be03e9e1ee1d61950" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.178Z" + "updatedAt": "2025-12-08T15:00:23.511Z", + "postProcessHash": "82c6cac7fceeccbe154441c2fd559721ac812d071bb20550a46b7e045f804226" }, "es": { - "updatedAt": "2025-12-01T18:59:36.179Z" + "updatedAt": "2025-12-08T15:00:23.512Z", + "postProcessHash": "56fc9a2bc8bd73015652c9b0af332acec2e16f60eccaf8d8c1ec887f2590d014" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.184Z" + "updatedAt": "2025-12-08T15:00:23.536Z", + "postProcessHash": "295e5b9bffe1846eab2562d30c1e3703e8045ce42f92d1f831d41eaa9638aac3" } } }, "8edae4184d5408ddd26fb1ac7b79bae8cd26613c40f0d2d2ea45ffde94c86e78": { "5d356c00b76a98c3a4d4877c82a78244a3c01b4ae92cbfe3cbafcfc8287db207": { "es": { - "updatedAt": "2025-12-01T18:59:36.168Z" + "updatedAt": "2025-12-08T15:00:23.495Z", + "postProcessHash": "fb883591ea26e9109dc36752cda7b8284ab2c0eb79ef56aafe5ae2ce24b073eb" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.169Z" + "updatedAt": "2025-12-08T15:00:23.497Z", + "postProcessHash": "934cce7442e3d76247e4defafa3cd3639894646ae85fd931d7e5bab911dc91d8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.170Z" + "updatedAt": "2025-12-08T15:00:23.498Z", + "postProcessHash": "381f34cb75b36e8fc046e28ec9ddb4d49203265410799c9cc4b5d193bc07e17c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.171Z" + "updatedAt": "2025-12-08T15:00:23.500Z", + "postProcessHash": "7e6989ba96196427443a23ea9431fb9817e787955ed4575a53bfa599c82ee1de" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.172Z" + "updatedAt": "2025-12-08T15:00:23.501Z", + "postProcessHash": "bb67941fc5054f1ecc7ffcc54e47ec77d6f7d505c0e5b0479bcc2de094e62572" } } }, "68c380c561c551eb530464493d567d7c4b49bea503b06c69bb6f2c7ee73ccea0": { "f4069565a6569d650b7b2e3f86b8815673d37a492a403abc1980ca050db50c80": { "fr": { - "updatedAt": "2025-12-01T18:59:36.176Z" + "updatedAt": "2025-12-08T15:00:23.504Z", + "postProcessHash": "d1fd245253d534283c12924e05b461b87c77a71a545e327566acd815f33d26de" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.176Z" + "updatedAt": "2025-12-08T15:00:23.506Z", + "postProcessHash": "ca4bd63e7b282afc016a8ea419aec5bc82d5290c56f523f948989cc98ca9853d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.177Z" + "updatedAt": "2025-12-08T15:00:23.507Z", + "postProcessHash": "d2a043744f1d0300bf0ab6c100915e00ffb43d4ba743d36967b82858c8dbc5fc" }, "es": { - "updatedAt": "2025-12-01T18:59:36.177Z" + "updatedAt": "2025-12-08T15:00:23.508Z", + "postProcessHash": "f5dbbff5cb784841cf78d75870ce0cc4e65e392cc1f9800c147644fb06af6e62" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.184Z" + "updatedAt": "2025-12-08T15:00:23.524Z", + "postProcessHash": "86c5dd0676e95418f46e8f6d1c9f3f27f81fd8a78b4209bf1f7d74a99596fe65" } } }, "cf173be1b786da5ef76c53fdf9b3b4a4711312c51949488a226616ce4ad3ff9e": { "285fce15a5f1267c55c098b129ab5e9ada70b9e9edc6b610bda8f54204abbff2": { "fr": { - "updatedAt": "2025-12-01T18:59:36.177Z" + "updatedAt": "2025-12-08T15:00:23.507Z", + "postProcessHash": "4b7ab0875414eaf792f6fff00f8cc4cf4be310e8bdca1b3f96534dfa9b6832bf" }, "es": { - "updatedAt": "2025-12-01T18:59:36.177Z" + "updatedAt": "2025-12-08T15:00:23.509Z", + "postProcessHash": "2dd743f2f5a59ba897524cfa5817bafcc99cb8629f9d778683c07a888e9b62e1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.178Z" + "updatedAt": "2025-12-08T15:00:23.510Z", + "postProcessHash": "dae97ce42fac88fd82a9d130e16b67157fe52674547aeb95f6b04f170b02ce4b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.178Z" + "updatedAt": "2025-12-08T15:00:23.511Z", + "postProcessHash": "3b3c4010235aa5c84282112dae358621e14d8fce75be4e07ac67bd07589a40c9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.179Z" + "updatedAt": "2025-12-08T15:00:23.512Z", + "postProcessHash": "6711942ade9b8d18b1f1e2c05ec0d8f563509a14367e732ff01c2d9addca5ef2" } } }, "bd506b0b83e7dbdb9dabe5006d3cf2f86adc07b53a6b54c1860c72a659d0984d": { "955f0123ebe0ee8aaeee367ad7ad2e468147d1ae12081905f41381e002a67713": { "zh": { - "updatedAt": "2025-12-01T18:59:36.179Z" + "updatedAt": "2025-12-08T15:00:23.514Z", + "postProcessHash": "992cde0cc32dbba3285afe83236f7c566f0a48ca0d7d34fdfd2c4301ed76f15a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.181Z" + "updatedAt": "2025-12-08T15:00:23.517Z", + "postProcessHash": "a694a10dea270b19e754fa51ad24f0e2050364fa7df763a6f7fab1e08f5e2733" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.185Z" + "updatedAt": "2025-12-08T15:00:23.538Z", + "postProcessHash": "ec88edc8f2eb562bb2719c706b59a133c808fc0d94bdc8124ae53d9454cb6f42" }, "es": { - "updatedAt": "2025-12-01T18:59:36.188Z" + "updatedAt": "2025-12-08T15:00:23.544Z", + "postProcessHash": "8691825985f03311612fe1c7ab11c1a33527cd4aff3ed2fdbb25c927ccc5b046" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.192Z" + "updatedAt": "2025-12-08T15:00:23.552Z", + "postProcessHash": "8d314aa9a574fb952f6d6e1da162ea7ee43313d0ebf5404caaf26df94e348be1" } } }, "367e73714182c233fecd0cf54dc97dacd64ec72b197fcca7ad51453ace5b55b7": { "05242344dd1df2f485e85371be51d2c0e36857379dc15e352009436f38c22a9c": { "ja": { - "updatedAt": "2025-12-01T18:59:36.180Z" + "updatedAt": "2025-12-08T15:00:23.515Z", + "postProcessHash": "6f4149142f8055b6e18f06427b5b3147d263582f7624aea0c12e25a8797206f8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.180Z" + "updatedAt": "2025-12-08T15:00:23.516Z", + "postProcessHash": "5d5d657f115a2851a0a91cd26cb8f5437cb1139ed008199a8620fcb2e95b57e9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.181Z" + "updatedAt": "2025-12-08T15:00:23.516Z", + "postProcessHash": "2d6742f5ac2b528e9418853c58e7b5eb6f7763d5acad7360387bad5a7b47c6e4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.184Z" + "updatedAt": "2025-12-08T15:00:23.523Z", + "postProcessHash": "278e6e5b73fa1effa6303041ce7226f2a01c7bb4fe3f14cdf7fab09f7f77c2f4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.185Z" + "updatedAt": "2025-12-08T15:00:23.537Z", + "postProcessHash": "278e6e5b73fa1effa6303041ce7226f2a01c7bb4fe3f14cdf7fab09f7f77c2f4" } } }, "aaf985c627b7f325cba42a6e9ec32e0d3689c2dd6c10161f98b6e287346f8c15": { "45ed81ed94736a3786187012886ca1b36aa4797fbdb41b3b7499aad780bde868": { "ja": { - "updatedAt": "2025-12-01T18:59:36.181Z" + "updatedAt": "2025-12-08T15:00:23.517Z", + "postProcessHash": "28c1d7e26d25ee1b8cccec7ec8d00dc73b759883e275da11602f01c76869a503" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.181Z" + "updatedAt": "2025-12-08T15:00:23.518Z", + "postProcessHash": "99e66f2d25fa80e6456fd8a394da58c4b1abcd0d776509cc91b465a8ef7a0a06" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.182Z" + "updatedAt": "2025-12-08T15:00:23.519Z", + "postProcessHash": "4ac196996ff3e073ae492e309223e9e9038504e8e23a61236dc9de7e785e8a99" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.182Z" + "updatedAt": "2025-12-08T15:00:23.520Z", + "postProcessHash": "f72e7e563d45cb7a541c521f8562beaaa3f70edf411ad379754b1dec60c80049" }, "es": { - "updatedAt": "2025-12-01T18:59:36.185Z" + "updatedAt": "2025-12-08T15:00:23.538Z", + "postProcessHash": "8d9031d695c154d1862a9ac1c8f160b76165e7cf70bd0002c37f096ef51603dd" } } }, "d52a9c920d116d2dbf164f932179506b153a8b5f768751c0ab3281e2991b4b26": { "4e0a15d9fcb17672aa6ec040337608d994f2c2e385c481ae6bd97a531e0ab35a": { "ja": { - "updatedAt": "2025-12-01T18:59:36.182Z" + "updatedAt": "2025-12-08T15:00:23.519Z", + "postProcessHash": "3e84ebfdf062f3de0f6339feee5671d1565056e4af1cb3881d83a518e2cd54e1" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.182Z" + "updatedAt": "2025-12-08T15:00:23.520Z", + "postProcessHash": "7ea591f3562c389f3bf42ec35e14b2aaf84723145bd978f8234bd3c403d64099" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.186Z" + "updatedAt": "2025-12-08T15:00:23.540Z", + "postProcessHash": "9b757ba2aec63cdb8b016c52c13988cb2c08f2f6f2c5a64d488a98dfb172253a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.187Z" + "updatedAt": "2025-12-08T15:00:23.541Z", + "postProcessHash": "7ea591f3562c389f3bf42ec35e14b2aaf84723145bd978f8234bd3c403d64099" }, "es": { - "updatedAt": "2025-12-01T18:59:36.188Z" + "updatedAt": "2025-12-08T15:00:23.543Z", + "postProcessHash": "7ea591f3562c389f3bf42ec35e14b2aaf84723145bd978f8234bd3c403d64099" } } }, "2acc99943c0db7c0fc6a968e6528a77b6f7601430edf78cb52aa49422180b0e4": { "a0c7fd60c06cd876de16e049ef2c913bb80d7a0d7205267bffcd552064941f36": { "fr": { - "updatedAt": "2025-12-01T18:59:36.183Z" + "updatedAt": "2025-12-08T15:00:23.521Z", + "postProcessHash": "e14e2bbc57f78f87be1b923bbbe1c08c1d532944a1ca85fb5cc0c0daafbbca11" }, "es": { - "updatedAt": "2025-12-01T18:59:36.187Z" + "updatedAt": "2025-12-08T15:00:23.542Z", + "postProcessHash": "a6bff62aab794bc4925a811b5afba78a348323572c9772c61c8960be04d08934" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.188Z" + "updatedAt": "2025-12-08T15:00:23.543Z", + "postProcessHash": "79d2c9b0e57abd0dc050692c2cb7387e7dee9b6831d0477550278480c60b381f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.190Z" + "updatedAt": "2025-12-08T15:00:23.548Z", + "postProcessHash": "ab772e92ccf19af1397fa729aaa9298c37bc1de17b41bb6e55472da28c72f9ce" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.193Z" + "updatedAt": "2025-12-08T15:00:23.589Z", + "postProcessHash": "afc469db8a34be19383b1877c44160ab0a9d99ac4cd10aad4d0ad09e74539675" } } }, "4062804e7f5daf84f9521d6d36176ca1d21b63b79ee127696328d0ff88c2f61d": { "36eff06e33f33485fd2657d38f19239c477832ef6732a214409be3a3d9e0ff16": { "zh": { - "updatedAt": "2025-12-01T18:59:36.183Z" + "updatedAt": "2025-12-08T15:00:23.522Z", + "postProcessHash": "a57cb9baa4887adec2e226bdbbbf68a6aa2fb39c9a20476b0106d64b3ee77ee9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.183Z" + "updatedAt": "2025-12-08T15:00:23.522Z", + "postProcessHash": "4b140bd3e02603e776c7d5e99e2368bbb711690edcfb5b0c90bc007d151d6311" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.187Z" + "updatedAt": "2025-12-08T15:00:23.541Z", + "postProcessHash": "e3a6f07aff2d7b6e1a10d2daf5714bb24f8a9f7da908006a729e5203490e93f1" }, "es": { - "updatedAt": "2025-12-01T18:59:36.187Z" + "updatedAt": "2025-12-08T15:00:23.542Z", + "postProcessHash": "45329dfe67f5c4ef5bde4a6734cf4187c3c1f335d886ace819471224c7fecac5" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.193Z" + "updatedAt": "2025-12-08T15:00:23.555Z", + "postProcessHash": "c358be790c72c7753a3c2ce45dcbd0de2a0293f996242e4a240f6c0f01fc6eea" } } }, "712d4c3004019bfe438e07482e80178530a75d0b67b5fed2d32ae62eed0da87f": { "1734b11fdfb0fc300719cce03eb422351344800c6763d50b8a97fad290fd48fa": { "zh": { - "updatedAt": "2025-12-01T18:59:36.194Z" + "updatedAt": "2025-12-08T15:00:23.524Z", + "postProcessHash": "e3a1daeaab4a5a80544e6f8b70b077dc10d8060c47d2b09c54ad291dfa2b51c7" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.190Z" + "updatedAt": "2025-12-08T15:00:23.548Z", + "postProcessHash": "e6aee6d7e3c3427b0327def66c5d1db6dac0ec8db268a3f3ce92313bc06a70eb" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.190Z" + "updatedAt": "2025-12-08T15:00:23.549Z", + "postProcessHash": "adac3d991f5398c95f07ed55644c875516a1cffe74415c0d9ef923188857f64f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.191Z" + "updatedAt": "2025-12-08T15:00:23.550Z", + "postProcessHash": "7104f7a8086e7db0fc5649a7006833b01c4bff3f7049bb9151e172517ce1fc9f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.192Z" + "updatedAt": "2025-12-08T15:00:23.551Z", + "postProcessHash": "117582a8072243f3c15a1ceafea47571f644085dfb26e57608aad2b64d6bece9" } } }, "67f461fd6d4ebeb49147cd70c32f804e3b7d6637eedfc76e8046a1036766b0dc": { "b54c30559ede49e56ed1cb1497b2cf692d895ff0e31a3168f3da47430cbaa2f5": { "es": { - "updatedAt": "2025-12-01T18:59:36.194Z" + "updatedAt": "2025-12-08T15:00:23.525Z", + "postProcessHash": "9efea742a26b73f9430203918f3ca1983593a968d22f071407eae37c25d166e6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.195Z" + "updatedAt": "2025-12-08T15:00:23.527Z", + "postProcessHash": "6298a5606624aa708065701c05f77cdbf41559007d426ae47c1a1488f72095af" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.195Z" + "updatedAt": "2025-12-08T15:00:23.529Z", + "postProcessHash": "5fd5340e224557d85ba70eae6804b86e5dee0691b2d7c713335b7a58cb9079a7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.205Z" + "updatedAt": "2025-12-08T15:00:23.565Z", + "postProcessHash": "d522128006601fb0bc18cd86f91584669a50d7e070547fe568a113b0bedd554b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.206Z" + "updatedAt": "2025-12-08T15:00:23.569Z", + "postProcessHash": "7433a32f861c95e82570650447f51815cc4b8782bed762e7d7196daad549ab5e" } } }, "3ba796e62e8b7f3efaf06a978737760d64747075558bd176dad363e4af7d8c45": { "7595a0ef2c54523d9785ba59dc08d442061963465499e4560e964806891feefb": { "zh": { - "updatedAt": "2025-12-01T18:59:36.195Z" + "updatedAt": "2025-12-08T15:00:23.526Z", + "postProcessHash": "3b631d3121e0ce1c8c5a9e5d2c0fb28ae03dff05bd9bd40daf929e25fcfa849d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.199Z" + "updatedAt": "2025-12-08T15:00:23.545Z", + "postProcessHash": "da54e4c4b8fdc2c856340d0308d650827e54b1164bfc4071e09d398aed58f300" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.200Z" + "updatedAt": "2025-12-08T15:00:23.552Z", + "postProcessHash": "cb93d5f695a45d2aeb7945a58564c8ea4f2e013f2e018fdebebf264479ba75bc" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.200Z" + "updatedAt": "2025-12-08T15:00:23.554Z", + "postProcessHash": "96162df2360f4f82f660858387d8fe4210a3bc709490b9e1c818f930becc5464" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.205Z" + "updatedAt": "2025-12-08T15:00:23.566Z", + "postProcessHash": "d2aa29f1d7da1b5345c399eebf3f83f4e3dc030d9e4a47859a8600e35783e7ac" } } }, "0e84ea2ba357c60cde052d35c2ea32c7bd263b38c9b6c201cdce26f39b22aa66": { "017d29fa1c4f0b567adf5fd1b9e9c0a5af63d5dcd062cf1dd9217db1f13e16b9": { "ja": { - "updatedAt": "2025-12-01T18:59:36.196Z" + "updatedAt": "2025-12-08T15:00:23.529Z", + "postProcessHash": "cfde3e4c30492a453e5c3b03bf810350c3e5fa94b817bab90fb5ee3cf0dfc16e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.196Z" + "updatedAt": "2025-12-08T15:00:23.530Z", + "postProcessHash": "11e36e5b7c96e56f2e20337106c73d520e445e3e7746cd05e074753645fd1e37" }, "es": { - "updatedAt": "2025-12-01T18:59:36.200Z" + "updatedAt": "2025-12-08T15:00:23.553Z", + "postProcessHash": "a014bce82d05924eaca57278bcc44266765afb38fc16f67dbae1e022b5295060" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.205Z" + "updatedAt": "2025-12-08T15:00:23.566Z", + "postProcessHash": "f28a5a0ace5b02fb7a50eb7b2977101c1562e3f0b07b3fd16988a98a2f1dca03" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.205Z" + "updatedAt": "2025-12-08T15:00:23.567Z", + "postProcessHash": "7b095cd8ef30667d12f090f3c2b6886ccd4aba4e390ee1b5a233870567c83092" } } }, "753d8bd249b85b2a4167b85d3ce4ae1cb8f4186cbb8272749d6d2a896e5abf81": { "e6545700668b8eff2a27e34834f871a9772a547a0e51b6a5134cf65c62e218f7": { "fr": { - "updatedAt": "2025-12-01T18:59:36.196Z" + "updatedAt": "2025-12-08T15:00:23.531Z", + "postProcessHash": "3f264b8cb51024e33ba2ef04e23a6a92cd580fe64f211935e339f506f90a996f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.197Z" + "updatedAt": "2025-12-08T15:00:23.532Z", + "postProcessHash": "3f264b8cb51024e33ba2ef04e23a6a92cd580fe64f211935e339f506f90a996f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.209Z" + "updatedAt": "2025-12-08T15:00:23.574Z", + "postProcessHash": "3f264b8cb51024e33ba2ef04e23a6a92cd580fe64f211935e339f506f90a996f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.210Z" + "updatedAt": "2025-12-08T15:00:23.576Z", + "postProcessHash": "3f264b8cb51024e33ba2ef04e23a6a92cd580fe64f211935e339f506f90a996f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.211Z" + "updatedAt": "2025-12-08T15:00:23.578Z", + "postProcessHash": "3f264b8cb51024e33ba2ef04e23a6a92cd580fe64f211935e339f506f90a996f" } } }, "dfa0a0850505c804055add62b7b100632feaaa7209faed9572384d91f67beaa0": { "ab087523a16b089dc3bbcb3dd0a38274f8fc5afd96d712cb1196afd63750575f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.197Z" + "updatedAt": "2025-12-08T15:00:23.532Z", + "postProcessHash": "e529b37f6268f8e38e239585827a1acdc393d04623214fb3f0ee045da0cd3e32" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.199Z" + "updatedAt": "2025-12-08T15:00:23.535Z", + "postProcessHash": "d3192b9d8306528fba4c5f1952442b456e8050cad703f49db59bba97ffb6495c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.206Z" + "updatedAt": "2025-12-08T15:00:23.570Z", + "postProcessHash": "438c54c3216dbcc9df4a912d158cb1b00e5eb6cf00d57057600976375cecb481" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.211Z" + "updatedAt": "2025-12-08T15:00:23.579Z", + "postProcessHash": "1af1fe0346c15206487804c58492efd3088b7caa6ee0f6e3f29ea6b1dda7e45c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.218Z" + "updatedAt": "2025-12-08T15:00:23.614Z", + "postProcessHash": "93e12ac388fc9a9cc24c8ae7e8bbca1f690142d3fe2ab25956f8c669fbdfde4e" } } }, "84939d46b7dad9a618475a769e101702ee05d9aa4924b7ebda56716aa014627f": { "70f3b4f50d9c9b83c247b08f8627e2634f2811c3f1523137cd01ea0b06aac42d": { "es": { - "updatedAt": "2025-12-01T18:59:36.186Z" + "updatedAt": "2025-12-08T15:00:23.539Z", + "postProcessHash": "a92ea53458b8f4feea06ace2975e3f40c2d67cc32e9f20433065fe2370c0f637" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.186Z" + "updatedAt": "2025-12-08T15:00:23.540Z", + "postProcessHash": "f510589b407b90d7da0e93a60ef3f789265cf335738813c8162bd763fa2fe34e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.188Z" + "updatedAt": "2025-12-08T15:00:23.545Z", + "postProcessHash": "7810b8f0617046ba1966e7c600209d5825794b13870fb0cdfcc5ece4510f5b3d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.189Z" + "updatedAt": "2025-12-08T15:00:23.546Z", + "postProcessHash": "f030874fa54e9362a918033e6bb94d4cf634306f3a539515dd0cc7c2a9b1c94a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.192Z" + "updatedAt": "2025-12-08T15:00:23.553Z", + "postProcessHash": "b9989559d3e511175aee62b2a8539775e0ca81e1d679ed286dc30f8e3597d2d6" } } }, "438feb728e012dc5d7370ccb740eb0c2b9ea1b4036973dc533bc6388a9f8ff2b": { "ba6246c3d4f50bd007fceb3f19293b2f2ea2bb1956d3ca0bd25ba3d427e8a50e": { "es": { - "updatedAt": "2025-12-01T18:59:36.189Z" + "updatedAt": "2025-12-08T15:00:23.546Z", + "postProcessHash": "95438394359bb329101ebed438636df11557dea430ffe36b840c9118db8bb49e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.189Z" + "updatedAt": "2025-12-08T15:00:23.547Z", + "postProcessHash": "218e6c61a18b9bae1f3cf33f9007eb389b14d16a962dd72b5b58073c865f5fa2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.191Z" + "updatedAt": "2025-12-08T15:00:23.550Z", + "postProcessHash": "497c13b7f770115cf42d14a3533f1e4ce305f127779fd9064ae912b989ac69d8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.191Z" + "updatedAt": "2025-12-08T15:00:23.551Z", + "postProcessHash": "75e4a2fde13f2059a4a89d7a61d5e4953c16ecebb66ece74bf4e5384c25a693a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.193Z" + "updatedAt": "2025-12-08T15:00:23.554Z", + "postProcessHash": "3dfe06bd9e2899940abc5a61bc0798e6313d6dc470a7c28af07e28f6ab49c704" } } }, "dd17e1de4698017e598dbc2d412c5c5a6dd5dff3fe09c4634276ea8bfd624b77": { "c8c380c65ec5a6114ef86c2016d3f26e1ea42811cd5062fcca60357ceb0e31ba": { "es": { - "updatedAt": "2025-12-01T18:59:36.198Z" + "updatedAt": "2025-12-08T15:00:23.533Z", + "postProcessHash": "7d0d1df5ec6417388878071e025a268d1e0a8c0c0ca99d795ed78e801b0d8465" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.198Z" + "updatedAt": "2025-12-08T15:00:23.534Z", + "postProcessHash": "c2879b66700edb11316da28f9a0ea55bccb2cc1274db8bbf52ac4c7a63c39394" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.204Z" + "updatedAt": "2025-12-08T15:00:23.565Z", + "postProcessHash": "c2879b66700edb11316da28f9a0ea55bccb2cc1274db8bbf52ac4c7a63c39394" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.206Z" + "updatedAt": "2025-12-08T15:00:23.568Z", + "postProcessHash": "a0991916e8484dadd72d2a17d8bab2df2e649269b5bbae82c7de809cecf4d788" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.211Z" + "updatedAt": "2025-12-08T15:00:23.577Z", + "postProcessHash": "b0ad9a1265ef58f429d665090a3838b504578c211db027ac2d2922f8bd8751a2" } } }, "9868c76082b548723442b3156e219ace971c8df8e6eebf8beea4efbf40986da9": { "dab27f4f8c5431d9c2971c545a63b901e7df83b64f5c6c1981ed649fe2cab007": { "fr": { - "updatedAt": "2025-12-01T18:59:36.199Z" + "updatedAt": "2025-12-08T15:00:23.535Z", + "postProcessHash": "a53d7263ea3163e5fa52b5245f73edcd41ca0823c3a30abad780c670c821a311" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.208Z" + "updatedAt": "2025-12-08T15:00:23.573Z", + "postProcessHash": "e7a63591988d06f35fd29ac72f9dccb839c475764e05ae9a99bcf1e952b1a576" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.212Z" + "updatedAt": "2025-12-08T15:00:23.580Z", + "postProcessHash": "02c33ee29080cbb808311d1f93ad7d5dbbd3c1ab0e87da497eaf2c4dcd0d9b5b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.215Z" + "updatedAt": "2025-12-08T15:00:23.587Z", + "postProcessHash": "c3f3b24c43c61a9ad87c6f90f955990452281217265f7b263f52d809b87ae7ca" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.215Z" + "updatedAt": "2025-12-08T15:00:23.590Z", + "postProcessHash": "baa83118b057779e8488647dd25713954e4aa12021b4eeb65bb1d61914314625" } } }, "38247262aedaacd9869a9b80bea7524de645ba82b7d68467c61182fa49ef097c": { "5a574d8f39d26a1da8619aa0e9d68ca1fe190398b75f67313a08e3ec676189e2": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.201Z" + "updatedAt": "2025-12-08T15:00:23.555Z", + "postProcessHash": "a6498fa74735bda439bd0a55bf0500beefcc9652ef4ab4033cc2086249790af1" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.201Z" + "updatedAt": "2025-12-08T15:00:23.556Z", + "postProcessHash": "56d320cf16f21716b285f2df68472b2cd26633dc915d7d1437f8ef98574fc7d5" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.203Z" + "updatedAt": "2025-12-08T15:00:23.558Z", + "postProcessHash": "56d320cf16f21716b285f2df68472b2cd26633dc915d7d1437f8ef98574fc7d5" }, "es": { - "updatedAt": "2025-12-01T18:59:36.213Z" + "updatedAt": "2025-12-08T15:00:23.582Z", + "postProcessHash": "56d320cf16f21716b285f2df68472b2cd26633dc915d7d1437f8ef98574fc7d5" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.213Z" + "updatedAt": "2025-12-08T15:00:23.583Z", + "postProcessHash": "56d320cf16f21716b285f2df68472b2cd26633dc915d7d1437f8ef98574fc7d5" } } }, "1ce323d16c88c802a5f52e4e8cbebb12fc15ffb8b822b0a378524ca1d4533732": { "2b4c9156a1ea7dcd8bdae65590a1301bd8ad1ba58e43aaac7ae575dfdea630e1": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.202Z" + "updatedAt": "2025-12-08T15:00:23.557Z", + "postProcessHash": "39f55daec1ed145e39c8d6e50ac0ebff78d051aeaeb04f0baac11ef341953809" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.212Z" + "updatedAt": "2025-12-08T15:00:23.581Z", + "postProcessHash": "78ff55b554d5ba1e48cc070ad674c918905f06fde2a32cbd1eda9e2ed27850a4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.216Z" + "updatedAt": "2025-12-08T15:00:23.591Z", + "postProcessHash": "6dffd72bec314d9ef1d70eb7fcbabcefff6423b8fefe682ed011582f3162c8e5" }, "es": { - "updatedAt": "2025-12-01T18:59:36.216Z" + "updatedAt": "2025-12-08T15:00:23.592Z", + "postProcessHash": "7e8b29a37d821492b716947ffcf31d3bf49778d7c17b811425e89cec8156033c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.216Z" + "updatedAt": "2025-12-08T15:00:23.592Z", + "postProcessHash": "e227a10b3825098ffda87b690b3677389e68551c7e331415903c8424a9a159a9" } } }, "0231f6391842d3cbd490344aadd21e74dcbf0d7b2188bb665a03406a69700a38": { "562e8402c73a65c856f699c249145d3a87b7be7322577bb44b838e96488efcac": { "fr": { - "updatedAt": "2025-12-01T18:59:36.202Z" + "updatedAt": "2025-12-08T15:00:23.557Z", + "postProcessHash": "bbe7ca200980058d7cc1ef6be9e022f38928ace6684ccf8a130c7e86c291d50f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.204Z" + "updatedAt": "2025-12-08T15:00:23.562Z", + "postProcessHash": "76923638529b4a20e4ee76f04ed646a6a20abe460a7e130480715b39b8044979" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.214Z" + "updatedAt": "2025-12-08T15:00:23.584Z", + "postProcessHash": "b5a17fe2b6453a7f796abc7a375e4dcdcaac78f57efc5f0babe86abe4926d7c9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.214Z" + "updatedAt": "2025-12-08T15:00:23.586Z", + "postProcessHash": "3ed897a65f139e340434eea44bd3fcd34399bebe30e6cffe9e263064d2fb5f42" }, "es": { - "updatedAt": "2025-12-01T18:59:36.217Z" + "updatedAt": "2025-12-08T15:00:23.606Z", + "postProcessHash": "88181b3366cc4a4a2c86ee6369c3f0072b8fce28a2bc87ccf504c28c85993c37" } } }, "3624a0d1e1f3600092fced5e6804884f04deb9eac0650c30fe430353016c109d": { "9c44e5c13862262e470cc8b65c1acb45f3ebb93344b40a5ac56b6bad5c4fa2dd": { "ja": { - "updatedAt": "2025-12-01T18:59:36.203Z" + "updatedAt": "2025-12-08T15:00:23.559Z", + "postProcessHash": "766749f9b4d0424806b9af8dc98847703e1f01497a94f39517db4add424f6505" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.204Z" + "updatedAt": "2025-12-08T15:00:23.560Z", + "postProcessHash": "c9439d4dac15c48cfb2f4bf16146b45909ebe46b10e05abe8bebd9431e5248cc" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.221Z" + "updatedAt": "2025-12-08T15:00:23.587Z", + "postProcessHash": "8c1fb267bc7c4dccd0ee82ee5e170af3132d36114e6ba6740f4b47c6c5b73c84" }, "es": { - "updatedAt": "2025-12-01T18:59:36.217Z" + "updatedAt": "2025-12-08T15:00:23.601Z", + "postProcessHash": "bdb6a9edc4c40d7d4db1935c78eb05fb6c8167cec77e857575a3a717fb6dda7b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.224Z" + "updatedAt": "2025-12-08T15:00:23.601Z", + "postProcessHash": "f6e63b157d008613c2861c63100237745d3e2323e97e543fde09f55ab6bf704c" } } }, "890c2fd2b966871565a5b110679ddc5de243982b3d003011a6504535657a811b": { "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4": { "zh": { - "updatedAt": "2025-12-01T18:59:36.218Z" + "updatedAt": "2025-12-08T15:00:23.560Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.219Z" + "updatedAt": "2025-12-08T15:00:23.562Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.220Z" + "updatedAt": "2025-12-08T15:00:23.585Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.224Z" + "updatedAt": "2025-12-08T15:00:23.600Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.226Z" + "updatedAt": "2025-12-08T15:00:23.604Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" } } }, "51f62c3c044d5ea80c70aa38aa32e167e98fe319af942b26c3485fe73ed5e2a2": { "316289e02d4b472e6009d76c1fa52fcaded90ae0e37916623b854da5fb593866": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.219Z" + "updatedAt": "2025-12-08T15:00:23.561Z", + "postProcessHash": "85942edfd19d23d185fff3c95c14f2cadecf8887b3d123024081420f40771229" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.220Z" + "updatedAt": "2025-12-08T15:00:23.586Z", + "postProcessHash": "80eeca09e2663635bae9c32d476b40905f256c726cd28e4ad74932eb7ede5ce8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.221Z" + "updatedAt": "2025-12-08T15:00:23.594Z", + "postProcessHash": "fb248a57634871c9a7de1962acfaa05f366893c5c420a5109f709f9a762eaeeb" }, "es": { - "updatedAt": "2025-12-01T18:59:36.225Z" + "updatedAt": "2025-12-08T15:00:23.602Z", + "postProcessHash": "085ab932e120901f27aa52bb30be43c861e9eb0b1628ec3588744ea818bc0135" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.226Z" + "updatedAt": "2025-12-08T15:00:23.605Z", + "postProcessHash": "318cfb9beb7b1144a7a2146017e581844c9c4d82c0f81110972fc7ae953d7650" } } }, "673f825800962d358bdd72ee8b4246f19f1d470b3a18da36188edcaf5692f5aa": { "559c6f698a5c9f980a80b2ef2b96946f4d9636414529b460f720a8c94489fa98": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.219Z" + "updatedAt": "2025-12-08T15:00:23.563Z", + "postProcessHash": "13b049a1ad2f654889bcb5a8b6e910b6854260562d44f5b5279284dfb332051d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.225Z" + "updatedAt": "2025-12-08T15:00:23.603Z", + "postProcessHash": "ef26ddb9eeeafb6ed996d569e50b872353693ed991306335ff19e86c0bca54a4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.225Z" + "updatedAt": "2025-12-08T15:00:23.603Z", + "postProcessHash": "d9a05f34035ccdd2f20ce787399be3a3a056aa27f971471d30bfb4b3038c18a8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.227Z" + "updatedAt": "2025-12-08T15:00:23.609Z", + "postProcessHash": "a10c7229c47e302baaa0f6a0f66a9ef9c41f6b4343375cf5986ec7e8d9d7daa6" }, "es": { - "updatedAt": "2025-12-01T18:59:36.307Z" + "updatedAt": "2025-12-08T15:00:23.631Z", + "postProcessHash": "dcc6ece42c3b84924f1d6a64e99605431b336fc56713cfdbb423affaa0423dc7" } } }, "00e2588aa7aff5a198c9c6d0212e9d052722d14b31e002f832533d3c8d5f76e6": { "697fdbb6ca5493daf29f39d6d64f3d01ce34a919a4ec53907853fd1f944e95d8": { "es": { - "updatedAt": "2025-12-01T18:59:36.220Z" + "updatedAt": "2025-12-08T15:00:23.564Z", + "postProcessHash": "9690bf600aacd190aa41a4d0c841753325a5e2e8093a576ee45085bb39aaf488" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.227Z" + "updatedAt": "2025-12-08T15:00:23.611Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.227Z" + "updatedAt": "2025-12-08T15:00:23.612Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.227Z" + "updatedAt": "2025-12-08T15:00:23.612Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.233Z" + "updatedAt": "2025-12-08T15:00:23.616Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" } } }, "9e02f8cc88bddf0e9af402631310d24f882052fdd9fb86aa897a4bb8b1fe2048": { "52949bc521da8c0eef32ee8d6bc615eecf8794490c49e782c55943a2592c3330": { "es": { - "updatedAt": "2025-12-01T18:59:36.207Z" + "updatedAt": "2025-12-08T15:00:23.570Z", + "postProcessHash": "189b5270c2dedb47718ebfccf100519e61a88707b030d2e8725e1304d7893e15" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.207Z" + "updatedAt": "2025-12-08T15:00:23.572Z", + "postProcessHash": "d2a3873099dd0b890e2f0f6c2cd47d6e011da4806af8c4596d66948348e8d40c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.209Z" + "updatedAt": "2025-12-08T15:00:23.574Z", + "postProcessHash": "c1eaea3dccb50ba463c599799cfa737f533791b9369cb7fc89e6b2d6aaef59a2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.213Z" + "updatedAt": "2025-12-08T15:00:23.584Z", + "postProcessHash": "24244cb38571b6586354866a9f6e851e0ba7ee059fb20d7cdfc1aa1c87a97063" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.215Z" + "updatedAt": "2025-12-08T15:00:23.590Z", + "postProcessHash": "efea4b815bdf0682f6df3e834a2ff6416fcecca7cf6645e19019f62a3c393820" } } }, "84b3556b8ae254d2d712b1b57c5b4daaf7fe4f65321b601df9e1bac44a28d8d9": { "78a9ba62558ba8de2cbf558596fffce31668601d47ed816cd2124382762bff3c": { "zh": { - "updatedAt": "2025-12-01T18:59:36.208Z" + "updatedAt": "2025-12-08T15:00:23.572Z", + "postProcessHash": "c7108409696dac1b105e235ea81153620b286db70cf1a380ea05fc7b6709a09e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.210Z" + "updatedAt": "2025-12-08T15:00:23.575Z", + "postProcessHash": "45233978cec4560c2c8022c09e5fef817d73d793548f661016e7905928f03bbd" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.210Z" + "updatedAt": "2025-12-08T15:00:23.576Z", + "postProcessHash": "d80ce0fb28e1eefe36b9e711519622fb0affdcc15bf65c87e47c45523d8a7651" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.212Z" + "updatedAt": "2025-12-08T15:00:23.581Z", + "postProcessHash": "d1f61d11224005d6aee683a6497c9680c3d723577cdfa3375cc4fc973f45aec4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.215Z" + "updatedAt": "2025-12-08T15:00:23.588Z", + "postProcessHash": "8766370237fd673a345fd02203ef90627b730c439348aa9884ae697dfc24d74a" } } }, "977d259d5f5e9b0464ac2dc05df8f23bf0e7b6a8f16b0961642a4b93b0e17b48": { "6f9d8e7adca9a49c030bf55cc2821c7d5a5fff3559afc66ad2eb354d8c1289c1": { "zh": { - "updatedAt": "2025-12-01T18:59:36.221Z" + "updatedAt": "2025-12-08T15:00:23.594Z", + "postProcessHash": "4a4431bc11081781b78118a12b11481b5b09ac95b7616e2031d8d6f9c891ec3f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.233Z" + "updatedAt": "2025-12-08T15:00:23.616Z", + "postProcessHash": "a1f96fcd4eee3e0556cefc8752ae92f88be6297ae1d1a324ad2b10eb7e434961" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.296Z" + "updatedAt": "2025-12-08T15:00:23.622Z", + "postProcessHash": "0e392a5a7c25b0910a81416e8b0f7ba8b8163952d2a110c95825c401130a2e19" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.297Z" + "updatedAt": "2025-12-08T15:00:23.623Z", + "postProcessHash": "f8f206c3786b7fe6e08e7aac8024c925ca4aea9b2f255a7565249db4c99dcddf" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.302Z" + "updatedAt": "2025-12-08T15:00:23.623Z", + "postProcessHash": "a399767c04edb7fbbaa0488b2f8c073b9023f3b7f3869918187d8edfba7fce71" } } }, "6d47de3ee77207e5164d4b3dc134e2b1a0e119901fe4ef5ba570b60c3994d9a3": { "a000351021f6ce9c18cbd5744b160747577d5b550fd4340cc92d5c3b29cbcd2b": { "es": { - "updatedAt": "2025-12-01T18:59:36.222Z" + "updatedAt": "2025-12-08T15:00:23.595Z", + "postProcessHash": "d5276aeda0bf16a1e2c31c7393f425d41f26eca9763c1c121ebb221cecce2723" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.233Z" + "updatedAt": "2025-12-08T15:00:23.615Z", + "postProcessHash": "d5276aeda0bf16a1e2c31c7393f425d41f26eca9763c1c121ebb221cecce2723" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.234Z" + "updatedAt": "2025-12-08T15:00:23.617Z", + "postProcessHash": "d5276aeda0bf16a1e2c31c7393f425d41f26eca9763c1c121ebb221cecce2723" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.259Z" + "updatedAt": "2025-12-08T15:00:23.618Z", + "postProcessHash": "d5276aeda0bf16a1e2c31c7393f425d41f26eca9763c1c121ebb221cecce2723" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.273Z" + "updatedAt": "2025-12-08T15:00:23.621Z", + "postProcessHash": "d5276aeda0bf16a1e2c31c7393f425d41f26eca9763c1c121ebb221cecce2723" } } }, "1d0ee333b9d6af2fa21dc6cdbb0f051751ccd0f15411daaf21cf2a8684987b2e": { "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4": { "fr": { - "updatedAt": "2025-12-01T18:59:36.222Z" + "updatedAt": "2025-12-08T15:00:23.596Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.222Z" + "updatedAt": "2025-12-08T15:00:23.596Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.261Z" + "updatedAt": "2025-12-08T15:00:23.618Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.270Z" + "updatedAt": "2025-12-08T15:00:23.619Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.274Z" + "updatedAt": "2025-12-08T15:00:23.621Z", + "postProcessHash": "cbde2d24e79c82d13c76ae4a488857ef561a65372fd5e0c7eb65f73c72250ce4" } } }, "57321ae748c10ba832326c97e0f400a4fa2e2ecd3d721353c3ff14d824c09846": { "78ae296442833c5a4eb89fae549d44087d14db670c303b55ea8449dd62ee469c": { "ja": { - "updatedAt": "2025-12-01T18:59:36.223Z" + "updatedAt": "2025-12-08T15:00:23.597Z", + "postProcessHash": "213512899e4b4062cf6bb535b0a285fed11e9a54419f4e8aadfb37ff592ff5e1" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.223Z" + "updatedAt": "2025-12-08T15:00:23.598Z", + "postProcessHash": "abc7df3824f93a16529c925f8d4b23fdb49f5b928e152b7502750c0f7106a986" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.304Z" + "updatedAt": "2025-12-08T15:00:23.626Z", + "postProcessHash": "0aeb6612fd7a35367df642f6eb7a707f4308211d7352867996c89d8e4b4a9b80" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.305Z" + "updatedAt": "2025-12-08T15:00:23.626Z", + "postProcessHash": "b3c4ee4859754e199581d9151d2aa6f7ff1828c575b6c3acc20bd8ac25c6f48f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.305Z" + "updatedAt": "2025-12-08T15:00:23.627Z", + "postProcessHash": "e306ad3a47c84d47d3e134bb52e1b863695dd30bc116ee3fc129fe0d5635f0ae" } } }, "1414abc31d9e3b97d7a1f40481ad121a0168bdb311c0331833e0db34b3564741": { "f325989282a059bf651e3300189ee45fafa6b43ae4f35135725825f674d0737f": { "zh": { - "updatedAt": "2025-12-01T18:59:36.223Z" + "updatedAt": "2025-12-08T15:00:23.598Z", + "postProcessHash": "5aba386092e266ed6e51ebfa584c3a0e328fee470b2ad5c68880af72d90623c3" }, "es": { - "updatedAt": "2025-12-01T18:59:36.224Z" + "updatedAt": "2025-12-08T15:00:23.599Z", + "postProcessHash": "0051e479f1ea9d178c73283645e68d7c55b0ee03d48462a99563aa970b09a3ce" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.306Z" + "updatedAt": "2025-12-08T15:00:23.629Z", + "postProcessHash": "432460c3bd59251ef1c4a6d935b2f55e6a52ef18cd4e14086427ace47bfd795b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.306Z" + "updatedAt": "2025-12-08T15:00:23.629Z", + "postProcessHash": "7e790d9edd7de7b0186aa22d97c097b11e83c99168fb72208680c4a5fbeb6e6d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.309Z" + "updatedAt": "2025-12-08T15:00:23.686Z", + "postProcessHash": "b1788885859e019b71e1fc5f55037cb2ce0b0e34c5a0270ae887091a0ae99908" } } }, "d057c85f5d0d125509e451ecca8f843f31ec34bc7ced269a7809445aa62d51b9": { "5bbfecdfadd3b03a14997dcf625617c6a86e87987419983bea077e49e91fbe65": { "es": { - "updatedAt": "2025-12-01T18:59:36.226Z" + "updatedAt": "2025-12-08T15:00:23.605Z", + "postProcessHash": "c79d2fe861c6a5e3b59ce699cab6235629228b9f7e94d39c8876a4f1293ab639" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.226Z" + "updatedAt": "2025-12-08T15:00:23.607Z", + "postProcessHash": "b73169abb4fdd2e83fba44c0115a7d106989a81e6b9e7b78f500816618132d42" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.228Z" + "updatedAt": "2025-12-08T15:00:23.613Z", + "postProcessHash": "935bd8c46997beeb7fbd77b049fe7461795a5adbd2889a3be65029cade6ee2a2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.228Z" + "updatedAt": "2025-12-08T15:00:23.613Z", + "postProcessHash": "3a151e9b32c102a08353d176b37787b6d038dc2b6394e73af086bb8c71935d40" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.228Z" + "updatedAt": "2025-12-08T15:00:23.614Z", + "postProcessHash": "02c4a6efaf8f79e863a6ac8ca49b39723f1da12ebdee6af5a313fabfcb3f5990" } } }, "662ff3bb9d30ce9ba52fddd9fa856f1b8106ebfd00971f991a1784bcc86e6a64": { "b15ea99f92b2ede411cdf715df6cb93e60e91d9ece2f19fc3bc9a8872600c49c": { "ja": { - "updatedAt": "2025-12-01T18:59:36.309Z" + "updatedAt": "2025-12-08T15:00:23.608Z", + "postProcessHash": "76693d3063165c422125905b7a984d3e1cfe91e2455c214f32a6224ae1e55660" }, "es": { - "updatedAt": "2025-12-01T18:59:36.305Z" + "updatedAt": "2025-12-08T15:00:23.627Z", + "postProcessHash": "aeab68d5a6cdcb26257c61fad75c6072e23d54b023febffd44c70f16df2f6ef6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.307Z" + "updatedAt": "2025-12-08T15:00:23.631Z", + "postProcessHash": "90c61d8d5f6882794134f3a5e4051ee836b7dcae044d5c9f706c08c0857afacc" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.313Z" + "updatedAt": "2025-12-08T15:00:23.637Z", + "postProcessHash": "2456ba98845a3b07b5dffd56f7f5ee05f67c726d6944b08164c865a1967b2949" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.317Z" + "updatedAt": "2025-12-08T15:00:23.659Z", + "postProcessHash": "d49e7be90e73546a072e6903c5518810e02c890c51ec6ad106c4c9f40504d348" } } }, "f1b8c9831ecfb489b8dd0dae5188c6f4e18dcab6d2af4206cceab3d62eeb5f48": { "b0fb95bad7ef3283bc419bf80bb9514d703edcfce177835500d7ca9c8b91707a": { "zh": { - "updatedAt": "2025-12-01T18:59:36.309Z" + "updatedAt": "2025-12-08T15:00:23.609Z", + "postProcessHash": "06b438c3420a063f6ccbc7058418e6aecd6fafb49592e55c73eb64cff7c020f8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.311Z" + "updatedAt": "2025-12-08T15:00:23.628Z", + "postProcessHash": "06b438c3420a063f6ccbc7058418e6aecd6fafb49592e55c73eb64cff7c020f8" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.311Z" + "updatedAt": "2025-12-08T15:00:23.633Z", + "postProcessHash": "b7dd005b6949f58d446e87dba5a2c3b5a8325250c8999e2872314024228da01f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.312Z" + "updatedAt": "2025-12-08T15:00:23.635Z", + "postProcessHash": "6795ecc3c8b330467cbe301e1eca1e8a12b35e091ef89e8102e4828c3e4d2041" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.315Z" + "updatedAt": "2025-12-08T15:00:23.652Z", + "postProcessHash": "67a0ca9b1bf60d45158494788cc5fc985461d8d95e1a73b6ee518a58ff638ee1" } } }, "28e8e3d1c9883f5c84c857860f861690a2053464ecf2788aa859b3d023de0334": { "b8e979786fc78892647bd55332b1f36a7bd2a683a2948276b533a346e2bad805": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.309Z" + "updatedAt": "2025-12-08T15:00:23.610Z", + "postProcessHash": "7e703e518f179a2439803b87049cbcf8aab11deab35d72d1a135514df661d7a8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.310Z" + "updatedAt": "2025-12-08T15:00:23.611Z", + "postProcessHash": "7e703e518f179a2439803b87049cbcf8aab11deab35d72d1a135514df661d7a8" }, "es": { - "updatedAt": "2025-12-01T18:59:36.314Z" + "updatedAt": "2025-12-08T15:00:23.639Z", + "postProcessHash": "7e703e518f179a2439803b87049cbcf8aab11deab35d72d1a135514df661d7a8" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.317Z" + "updatedAt": "2025-12-08T15:00:23.660Z", + "postProcessHash": "7e703e518f179a2439803b87049cbcf8aab11deab35d72d1a135514df661d7a8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.319Z" + "updatedAt": "2025-12-08T15:00:23.661Z", + "postProcessHash": "7e703e518f179a2439803b87049cbcf8aab11deab35d72d1a135514df661d7a8" } } }, "0610730f2c11267a85d75aae1b22f4118f3ad0f9403421aa4178536979344519": { "e88b1093db76b74722e1020bd3fb2b912e7fa4e9f53f27b8ed65eb3f5f84c7cc": { "es": { - "updatedAt": "2025-12-01T18:59:36.272Z" + "updatedAt": "2025-12-08T15:00:23.619Z", + "postProcessHash": "20a6285aaf389d55b4555f1020039008cc6514160e02be0407df20961e31ceb4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.273Z" + "updatedAt": "2025-12-08T15:00:23.620Z", + "postProcessHash": "3623071a480396d20da886cde89d0e2c7a7932c58a1f07693df1e329dcb8bb3d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.304Z" + "updatedAt": "2025-12-08T15:00:23.623Z", + "postProcessHash": "471613c35f495c0039414c82aeeb6d08f1a6870f983b90e998de645f5105f77b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.304Z" + "updatedAt": "2025-12-08T15:00:23.625Z", + "postProcessHash": "3dd417a0c8fd2499cf57c537aaee25ea78a5aac592977149b06c6886a556d683" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.306Z" + "updatedAt": "2025-12-08T15:00:23.630Z", + "postProcessHash": "8e6db977abe8114f3e00d4094336fbd0c0920fbaf420bb146083a0c73ca78d97" } } }, "ce76a396ab9d2ae2b18e13dd11e45e163422b93dd404bb2ac5385e14ae1aa383": { "29eb19aa9bd3ae0bf03bb8d65e0fd512641883fc193d0faebdea83ce33df40ac": { "fr": { - "updatedAt": "2025-12-01T18:59:36.306Z" + "updatedAt": "2025-12-08T15:00:23.628Z", + "postProcessHash": "d2e5be2e5c083db1d08fe077f9dcdce80ec48b870bf4ac5496071f9ab7268ef4" }, "es": { - "updatedAt": "2025-12-01T18:59:36.307Z" + "updatedAt": "2025-12-08T15:00:23.632Z", + "postProcessHash": "630db1b9cf846160aecdd186f1cfd37b68501f479bb8c7c25f4b09bd4b4bb790" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.308Z" + "updatedAt": "2025-12-08T15:00:23.632Z", + "postProcessHash": "adddc61f4c448ef834f83bb262d4a4abea6008acbdfff3ae0e7cb19964c9ef03" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.308Z" + "updatedAt": "2025-12-08T15:00:23.651Z", + "postProcessHash": "ed16aa26585f04a86564bf47ad94927e414ddc30c6929508ea1a6328eb0dd57b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.308Z" + "updatedAt": "2025-12-08T15:00:23.653Z", + "postProcessHash": "b025f53bb896993957cc8e2fd0f9cc7719a21d5b5203d4f363b6f49e1e0bee95" } } }, "27ea1c34cee48c963747a629058d83287a771451bafffaa28c88827baa718e4e": { "697fdbb6ca5493daf29f39d6d64f3d01ce34a919a4ec53907853fd1f944e95d8": { "ja": { - "updatedAt": "2025-12-01T18:59:36.311Z" + "updatedAt": "2025-12-08T15:00:23.633Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" }, "es": { - "updatedAt": "2025-12-01T18:59:36.311Z" + "updatedAt": "2025-12-08T15:00:23.634Z", + "postProcessHash": "9690bf600aacd190aa41a4d0c841753325a5e2e8093a576ee45085bb39aaf488" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.312Z" + "updatedAt": "2025-12-08T15:00:23.636Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.313Z" + "updatedAt": "2025-12-08T15:00:23.638Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.315Z" + "updatedAt": "2025-12-08T15:00:23.640Z", + "postProcessHash": "ec45928304fa06c8a503e9106ea3e815aa4d32ddf960554cd53258626f1c2122" } } }, "9bab1ce03789f1d096f7686d8ad16635ca1be75f7054f517b8354b2fcb7a37a3": { "5ccb6fdb339dda29aca180f43333f1d662178580b1f4626c650d44079876e6b7": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.312Z" + "updatedAt": "2025-12-08T15:00:23.634Z", + "postProcessHash": "9bc161680a91081272e41c467eeab1b5b48e57b562855b45b2fe6e713e74a875" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.313Z" + "updatedAt": "2025-12-08T15:00:23.636Z", + "postProcessHash": "19a38a5f191056c60dfb48677151abc43344f1a3a82e0df9ce5ef8ed967bdc4a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.314Z" + "updatedAt": "2025-12-08T15:00:23.638Z", + "postProcessHash": "ebea0f0c3413c4d50dbddfb7331169746d90995d5dc1f1eb6a44195b09be724e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.314Z" + "updatedAt": "2025-12-08T15:00:23.639Z", + "postProcessHash": "afbf758fec1e5ab3c80ba028e1474e0307bff34d72df7ea4e11e68289b407907" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.322Z" + "updatedAt": "2025-12-08T15:00:23.670Z", + "postProcessHash": "76d2e18b9936691129087dd10f1a7889838bab79fecb0bf5ee8691227d26f41b" } } }, "4aed8b7df1830952626fffcbe068753969b5fcdc07a38d605d2c9be65ee528e6": { "d68e793acdce69afc463aa24ed037da9f6b5f25956f0da545a370155bd0bc565": { "zh": { - "updatedAt": "2025-12-01T18:59:36.333Z" + "updatedAt": "2025-12-08T15:00:23.624Z", + "postProcessHash": "21176688a93c5420f0b62aa4beaf024644a1982295f5d0cc814c2907ebac9278" }, "es": { - "updatedAt": "2025-12-01T18:59:36.335Z" + "updatedAt": "2025-12-08T15:00:23.665Z", + "postProcessHash": "26e518af8c5e0f1026a5260d6e3d56b502f9590d16c57bbc23b71842d2bbaf15" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.336Z" + "updatedAt": "2025-12-08T15:00:23.667Z", + "postProcessHash": "837d898857f60724216f9b2e4a347e5a40d5edd1c7c0791e8453d388fd0c0ebf" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.337Z" + "updatedAt": "2025-12-08T15:00:23.688Z", + "postProcessHash": "34cd9de636aa96206a124616dd31c8659128f744bfa4d444a0929b2083b70ef1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.338Z" + "updatedAt": "2025-12-08T15:00:23.689Z", + "postProcessHash": "1099a56c01569938ccc47dd9baff0c3521e4f016dfe6393e73a75e71b7de44e2" } } }, "59a2b4c8a7921dd267ba927616aa20cb576e02b21b5ec67312106a6a3be866d4": { "b8b9730834f6535f10042a846e37a427f1f2631e13a52f4d68b4977d19c5b8a1": { "es": { - "updatedAt": "2025-12-01T18:59:36.334Z" + "updatedAt": "2025-12-08T15:00:23.625Z", + "postProcessHash": "2dfcc9d101b78af7d3a22696b8383ac34acb2930937d920e8d59a1577146058a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.341Z" + "updatedAt": "2025-12-08T15:00:23.703Z", + "postProcessHash": "484d30f01e61dc96b81ea44d19847f434a2ae29e486fc87266393e7ee813d687" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.348Z" + "updatedAt": "2025-12-08T15:00:23.722Z", + "postProcessHash": "8f41824b6c1067cb8846ee76e9d3af419e0af32e41b8eaa87a39344684eb0979" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.349Z" + "updatedAt": "2025-12-08T15:00:23.722Z", + "postProcessHash": "570101d54a090f395b63bd9773da1dd7e985966e2550dfdc231884d83e3e7eed" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.349Z" + "updatedAt": "2025-12-08T15:00:23.723Z", + "postProcessHash": "07230ebe7619fb697cb67e1665e5bdb931096cb2f547db64bf0e3f7a3241697d" } } }, "9011b0333d61a324f58784baccda5362d70e6144f18143e635ec1ddd356fc213": { "4ceec1ba2143b579631766c36af7ba039069dcda984a3d3f768a7c09f99a589a": { "es": { - "updatedAt": "2025-12-01T18:59:36.313Z" + "updatedAt": "2025-12-08T15:00:23.637Z", + "postProcessHash": "afe4e8f84f4b7caf010baef6f9b885bcf14d078fb0ce5352827cb2a682020326" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.315Z" + "updatedAt": "2025-12-08T15:00:23.654Z", + "postProcessHash": "c33c591a2a87cc4d5aaa776fd28fbe07d475e4b2891a1e74155737e9e0dad71f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.318Z" + "updatedAt": "2025-12-08T15:00:23.660Z", + "postProcessHash": "f608d33ae8e43963ad3f3bba6f2541990829bde839c675e427444f4e7fa9cb60" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.322Z" + "updatedAt": "2025-12-08T15:00:23.671Z", + "postProcessHash": "ae78723c61576db670c5e3fc7497c30b7de7f85f6fa43d0e7e60cf60e3faee4d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.332Z" + "updatedAt": "2025-12-08T15:00:23.695Z", + "postProcessHash": "ae78723c61576db670c5e3fc7497c30b7de7f85f6fa43d0e7e60cf60e3faee4d" } } }, "84576544f2098236f434ead7ebd3b6607654c79c1fc7f2e1841b864c80f4191f": { "4272dca70ea48ab3ac0ccee14632b40ad8c932d4413496a2d1e1b4f36f42123f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.316Z" + "updatedAt": "2025-12-08T15:00:23.654Z", + "postProcessHash": "62af3ff6adf449d82b3863f1473f8318dd4150f3d29cce1620e759fb7a0539f2" }, "es": { - "updatedAt": "2025-12-01T18:59:36.322Z" + "updatedAt": "2025-12-08T15:00:23.671Z", + "postProcessHash": "62af3ff6adf449d82b3863f1473f8318dd4150f3d29cce1620e759fb7a0539f2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.323Z" + "updatedAt": "2025-12-08T15:00:23.672Z", + "postProcessHash": "62af3ff6adf449d82b3863f1473f8318dd4150f3d29cce1620e759fb7a0539f2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.323Z" + "updatedAt": "2025-12-08T15:00:23.673Z", + "postProcessHash": "62af3ff6adf449d82b3863f1473f8318dd4150f3d29cce1620e759fb7a0539f2" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.324Z" + "updatedAt": "2025-12-08T15:00:23.674Z", + "postProcessHash": "62af3ff6adf449d82b3863f1473f8318dd4150f3d29cce1620e759fb7a0539f2" } } }, "ffff06b74198d7fed9457e82a1e2f492d6f1c689655b2ff0d38a9c65e3f34888": { "245c1a0cb887a3287fb143cdb213a796d35e3d0d8880375cc5ecaf00bcdf308b": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.316Z" + "updatedAt": "2025-12-08T15:00:23.655Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.324Z" + "updatedAt": "2025-12-08T15:00:23.674Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.324Z" + "updatedAt": "2025-12-08T15:00:23.675Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.325Z" + "updatedAt": "2025-12-08T15:00:23.677Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.326Z" + "updatedAt": "2025-12-08T15:00:23.678Z", + "postProcessHash": "4f917373d2656f705787b3e182c6d089dd3d98c3cb4094f3f187272fa4a4a41c" } } }, "ec93bea15ab4e96687d879966e03118ca8b41d138693db1fd713f5fd9a888db3": { "4479f1bb862cc0eb28536399360438c16e57689234c8672f03e7f4073acee176": { "zh": { - "updatedAt": "2025-12-01T18:59:36.334Z" + "updatedAt": "2025-12-08T15:00:23.656Z", + "postProcessHash": "d57a639438596af794bd5ba50a132608bd58fbc710617496857a2c27fff4c34a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.334Z" + "updatedAt": "2025-12-08T15:00:23.657Z", + "postProcessHash": "d529ba7d7a2cf2392806d6d7a90a4437c6c2e556dfc5a3bfae46db66b78f7e9d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.336Z" + "updatedAt": "2025-12-08T15:00:23.669Z", + "postProcessHash": "c9d097b025868d94adf4a3179ed0aa97248c2580e204db6dcb325a727839c7a3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.337Z" + "updatedAt": "2025-12-08T15:00:23.669Z", + "postProcessHash": "26a0eec30f297b4db2ac536caa7b3dd401cf13237900462a1dfff4258c80c23b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.338Z" + "updatedAt": "2025-12-08T15:00:23.689Z", + "postProcessHash": "d38fb8b193c4c72305fda123c0487cfbcbd1e09c69644a0ea05fb834415018a6" } } }, "ca06ced4cd6376a766d535bf03cdaa639ef344c3f9b9b8d92daf2a3b5c01e2d0": { "ee396c6444ab1bc257d9bf93c0740a0746521c309e459cce054141f731897704": { "es": { - "updatedAt": "2025-12-01T18:59:36.334Z" + "updatedAt": "2025-12-08T15:00:23.658Z", + "postProcessHash": "c8b73f02afbf5025eec43f008d3944d7431cb3d5a589c26dc3c25dbc852de7e4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.340Z" + "updatedAt": "2025-12-08T15:00:23.695Z", + "postProcessHash": "96e326bf85f1162524d4d943f1673fd535e748d5e07af2112a6a2b8600904202" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.341Z" + "updatedAt": "2025-12-08T15:00:23.704Z", + "postProcessHash": "ffe8f7902c21a77fb652ee8e72c7955ab37c6dbfb83f9f51580c8c0d8dc118e2" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.345Z" + "updatedAt": "2025-12-08T15:00:23.711Z", + "postProcessHash": "1f04db637434a0edebfbb4acc241be162cc7a0e87967aade8ab64ad0711556d3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.345Z" + "updatedAt": "2025-12-08T15:00:23.712Z", + "postProcessHash": "27dd082abe29e7b28af55bb8d2aaa60e354a893861688a3f452c72bddc8be3c6" } } }, "65c02a1a5ea1400f9abba2cbc612b847fff05af02565bf087b58a1f56c469119": { "5b1f9e14cae6cb5ea383b2df304915cf51bbb4912c0ef876391b03eed3ed3cbf": { "zh": { - "updatedAt": "2025-12-01T18:59:36.335Z" + "updatedAt": "2025-12-08T15:00:23.658Z", + "postProcessHash": "40b5d438173fb5a75d3de30a2c9b751e65797b9e94c30a9d89b7d7e32a39c495" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.335Z" + "updatedAt": "2025-12-08T15:00:23.659Z", + "postProcessHash": "7bd91f1edaf70752867aae8c73e4973c4369d9af880cedb7a822abefc659a728" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.338Z" + "updatedAt": "2025-12-08T15:00:23.689Z", + "postProcessHash": "8a61d17738d90e122dc418b7b820b806590cca10c0ef26ff31a8e157200079b0" }, "es": { - "updatedAt": "2025-12-01T18:59:36.339Z" + "updatedAt": "2025-12-08T15:00:23.690Z", + "postProcessHash": "de5160baa44294e6228ee379fa7ef4fdb3f31792a76036d37dd1e823bdb4eb1b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.349Z" + "updatedAt": "2025-12-08T15:00:23.724Z", + "postProcessHash": "494d6d0901d94614a12598f12934879ad5beb98af56a2aeb8c1c2873bce5b5be" } } }, "c3c84fb7e71c2dc321e8df06e7d9c60c15cdafa592fdc26bf0dca6538cc8fd5c": { "dca835b35c72bc153e918336c184ed82234fc2324782570fd62464ae0b8206e6": { "es": { - "updatedAt": "2025-12-01T18:59:36.319Z" + "updatedAt": "2025-12-08T15:00:23.662Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.320Z" + "updatedAt": "2025-12-08T15:00:23.662Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.320Z" + "updatedAt": "2025-12-08T15:00:23.663Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.326Z" + "updatedAt": "2025-12-08T15:00:23.679Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.328Z" + "updatedAt": "2025-12-08T15:00:23.681Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" } } }, "b49968678b651f4131fd1bec9495374ce582598cb5396d704b3ca4c1307af6a8": { "3313a9c14ea04c6073bfcf21d76d6705f73329bf8d9308a7d0158edd50ad125e": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.320Z" + "updatedAt": "2025-12-08T15:00:23.664Z", + "postProcessHash": "8583031a2955bda7f240515d57df8b7a2162045876c401111c106d6e8d34fd5d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.328Z" + "updatedAt": "2025-12-08T15:00:23.683Z", + "postProcessHash": "eb8c9d951ef6bd99d56f5d2d1046c8eb4fcaf62de0918fa82551fb45d3bfbf16" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.331Z" + "updatedAt": "2025-12-08T15:00:23.685Z", + "postProcessHash": "c1175166328aefa3747a49633208e5537504405ce8600bccac500dff80181c51" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.331Z" + "updatedAt": "2025-12-08T15:00:23.686Z", + "postProcessHash": "3313a9c14ea04c6073bfcf21d76d6705f73329bf8d9308a7d0158edd50ad125e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.332Z" + "updatedAt": "2025-12-08T15:00:23.687Z", + "postProcessHash": "3313a9c14ea04c6073bfcf21d76d6705f73329bf8d9308a7d0158edd50ad125e" } } }, "df2667d825fdc9c2200e5b6e8206b62f1e6db9258056ce02d9108ccdcb1a8a0c": { "6b3e05a416714f9e69bd03d8382bcd1ffd59e64d1b347749647a6b9e59bbcec4": { "es": { - "updatedAt": "2025-12-01T18:59:36.321Z" + "updatedAt": "2025-12-08T15:00:23.666Z", + "postProcessHash": "e81214ad2c6f474ffd1182f36fcee12590280b71731e545d4cdf18c4fbf76867" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.336Z" + "updatedAt": "2025-12-08T15:00:23.668Z", + "postProcessHash": "83f945b4a32d558482c5338fc42f0866e8106bb14014fac9a3fbf33260d5d329" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.336Z" + "updatedAt": "2025-12-08T15:00:23.668Z", + "postProcessHash": "4bfaf336a6248921977b4b6c160b836434d537f8d1c0607d920124cd8e22e1e6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.337Z" + "updatedAt": "2025-12-08T15:00:23.687Z", + "postProcessHash": "10d71a2648a0de683c3eb20b4552199b013a2b95e180e894db74983a3aae396e" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.339Z" + "updatedAt": "2025-12-08T15:00:23.690Z", + "postProcessHash": "e569b67a676860b9e4d8ea3da7654bba84042446a7b7b6fff505d69062636453" } } }, "ceb1baee1f52257207f738fbfe825fc150530c1760a8cb8e398356c40eac4133": { "1ae2084e8db19b4f096426c85487e12f59afd174ad140f6a3827cddfdeab7f9d": { "zh": { - "updatedAt": "2025-12-01T18:59:36.321Z" + "updatedAt": "2025-12-08T15:00:23.666Z", + "postProcessHash": "eadde069224aeb2f48de46a4316dfe9f99e2e1078c1df427777ff961e278afa0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.323Z" + "updatedAt": "2025-12-08T15:00:23.673Z", + "postProcessHash": "c0f777d28f57227c6a1355c0ac816ce6f099b9c763b873f2551e742260312573" }, "es": { - "updatedAt": "2025-12-01T18:59:36.325Z" + "updatedAt": "2025-12-08T15:00:23.676Z", + "postProcessHash": "a5da955013ad3a8728150e7e6707d7d8e5f879406ce2ec2345f1cc46171a1f35" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.326Z" + "updatedAt": "2025-12-08T15:00:23.678Z", + "postProcessHash": "052b05a80d18fc0e08cd5bba2a74fa72b12c09d8fbd7ba340c208d59fe35bd89" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.327Z" + "updatedAt": "2025-12-08T15:00:23.680Z", + "postProcessHash": "36ce886ccf76634d854b914dfbdec29243654ada96eed442892866947620c13f" } } }, "7c406addd77a66db7e505db11ce12717ac246e4bc2d84596b3c86e379120c791": { "c1c134feb78e1e9247445eed195baf52ab2b7485fbf55cbf7f4de27263ffc7dc": { "es": { - "updatedAt": "2025-12-01T18:59:36.325Z" + "updatedAt": "2025-12-08T15:00:23.677Z", + "postProcessHash": "befe41559f419577c6af7c89c829c2b7c77d17b7cb2b299e079363de47f0a70c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.328Z" + "updatedAt": "2025-12-08T15:00:23.682Z", + "postProcessHash": "61ade81a92f14229685464f68db688d25c2b080f2d1f80f5ba2da73c23497faa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.328Z" + "updatedAt": "2025-12-08T15:00:23.682Z", + "postProcessHash": "bbe3325ff9735cdc3211e131ac3bbd5b8614cc60460cc5a664d3ba30ce673148" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.329Z" + "updatedAt": "2025-12-08T15:00:23.684Z", + "postProcessHash": "ec5b6df3048e82846fb830d3759c1daafe8918c391000a79d1dd7dcccde6aa48" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.331Z" + "updatedAt": "2025-12-08T15:00:23.685Z", + "postProcessHash": "84a24757706e2bdeb489e40ed32396b79bce9a2935a4d2404087f1a18f59ed26" } } }, "cd6f7485b7605f6b18012525b41c1e877e9635cb5c507df0d0b8d05e6d2d78fc": { "f3a8d65470ba0e0fd05a56b7a448fd804ba6794c9c85d9ef1183d00053080a11": { "fr": { - "updatedAt": "2025-12-01T18:59:36.327Z" + "updatedAt": "2025-12-08T15:00:23.680Z", + "postProcessHash": "a8e35d94055a5cdc8061cd1eb3251d83ee2c55f7c74f76211e078f4e4de3c68d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.327Z" + "updatedAt": "2025-12-08T15:00:23.681Z", + "postProcessHash": "f3745bf4bea46e60c3ff2a2b51c392a3c60089de597b763228d6e29907a3e5aa" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.329Z" + "updatedAt": "2025-12-08T15:00:23.684Z", + "postProcessHash": "f39f35b72272b28b3354365927a2820f549d5708ee1e32bf492cd41599852bc7" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.332Z" + "updatedAt": "2025-12-08T15:00:23.707Z", + "postProcessHash": "7d33276dd9edb4e86bf543d4717e7ca8ef0d4bec0ce353250ec01d6f35b5081f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.333Z" + "updatedAt": "2025-12-08T15:00:23.757Z", + "postProcessHash": "409f6d8797926c2514b5f4074f282ef74f66fd7ef6b8bacf4942975a333e7503" } } }, "0238ab9fdf586c7a41b17069066face0474e84d1fb705fd9e1dafac2d9bfa5e0": { "347b6784c6774c3a5660e145fe697f1005c608138daca3b20bab723fdf0f5170": { "ja": { - "updatedAt": "2025-12-01T18:59:36.356Z" + "updatedAt": "2025-12-08T15:00:23.691Z", + "postProcessHash": "bc96ff746154311f4488e7e5877a201b5897b43fe25d9c72a8129a9c84f15108" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.357Z" + "updatedAt": "2025-12-08T15:00:23.692Z", + "postProcessHash": "03678f42b807baba7160e59ae64ef2dc73a53afaa21396064ad6789298c5c9c9" }, "es": { - "updatedAt": "2025-12-01T18:59:36.363Z" + "updatedAt": "2025-12-08T15:00:23.727Z", + "postProcessHash": "51d93169226c1074efaa5babbe1e582de557eb11361d5a0692436f8be5e2ded4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.371Z" + "updatedAt": "2025-12-08T15:00:23.756Z", + "postProcessHash": "1791c22a891e8c8c55173b6f48edd892fd507f4d172bb27beb632bfd4c76a1c9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.379Z" + "updatedAt": "2025-12-08T15:00:23.816Z", + "postProcessHash": "425fc825c1707ac6c9bd36ea64ea4a953730e40edb2ef8241c344bd22b4207ba" } } }, "c8089b80a47342cb76c0fd8952abfab0108328bab7e82d4523ec530345112803": { "fc51d65d73ce1f4db1ff7646715ad276a9e88925652700cfbcbd83288941d1cb": { "fr": { - "updatedAt": "2025-12-01T18:59:36.357Z" + "updatedAt": "2025-12-08T15:00:23.696Z", + "postProcessHash": "ebd94b0aad60f72ec76a4a88ebefb63e46107534f26ba1641f0c13d28f6cd393" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.358Z" + "updatedAt": "2025-12-08T15:00:23.697Z", + "postProcessHash": "ebd94b0aad60f72ec76a4a88ebefb63e46107534f26ba1641f0c13d28f6cd393" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.359Z" + "updatedAt": "2025-12-08T15:00:23.698Z", + "postProcessHash": "ebd94b0aad60f72ec76a4a88ebefb63e46107534f26ba1641f0c13d28f6cd393" }, "es": { - "updatedAt": "2025-12-01T18:59:36.372Z" + "updatedAt": "2025-12-08T15:00:23.758Z", + "postProcessHash": "658f8a5c41d1280e4682cf1d3f87fba88c4d65eef5081de58aca30a5abf8b7a3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.373Z" + "updatedAt": "2025-12-08T15:00:23.759Z", + "postProcessHash": "ebd94b0aad60f72ec76a4a88ebefb63e46107534f26ba1641f0c13d28f6cd393" } } }, "371369197d067597e90b58adc8053a9414a1379bc950d4f73dcb1e75a70fd141": { "581b0675900b629f79b74515c3cc385efa53b0e73d3506bc8aced870d5b451b0": { "es": { - "updatedAt": "2025-12-01T18:59:36.358Z" + "updatedAt": "2025-12-08T15:00:23.693Z", + "postProcessHash": "34bcfd4257886dd3bf3b48806775dee113d5bda41ab990ed52b24d839c5af2cf" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.369Z" + "updatedAt": "2025-12-08T15:00:23.744Z", + "postProcessHash": "fc1a9e8b08f56a641772263d1e79eb52b836afc62277db63235f648753503df1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.372Z" + "updatedAt": "2025-12-08T15:00:23.756Z", + "postProcessHash": "d2c1ff528ecffb4e3e52e3bd574c991900ea5492afdfc8b5ed43ae9bb516006b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.375Z" + "updatedAt": "2025-12-08T15:00:23.762Z", + "postProcessHash": "ca16ae7be1319162282dd5e5f76f9cff0705eaebd0e11c3cd3a0f8c3417a2b14" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.376Z" + "updatedAt": "2025-12-08T15:00:23.768Z", + "postProcessHash": "0e3064cc9f907deb25e950ffcf4929d11a68e228ee6b37aba9d3336992dc7be8" } } }, "0923da5667504c215d9ed8da7e50fb423078752fcfcd4c590cd18860146253cd": { "9c383abd2cefcd24a1cdab50cdbc64c6f40c9492bde95d3fdfefdce7a5aebd1a": { "zh": { - "updatedAt": "2025-12-01T18:59:36.359Z" + "updatedAt": "2025-12-08T15:00:23.698Z", + "postProcessHash": "32cd09984169439ad3bae6019092cfad0625859edfc6342d976644e88b9b35ca" }, "es": { - "updatedAt": "2025-12-01T18:59:36.363Z" + "updatedAt": "2025-12-08T15:00:23.728Z", + "postProcessHash": "09d565dd73b1c63be6beba346b8c02c061178da6f9b62e7117ffbd1d8e6e76b9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.364Z" + "updatedAt": "2025-12-08T15:00:23.730Z", + "postProcessHash": "4ded8adc109f685df68f57dbf6c3ff2b44cccc7cca26c9c6b90f569f91718e27" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.370Z" + "updatedAt": "2025-12-08T15:00:23.754Z", + "postProcessHash": "8e4dc5fbe3b46a0f5e8c611d21b9626a7ae4c256b0e1b08de270e4226ad3129d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.378Z" + "updatedAt": "2025-12-08T15:00:23.787Z", + "postProcessHash": "7ba29d2b2ed10a0d23d61e71c6ec64370e504ff7cd4d936e25bac4d3d07512f8" } } }, "a3e52b466bc6b49a9dd924a66545f2fab4d7758504b8065317e64c3099e82086": { "931abbdb79d54a0763cf1e36d9ff7f9412ed8ee73782f76a4e9c1f0f09af01ce": { "fr": { - "updatedAt": "2025-12-01T18:59:36.359Z" + "updatedAt": "2025-12-08T15:00:23.699Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.360Z" + "updatedAt": "2025-12-08T15:00:23.700Z", + "postProcessHash": "cb4cb32718637afb9c442c905d5a780757e9b78c8d1fb24191abebe22fe547cf" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.380Z" + "updatedAt": "2025-12-08T15:00:23.701Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.374Z" + "updatedAt": "2025-12-08T15:00:23.760Z", + "postProcessHash": "8a7ca8fd033f5d9970e23624a53524bbb082ced1988a69392c04862c77886d0d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.375Z" + "updatedAt": "2025-12-08T15:00:23.761Z", + "postProcessHash": "747ec5e0b29085f5bb8681b99ca9843582880c7243c0900fa931fb28115a3d11" } } }, "5ceadbe2fe801d8d178404bb0e79f1fc4221f1a67f61b5c8d1ec0d600e365ef1": { "f510aaf11368d1609eded908902eeef36902b71ca4b6084991323b18bdc76ed8": { "zh": { - "updatedAt": "2025-12-01T18:59:36.360Z" + "updatedAt": "2025-12-08T15:00:23.694Z", + "postProcessHash": "f48aa466ee06da294808d0e315c62d8e8485d976bbe5ad05306e7e93ca32a525" }, "es": { - "updatedAt": "2025-12-01T18:59:36.362Z" + "updatedAt": "2025-12-08T15:00:23.721Z", + "postProcessHash": "9e1f232d9ca28e54b5deafdfd3824c07a65fe0c3475e37bd7195354dcb9f3bb5" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.367Z" + "updatedAt": "2025-12-08T15:00:23.740Z", + "postProcessHash": "510c5c08cf6e4b42dc2b6fd2b30ad33d87ff48f4d66aa3fb83a1898bd1789db0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.368Z" + "updatedAt": "2025-12-08T15:00:23.741Z", + "postProcessHash": "1b4f0635a4b32906cd484cfde9e60c4678fc59ba993523b179b717ff6a36e355" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.369Z" + "updatedAt": "2025-12-08T15:00:23.744Z", + "postProcessHash": "2f74cc6ae00104a8d7470675dbb4ec044adfa9be95d0eb43fd958c03d55fa2f2" } } }, "b02845cc582e4bbde6dc16dfbc5a99fa5875c0e0cb82947c5093178df1b2e1a5": { "69505a12121d80fabfed25ca952374b0ea56ad172fe1a505c8040da894eeb8cb": { "fr": { - "updatedAt": "2025-12-01T18:59:36.339Z" + "updatedAt": "2025-12-08T15:00:23.694Z", + "postProcessHash": "b16a60264b134000cba8edacac2cc5264542215329a3012e1a1636f2e1e5f25d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.344Z" + "updatedAt": "2025-12-08T15:00:23.710Z", + "postProcessHash": "52b83dc28057c75501e637b59fc3044bfdc3c6de91f1ee4500331e775f63d87b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.345Z" + "updatedAt": "2025-12-08T15:00:23.711Z", + "postProcessHash": "b16a60264b134000cba8edacac2cc5264542215329a3012e1a1636f2e1e5f25d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.345Z" + "updatedAt": "2025-12-08T15:00:23.713Z", + "postProcessHash": "d1d55c845a08413cd14f1e2647ab73d0d575062c78c9722977f001bc1d09c99c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.346Z" + "updatedAt": "2025-12-08T15:00:23.713Z", + "postProcessHash": "319e1a85e165d64a71b091d5adda2b55e28e6f1178bb017040683d97a740c14e" } } }, "21abff6d2ca931acca18591d601dbf651ab5699b8bf74c88fa53be29e5e50b4b": { "11307952b0645f5422a775c43893f3d5e358652d76cdb06ea5c22b9ff103e838": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.340Z" + "updatedAt": "2025-12-08T15:00:23.702Z", + "postProcessHash": "136aef439991204c85a53175af08e1feb1155116344ac4e327e6ff1b3ed11c7f" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.341Z" + "updatedAt": "2025-12-08T15:00:23.703Z", + "postProcessHash": "6b7a897833758a28f578a62e16bbbd20ca5eb875b5df7b812a6952a14d0a6b5f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.346Z" + "updatedAt": "2025-12-08T15:00:23.714Z", + "postProcessHash": "4b104d50126f8b06a6a36786d64dc188bcc2cc1b662913535f425cc627db8ea2" }, "es": { - "updatedAt": "2025-12-01T18:59:36.346Z" + "updatedAt": "2025-12-08T15:00:23.715Z", + "postProcessHash": "03a3a5e5177c17d15f113a13d973f2a3e6c8249426206bd2d097b2ce206d1d40" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.347Z" + "updatedAt": "2025-12-08T15:00:23.715Z", + "postProcessHash": "bfa558a20908639b004fe340b3a0af2e327616e27d613dd61680ca3d3d8878a0" } } }, "aeb52c4306f91acd52a8875a023172efa6ab24e47d492bf75aa6316f2c68026d": { "68fbeac3689379d401d16cc785f9f094977ce6da2b50dc5704b6e37099c6cd04": { "fr": { - "updatedAt": "2025-12-01T18:59:36.342Z" + "updatedAt": "2025-12-08T15:00:23.705Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.343Z" + "updatedAt": "2025-12-08T15:00:23.708Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "es": { - "updatedAt": "2025-12-01T18:59:36.348Z" + "updatedAt": "2025-12-08T15:00:23.718Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.350Z" + "updatedAt": "2025-12-08T15:00:23.726Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.351Z" + "updatedAt": "2025-12-08T15:00:23.731Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" } } }, "9aed481548d52f99a1cf42de1de2c883365c413abe517247853d0d54b7d00efb": { "72b5bd00f671558b2d521b8159643c2000f87db814b87b94b963b4de2d165a08": { "fr": { - "updatedAt": "2025-12-01T18:59:36.342Z" + "updatedAt": "2025-12-08T15:00:23.705Z", + "postProcessHash": "42a8e86a3e10401e21012893f076111e3403101135318507b783d43745b3e38f" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.344Z" + "updatedAt": "2025-12-08T15:00:23.709Z", + "postProcessHash": "1d4d6f44f13aead8e7730342a5d37f40bb98c86e66e94760c75e8aab04e30914" }, "es": { - "updatedAt": "2025-12-01T18:59:36.349Z" + "updatedAt": "2025-12-08T15:00:23.724Z", + "postProcessHash": "1d4d6f44f13aead8e7730342a5d37f40bb98c86e66e94760c75e8aab04e30914" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.350Z" + "updatedAt": "2025-12-08T15:00:23.725Z", + "postProcessHash": "1d4d6f44f13aead8e7730342a5d37f40bb98c86e66e94760c75e8aab04e30914" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.352Z" + "updatedAt": "2025-12-08T15:00:23.732Z", + "postProcessHash": "1260d6229ac2418d41a17fcf620e2030e3fa123f45f7a6f7ef9a469c3344dd5e" } } }, "49432128560c77049536503803b5eea9230534fe3cc164aaae1b75934a8c7af7": { "4bf605856f47c89d69e03072e299bc6d38849ec11e26f01cb416cd98dc2ed9bd": { "ja": { - "updatedAt": "2025-12-01T18:59:36.343Z" + "updatedAt": "2025-12-08T15:00:23.706Z", + "postProcessHash": "0102d6f0a72b0a230dd5471dee7d2afe7b57c6b1b74307d7922c3ad97b4ecce3" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.344Z" + "updatedAt": "2025-12-08T15:00:23.708Z", + "postProcessHash": "0102d6f0a72b0a230dd5471dee7d2afe7b57c6b1b74307d7922c3ad97b4ecce3" }, "es": { - "updatedAt": "2025-12-01T18:59:36.347Z" + "updatedAt": "2025-12-08T15:00:23.717Z", + "postProcessHash": "0102d6f0a72b0a230dd5471dee7d2afe7b57c6b1b74307d7922c3ad97b4ecce3" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.351Z" + "updatedAt": "2025-12-08T15:00:23.732Z", + "postProcessHash": "0102d6f0a72b0a230dd5471dee7d2afe7b57c6b1b74307d7922c3ad97b4ecce3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.352Z" + "updatedAt": "2025-12-08T15:00:23.733Z", + "postProcessHash": "0102d6f0a72b0a230dd5471dee7d2afe7b57c6b1b74307d7922c3ad97b4ecce3" } } }, "94edced272f9451a64c59c38670e59c6ad3d262baecba4142261482a6435ac47": { "e506d8e01a23311baf45df9a02b42b69f0ea122a94a973a5c1945fe1f680c9da": { "es": { - "updatedAt": "2025-12-01T18:59:36.348Z" + "updatedAt": "2025-12-08T15:00:23.720Z", + "postProcessHash": "4b1788a99a213fdd0fb3514cd31a36b81dd4103fa76134cba8ab60b6de6566f0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.350Z" + "updatedAt": "2025-12-08T15:00:23.729Z", + "postProcessHash": "a1e1753b80a3fe54334a3b75eb6e25de1bea93b339b2d2e538e46fd05becf2bd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.352Z" + "updatedAt": "2025-12-08T15:00:23.735Z", + "postProcessHash": "f862289866d22e2fea7d94206a5c6a8176cbbdc005e5e459bd06e3cc587b1ef0" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.353Z" + "updatedAt": "2025-12-08T15:00:23.736Z", + "postProcessHash": "c294baa83705d0348cba435bf551a66ed759a9369f278d25188052899100974e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.353Z" + "updatedAt": "2025-12-08T15:00:23.755Z", + "postProcessHash": "f35176f35ca7ffa9f938bfd52dbc0fd78c02d6a8a85e8c50be65f0312b01093e" } } }, "67bd4c732b725701896cc2482372b60e3a81ce52a3b7e141b0d2d5c75501f661": { "3ddf6fd696eacd4dca723e148835bd0fac2e763f92d58e0494acbb1b0baa13df": { "fr": { - "updatedAt": "2025-12-01T18:59:36.353Z" + "updatedAt": "2025-12-08T15:00:23.768Z", + "postProcessHash": "0dd56b678022d3ec84fb87498e333310ffcf5fb554cd395c68607c7aac9061b7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.354Z" + "updatedAt": "2025-12-08T15:00:23.841Z", + "postProcessHash": "c558d6ab8597bf1fd1a007eeec8aa1670ecb4ce761aebde1ba615ffcd920b0b7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.354Z" + "updatedAt": "2025-12-08T15:00:23.841Z", + "postProcessHash": "804ce9f0979df94c318b367e964499707f7a00e38f25a5aa5f8b1b5082208584" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.354Z" + "updatedAt": "2025-12-08T15:00:23.842Z", + "postProcessHash": "c2e264adf8c0e0d0082c5b03468a1125362dafa38d41c070178b2fc5128e006a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.355Z" + "updatedAt": "2025-12-08T15:00:23.842Z", + "postProcessHash": "318b1922daeb110726378a45e4caeccdd7d7f56ceee2d3466278c96f2212e103" } } }, "e6aa34c6fa344c219ddd8190a341e46e933f4c8d47910ec53c7a1c522815b653": { "581b0675900b629f79b74515c3cc385efa53b0e73d3506bc8aced870d5b451b0": { "es": { - "updatedAt": "2025-12-01T18:59:36.361Z" + "updatedAt": "2025-12-08T15:00:23.701Z", + "postProcessHash": "34bcfd4257886dd3bf3b48806775dee113d5bda41ab990ed52b24d839c5af2cf" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.376Z" + "updatedAt": "2025-12-08T15:00:23.766Z", + "postProcessHash": "8588f454c87df1e2f5ce4a3ccc1f72cefaf84ba41ecd2c2bb704672346dfa0bd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.377Z" + "updatedAt": "2025-12-08T15:00:23.773Z", + "postProcessHash": "13bf46c7c9a40c1225334160ad1f56c2de8f4499cae7a0794347da3afeafab63" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.378Z" + "updatedAt": "2025-12-08T15:00:23.776Z", + "postProcessHash": "fc1a9e8b08f56a641772263d1e79eb52b836afc62277db63235f648753503df1" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.378Z" + "updatedAt": "2025-12-08T15:00:23.799Z", + "postProcessHash": "4415b4656da0c5d91660f1a42d05b57deebb0dfc8bf1844f5131b09fe1f3e3a0" } } }, "18797d75c77ed44f3c5ec78018b66592e4bd210756afd64f9a7987509d787e7f": { "68fbeac3689379d401d16cc785f9f094977ce6da2b50dc5704b6e37099c6cd04": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.361Z" + "updatedAt": "2025-12-08T15:00:23.719Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.362Z" + "updatedAt": "2025-12-08T15:00:23.720Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "es": { - "updatedAt": "2025-12-01T18:59:36.364Z" + "updatedAt": "2025-12-08T15:00:23.733Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.365Z" + "updatedAt": "2025-12-08T15:00:23.734Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.365Z" + "updatedAt": "2025-12-08T15:00:23.737Z", + "postProcessHash": "60124cd3065d1fb0815d5cd28ce85770d0394959fbdc62a18565a0ccc036ef56" } } }, "64680d2e6f40d41304e02c942f6903c66d3fc068b11118f2b2b380a5ec0ab181": { "16abd9d0f2d6dbbe1b98eab0dee7fbf10bb60322c3d3184cd456ab8ad749100f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.363Z" + "updatedAt": "2025-12-08T15:00:23.726Z", + "postProcessHash": "eb8f6b47701e9164f1ad2c92872c25b7cb36272b00f8e03d6b48488b9d409898" }, "es": { - "updatedAt": "2025-12-01T18:59:36.367Z" + "updatedAt": "2025-12-08T15:00:23.739Z", + "postProcessHash": "82f0483ee30d988c382d11a735adec170b9a16f3ec2927d02984c76837ae413e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.370Z" + "updatedAt": "2025-12-08T15:00:23.745Z", + "postProcessHash": "5b55acd880fceb4457658d00e0603f1182668ef2209378663aa388fb3b6fa9b0" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.371Z" + "updatedAt": "2025-12-08T15:00:23.754Z", + "postProcessHash": "ff144ece6820ed29c6754d178108c2d3f6c1d219f18813ad3af725328a09b569" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.371Z" + "updatedAt": "2025-12-08T15:00:23.755Z", + "postProcessHash": "37c38e6b569dd331a776a2de53bb6ee76a16e3b0867455fc41e7efb55c8b01f7" } } }, "7b332389e0548918ef5d48701fc9a65e140cc65e8c81d7821a5d8159ac5eeb56": { "efa2588a2a6cfe0dcb55b4dfcdd8fbb244a3aaaeb47177f52ce7c56239114453": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.363Z" + "updatedAt": "2025-12-08T15:00:23.727Z", + "postProcessHash": "6c97c74ca3cdd743ee19c869d1c6ff94732cb72721ff92b537c5146e606b22f3" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.364Z" + "updatedAt": "2025-12-08T15:00:23.729Z", + "postProcessHash": "fbab4c01815a3d74375330af5f453160d76ff731b37ed51e3469c317f71653a4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.370Z" + "updatedAt": "2025-12-08T15:00:23.753Z", + "postProcessHash": "4cb15fd9ab033aea9d7310f4f2da1e6b94d59d02552cb934ecac7ed73d8dcd5f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.374Z" + "updatedAt": "2025-12-08T15:00:23.760Z", + "postProcessHash": "770bb49e1aba84f76fcb264f4850fb90c8f78235ba944088b8b9365db98a1576" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.379Z" + "updatedAt": "2025-12-08T15:00:23.800Z", + "postProcessHash": "c78bd7532e79c51c13d8554c3aaeba0e35cd056f743f5cd93543652f51abec49" } } }, "e40889d1586bd702a5d0a1cbef0f9a0873f005029853dd8f219a7a12d3f0546d": { "d2f4611ed9565627551b15c1f07e5b996c169187ca61f84c2588a4c8885ab58f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.364Z" + "updatedAt": "2025-12-08T15:00:23.730Z", + "postProcessHash": "0bb09915f85090521d7355be2840c415aa282a3ae868ea86c4bc10a91915bb2e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.372Z" + "updatedAt": "2025-12-08T15:00:23.758Z", + "postProcessHash": "0bb09915f85090521d7355be2840c415aa282a3ae868ea86c4bc10a91915bb2e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.373Z" + "updatedAt": "2025-12-08T15:00:23.759Z", + "postProcessHash": "3c687c91b6236cd62383d5ad01b23f4924d74809cd274a33f34b5a2bc6be4d8c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.376Z" + "updatedAt": "2025-12-08T15:00:23.770Z", + "postProcessHash": "66c20e687fcb8fdae4dfcd1758393e46129b7ee65b0fdb99c12246e892561ed7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.377Z" + "updatedAt": "2025-12-08T15:00:23.770Z", + "postProcessHash": "0bb09915f85090521d7355be2840c415aa282a3ae868ea86c4bc10a91915bb2e" } } }, "7c7146ea574c25f2e27fe70c5b4414cf68f17f96d37b06450d9c074d89232bb7": { "b2d3b49225ef625b73ff489c9edb825df49b969070092b3e6b46e44fc0b09450": { "ja": { - "updatedAt": "2025-12-01T18:59:36.365Z" + "updatedAt": "2025-12-08T15:00:23.734Z", + "postProcessHash": "0644c51e2d1ac4865909059d7f7223dc0e285d10048703ab9974f599cdd476fe" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.365Z" + "updatedAt": "2025-12-08T15:00:23.736Z", + "postProcessHash": "112f81ac2651fb34caf3767019818b0a2f3fa033e62adf03993cb38f593011ec" }, "es": { - "updatedAt": "2025-12-01T18:59:36.366Z" + "updatedAt": "2025-12-08T15:00:23.737Z", + "postProcessHash": "112f81ac2651fb34caf3767019818b0a2f3fa033e62adf03993cb38f593011ec" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.366Z" + "updatedAt": "2025-12-08T15:00:23.738Z", + "postProcessHash": "43e984bbbc1f58645d611dfc4a21d7144e25d6f4a50ad14027781d8c40191635" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.366Z" + "updatedAt": "2025-12-08T15:00:23.738Z", + "postProcessHash": "6f64e7b45fd1e345930209c5a4b2495b44e34ddb93a06ca657fa755e9591d3ee" } } }, "03794f55c823c05a131a4c066a18fb8ef8f23bf2d02656eb0b9b93d45fbe947e": { "b2ee8165fb3e9a4c54c92c0b1cc119ab88112a4cf966355b0509d6dcc6b375ff": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.367Z" + "updatedAt": "2025-12-08T15:00:23.739Z", + "postProcessHash": "9b949376b67a27bdab861e7784387ce0db223e5a371adb42a98d85ffb4c1b8d3" }, "es": { - "updatedAt": "2025-12-01T18:59:36.368Z" + "updatedAt": "2025-12-08T15:00:23.741Z", + "postProcessHash": "9b949376b67a27bdab861e7784387ce0db223e5a371adb42a98d85ffb4c1b8d3" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.368Z" + "updatedAt": "2025-12-08T15:00:23.742Z", + "postProcessHash": "b75885a049a721f19fd65582fbdbf36709bc76c4255981d1a90836d822e67e4d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.368Z" + "updatedAt": "2025-12-08T15:00:23.743Z", + "postProcessHash": "bfbc694013c2ff1a8c926061c5dca19455f0ea0e17b770aec7c057179e2666bc" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.369Z" + "updatedAt": "2025-12-08T15:00:23.743Z", + "postProcessHash": "af25b492f20d59e10795d8fa48be39bba0dacac334e569807cd3135f92a82ac9" } } }, "906402f4bf31ada76d7de9d3347404aed2f056463636966f3b3818a081bcdc65": { "b377e08c686996aa8e5877ebb31402eceeea58ff6fb75f2e6212985234bea5be": { "zh": { - "updatedAt": "2025-12-01T18:59:36.380Z" + "updatedAt": "2025-12-08T15:00:23.762Z", + "postProcessHash": "ddb83b945ee08244ef0a1ec39f0769c4dc9d9f64b48dc50812a27de993f145be" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.381Z" + "updatedAt": "2025-12-08T15:00:23.763Z", + "postProcessHash": "a699c1b5ab515b25d54b728c303286499ce1dd05cf63eca285f55ae80eb3e2e1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.389Z" + "updatedAt": "2025-12-08T15:00:23.789Z", + "postProcessHash": "19850e0bea61c21367f0af1ff687a0ea549666fac8c3a90e406c64bc27b579a0" }, "es": { - "updatedAt": "2025-12-01T18:59:36.394Z" + "updatedAt": "2025-12-08T15:00:23.798Z", + "postProcessHash": "1421894415eaf3eec20b0f4d5cf40d57572d2e3127b6eafc71c42f6ae6746599" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.395Z" + "updatedAt": "2025-12-08T15:00:23.805Z", + "postProcessHash": "00192c4d9bd4d2c4e29a94e00db120dc14b3983ced752832bac72b88d5c261dd" } } }, "6c2abff207290eb4745d9467bb62347955c3605742379d4a940b9dbd8024f3b5": { "6c54fb71e163e6b022d7e27b17b163ef968f516ebf2c73fb48bdc98387abd74f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.381Z" + "updatedAt": "2025-12-08T15:00:23.764Z", + "postProcessHash": "1db645d1dcfaee5356f4f4137164a8a077a41c51ee41f9bbbe8b688ae11d918b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.382Z" + "updatedAt": "2025-12-08T15:00:23.765Z", + "postProcessHash": "3bae36e726f8f3c75bb07bc4ab845d2d20c12f668c0afa5b9fa0e68b9f138127" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.386Z" + "updatedAt": "2025-12-08T15:00:23.776Z", + "postProcessHash": "08c2dfb7c083b7512ca0d415c9fa4191519a3c47dfa44d0fdf818c42c93bad04" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.387Z" + "updatedAt": "2025-12-08T15:00:23.778Z", + "postProcessHash": "9879a1fcdfb0b83af5b042de49ea3b2edb6494ccffad471f50f3c462e7f06e8b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.392Z" + "updatedAt": "2025-12-08T15:00:23.797Z", + "postProcessHash": "62ea36455f30575b04a5f7fecb77203069a967518b5ba6e5bd06133f82b22a13" } } }, "b7af8b9e76f7c7a62cabd0dcc4d2ee5e1dc295c9dbc294fad879d763c181c0f5": { "3012e82faa3874fc3bde205b6da3b774249f383b8cb1af1fcb5627edc2c8494d": { "es": { - "updatedAt": "2025-12-01T18:59:36.382Z" + "updatedAt": "2025-12-08T15:00:23.766Z", + "postProcessHash": "ea6aad6e7719a407dcf3042ea2718f83511cc51d921c89c15e370201e970dfbd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.384Z" + "updatedAt": "2025-12-08T15:00:23.773Z", + "postProcessHash": "8b6bf8814eac75daffc2899c498aa813474f2c7da54261cefdaeb5e55a44643d" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.385Z" + "updatedAt": "2025-12-08T15:00:23.774Z", + "postProcessHash": "600be10455b4779eb36ecfe29057ad8f1b27727afebf89ffa3dbf0b48e05bd8a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.385Z" + "updatedAt": "2025-12-08T15:00:23.775Z", + "postProcessHash": "7d16768e454aa199510e6ab21773e6eb9341fc1e987b01b802e3c05ce9681f7c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.386Z" + "updatedAt": "2025-12-08T15:00:23.777Z", + "postProcessHash": "806eb96dbecf1a0df022ba9857ceef19b40ae914d2e5594a5833db49c6866f7f" } } }, "3f53831feb013a5fd0068d90c84822e87b506b091bde7aff9912d13249e5b48a": { "218a967b0c2c3a23809d42ed73dcf5694a016b45d8ceeee42ce35cd3f8826843": { "fr": { - "updatedAt": "2025-12-01T18:59:36.382Z" + "updatedAt": "2025-12-08T15:00:23.767Z", + "postProcessHash": "5cd22d725e582e151daac8d1a23e5e282993782b6c5bdca7edd69bd5e5b7f564" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.383Z" + "updatedAt": "2025-12-08T15:00:23.767Z", + "postProcessHash": "9c87d9986d25db287efde4deea2bc66f49124751ca7057f7a4f053746ef8b666" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.383Z" + "updatedAt": "2025-12-08T15:00:23.769Z", + "postProcessHash": "dd8f7333f215d05c941642b975b2009cc39ce2ffd09735d74f201c25eed89c4b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.390Z" + "updatedAt": "2025-12-08T15:00:23.790Z", + "postProcessHash": "efa14490702dd0d99ef13d5469f8cbc0a72b8d919c007c70835704ceccbe045e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.390Z" + "updatedAt": "2025-12-08T15:00:23.792Z", + "postProcessHash": "986fe19c2b045eeb0fb5d921c58d5b64a176d1f9cf4db48d42703cc0fb25a5c0" } } }, "119758ecbc8e872b6034384cbdd7fa7dbdfe8d9c3ea2030383b06126045d478b": { "842e4260c55a14cb77cdda18baddb1874551b141eb89a5f94cccaed28da6ae43": { "fr": { - "updatedAt": "2025-12-01T18:59:36.384Z" + "updatedAt": "2025-12-08T15:00:23.771Z", + "postProcessHash": "d3383d861ceccd54eb531f3d099d0993a1e7021633f539abcf19d5a2d9611d2c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.386Z" + "updatedAt": "2025-12-08T15:00:23.776Z", + "postProcessHash": "306c37cdadf5a9e5b7665a1b3cc4ad0f96f8eeafaa4244fe4a93863fdf4c9513" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.387Z" + "updatedAt": "2025-12-08T15:00:23.778Z", + "postProcessHash": "82c8bc55e8f01fa750c4d47108800ad776781a1cbe0445f37ea538b5199f0afe" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.390Z" + "updatedAt": "2025-12-08T15:00:23.792Z", + "postProcessHash": "5ff5e68fb2edc0cfcb7e6af7ebb4f891b0a5a32b765081b12b5dd92d04a5431c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.392Z" + "updatedAt": "2025-12-08T15:00:23.797Z", + "postProcessHash": "9f4fcd683343bc06e02d7bed25def8e536c22652d98dfa211f41f5c4ad8995bf" } } }, "a36b020aff41b7dcf7d76527fb077007098e9ebd22d09296d4dc09d5bf4daef2": { "700fc5b74da56109a4a9cd05aa35547828930f0f1cb6ffbfb49b282d60f18588": { "fr": { - "updatedAt": "2025-12-01T18:59:36.384Z" + "updatedAt": "2025-12-08T15:00:23.772Z", + "postProcessHash": "baa476f7ef368062fffb3f6c4bb11338f260b099126dfe97b33c9d40f337b34b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.391Z" + "updatedAt": "2025-12-08T15:00:23.794Z", + "postProcessHash": "51fb4ab507d2cc1c0729f1e84bd7b8f4288455fbab2ff78e0e6b30e980c27120" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.391Z" + "updatedAt": "2025-12-08T15:00:23.795Z", + "postProcessHash": "b1f93556c0edb98948692e244ff53fbe0279f6c2fb5fc95a83e92eafea2753d3" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.391Z" + "updatedAt": "2025-12-08T15:00:23.796Z", + "postProcessHash": "a6d7afa08d0adf8bf91ed48b6928eb242686e89a18237c584ed097ddad2f7cb2" }, "es": { - "updatedAt": "2025-12-01T18:59:36.398Z" + "updatedAt": "2025-12-08T15:00:23.820Z", + "postProcessHash": "8bd7ccff684769c37c19a6a06493b8a21c6ff5017823db2837f4ed5bb126d2ee" } } }, "155fa8e5be832403caffe96e1f4268a520420d4d4b722b369e98fe2d7f7f35ae": { "1dbd22030ee74c6e2f046e4f540b1843c72230fdffaf730e78b8b618a4c37d36": { "ja": { - "updatedAt": "2025-12-01T18:59:36.387Z" + "updatedAt": "2025-12-08T15:00:23.779Z", + "postProcessHash": "96ecf9fe427e8d5e281a790b55f8451518a46f1bdd265d6f3735e92d2c4a1836" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.388Z" + "updatedAt": "2025-12-08T15:00:23.779Z", + "postProcessHash": "a73e2a47239e42de15731409ab3b095ac86d18af8a843bf650b952d322186bec" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.389Z" + "updatedAt": "2025-12-08T15:00:23.787Z", + "postProcessHash": "38c4650086bd68c997979fd5fbf63f0b879066f9c0a4151f6384489309ce5274" }, "es": { - "updatedAt": "2025-12-01T18:59:36.399Z" + "updatedAt": "2025-12-08T15:00:23.822Z", + "postProcessHash": "31c4a213f9d3a6e539a4148b5d444977812e59e1d800da5b51a9761bcac4c64a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.400Z" + "updatedAt": "2025-12-08T15:00:23.828Z", + "postProcessHash": "a01ec34a064726447a5160f6362a5d96e45d955104d3978ba599fba4b23340bb" } } }, "8df76792a332223c3bd710317fc1fa13fc1678bc85568fd418fd913fd3b9fdc5": { "80f1ab00f742014a801f53e6ccbc03b1c0e2084b4713531375a818201b346634": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.388Z" + "updatedAt": "2025-12-08T15:00:23.780Z", + "postProcessHash": "69203e7b5311443b275ad130b9c4d45d0a57301d001bf3d7f84707343cc549b3" }, "es": { - "updatedAt": "2025-12-01T18:59:36.396Z" + "updatedAt": "2025-12-08T15:00:23.807Z", + "postProcessHash": "61859a44bdcd574f5de4d170ffe8f81320c02b5f0729cf5db09a2927df273490" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.397Z" + "updatedAt": "2025-12-08T15:00:23.817Z", + "postProcessHash": "634cd9629e24dfdb5915e16eeb0230dca35b9c28718cc70c3cd4cd7390c59625" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.398Z" + "updatedAt": "2025-12-08T15:00:23.822Z", + "postProcessHash": "bd05a32f0cbafe9d315e3356f60ae652434b0522523447f837f6db8f21913268" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.400Z" + "updatedAt": "2025-12-08T15:00:23.831Z", + "postProcessHash": "7e1102b2a17605f9cf72baac6218902952f94d1ee293c477dc25a93eda2bb988" } } }, "2b7160d64a12c2c9e4f68923fe8ed7962989e335192422a5b2d77b84ffa81a04": { "a02abcf3f98239aff8c140cb37c232c015c1d46933de77678b3f8ea11e1d54fc": { "ja": { - "updatedAt": "2025-12-01T18:59:36.389Z" + "updatedAt": "2025-12-08T15:00:23.788Z", + "postProcessHash": "f30d06b77e92aaffc6c372f525a0565e76d560fd17ce9b969e8e910f08760bcf" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.396Z" + "updatedAt": "2025-12-08T15:00:23.808Z", + "postProcessHash": "02e07b39838ac81e869c7f2fb2b83b3501948d02f7d6e3336d3c4bd6a9307d97" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.397Z" + "updatedAt": "2025-12-08T15:00:23.817Z", + "postProcessHash": "7e19a81a60c6c12f0be1f8508b84e2a0902139369498ca3495e834ba6b77b5f5" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.400Z" + "updatedAt": "2025-12-08T15:00:23.829Z", + "postProcessHash": "8afad5fe94bfdf2d9da36c8e9a9bd45f7e1cf608849b98fe79f9b39984f6a71a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.401Z" + "updatedAt": "2025-12-08T15:00:23.844Z", + "postProcessHash": "4ff451214fa21106635032be803a2ed69a63dbc02abf3f19c738d3063771b798" } } }, "78f627210090b03cefef67207d3e11bb52b210300e823488431dad4d2a87e9ca": { "db2c000384174b774317193479be8845a0b87e2f8199f79420bfaf384b12ef80": { "es": { - "updatedAt": "2025-12-01T18:59:36.403Z" + "updatedAt": "2025-12-08T15:00:23.791Z", + "postProcessHash": "256194841e06f96548b43ee3097f6e851911b905be885d056ae49c66ad85c60d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.407Z" + "updatedAt": "2025-12-08T15:00:23.818Z", + "postProcessHash": "4ff50c2a84f16e4724c2472d0118e163b398c961683b9156b1ac92773534c9c7" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.408Z" + "updatedAt": "2025-12-08T15:00:23.820Z", + "postProcessHash": "ea69902e24634d73c60d5f2f30298e4af5be2593ad135267f09c6c0a976fa229" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.410Z" + "updatedAt": "2025-12-08T15:00:23.829Z", + "postProcessHash": "61471c7d579da599b7cfc7d473b8de431e1817fe13a4e414d661d9d61e8cdf7d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.424Z" + "updatedAt": "2025-12-08T15:00:23.889Z", + "postProcessHash": "3b4a2902208e90a8287f21edcc18aa7cb756d74d987ff380b8c1cd6ba6ec6c94" } } }, "c32c7487cf48b21a3c730f4063206deda3a82e1ddfa5eb05c0440a6fd0e6052d": { "2f22fd0241aaa6d1d20c9d1d2aa093e1e977a49591602ff9ad370db4bd811984": { "fr": { - "updatedAt": "2025-12-01T18:59:36.390Z" + "updatedAt": "2025-12-08T15:00:23.793Z", + "postProcessHash": "057c6065f580741aaba0204871c98f2346dd2361c338394544ea8373ff0055ad" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.391Z" + "updatedAt": "2025-12-08T15:00:23.794Z", + "postProcessHash": "be9b0e5304dfae0bf48302a576d0c017def8ba049ffafc71a560d54d4c220625" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.394Z" + "updatedAt": "2025-12-08T15:00:23.801Z", + "postProcessHash": "97c3dbef855bca6ed8b63a8a1b5ee7f6aedd734cd12ece0ca7ff9a2baf7c89c0" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.398Z" + "updatedAt": "2025-12-08T15:00:23.821Z", + "postProcessHash": "a3d5d34ec899e0b3ae2ddf3f3c6378f9bc13111b8c86f37f450e01dfd4c5fc65" }, "es": { - "updatedAt": "2025-12-01T18:59:36.401Z" + "updatedAt": "2025-12-08T15:00:23.849Z", + "postProcessHash": "31f4f3bc353e4dcaae6304880827dde24e3734de1bc7b0e4c7250539bb52df92" } } }, "ba7d165c24e72b037deeda79bb300b32c063eb47c3cfc58dcb6f803f16353c3b": { "1ea7d08fab1b02bedab07fc8bcf4fc31dd03e45a9969287fb48bf99d9523fb9b": { "zh": { - "updatedAt": "2025-12-01T18:59:36.394Z" + "updatedAt": "2025-12-08T15:00:23.799Z", + "postProcessHash": "910883835fa1aa9302ce0e529244d62336e459e5e8ce227325a1df7cd0df52a3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.395Z" + "updatedAt": "2025-12-08T15:00:23.804Z", + "postProcessHash": "5872b1c4c423eae1749ae74096ec7cd272d627f4706e550319efb7a76193bfbb" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.397Z" + "updatedAt": "2025-12-08T15:00:23.811Z", + "postProcessHash": "c5acee740269a5b34ef7c5aebe68395a99e16718acd9d609e33d31e5e63fea48" }, "es": { - "updatedAt": "2025-12-01T18:59:36.399Z" + "updatedAt": "2025-12-08T15:00:23.825Z", + "postProcessHash": "2681c96ffd8ce676b7e37da3b74e5563bbd8a9f860b91cfc13b210162aac7e24" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.401Z" + "updatedAt": "2025-12-08T15:00:23.854Z", + "postProcessHash": "80115237d51a5158029e0bf33f97ded9ac92315b594e6062400307b705bebc37" } } }, "0840f7697c964d04b6c20a62911bbc4ceeb7dbde1cbdedce4429f85df806bb89": { "6defd80b57f9211e26364d0e4d9c5f144dd4c71691e0a92306a9d4d621b6acf8": { "ja": { - "updatedAt": "2025-12-01T18:59:36.395Z" + "updatedAt": "2025-12-08T15:00:23.802Z", + "postProcessHash": "4033d124a77619347f9ab4ac10abf65e95aa7a365eac1aa44ef3e29b44a8acd2" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.403Z" + "updatedAt": "2025-12-08T15:00:23.803Z", + "postProcessHash": "4033d124a77619347f9ab4ac10abf65e95aa7a365eac1aa44ef3e29b44a8acd2" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.399Z" + "updatedAt": "2025-12-08T15:00:23.825Z", + "postProcessHash": "4033d124a77619347f9ab4ac10abf65e95aa7a365eac1aa44ef3e29b44a8acd2" }, "es": { - "updatedAt": "2025-12-01T18:59:36.401Z" + "updatedAt": "2025-12-08T15:00:23.862Z", + "postProcessHash": "4033d124a77619347f9ab4ac10abf65e95aa7a365eac1aa44ef3e29b44a8acd2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.408Z" + "updatedAt": "2025-12-08T15:00:23.821Z", + "postProcessHash": "4033d124a77619347f9ab4ac10abf65e95aa7a365eac1aa44ef3e29b44a8acd2" } } }, "9091180ae9fb861c3d357831f33d1a7a4dcd9fb2efd04c0ef5f50fa3804ed26e": { "58e30382903f1a7888482009cea224d406bbb5f95806838338950ab596dd6a0d": { "ja": { - "updatedAt": "2025-12-01T18:59:36.403Z" + "updatedAt": "2025-12-08T15:00:23.806Z", + "postProcessHash": "dcb776b9ee0ce91bece6ca38c49fdccf45a4d5a30f299d72671350dec2d797a9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.404Z" + "updatedAt": "2025-12-08T15:00:23.807Z", + "postProcessHash": "758f431cabecbd88ba971566dded69232c0f1251ead672f6603a4e83dcb6dfe2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.408Z" + "updatedAt": "2025-12-08T15:00:23.823Z", + "postProcessHash": "4f9d176d9c3f1dd82839cf4850635152a36878cf8dc5bceef2cee456c050379c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.409Z" + "updatedAt": "2025-12-08T15:00:23.824Z", + "postProcessHash": "7123613a45af0d7216bd4edd33b60c04b6eeff2ec437bfa422c26685bc3e839a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.419Z" + "updatedAt": "2025-12-08T15:00:23.853Z", + "postProcessHash": "d193ccd76452e366a216298fab88221926fa12dae37c1ac81c942c3b4c0d85de" } } }, "a7488f74c4407d02a0fe3fa6e9b9e8213b06574e4701cb76e4609defc0574360": { "bf2e127859daa6667b2913a59a4fcaa1db88a5077eb3589d152e8250d4df9cd1": { "zh": { - "updatedAt": "2025-12-01T18:59:36.404Z" + "updatedAt": "2025-12-08T15:00:23.809Z", + "postProcessHash": "a2cc61c1d96cddccf56c5a42c241ef33b79c19137bf1a04e0c5413f061979e4a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.411Z" + "updatedAt": "2025-12-08T15:00:23.830Z", + "postProcessHash": "52240f4d062ea9461aa7e459f03aca6572f491996bdb053808d968347a2e9ac2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.412Z" + "updatedAt": "2025-12-08T15:00:23.833Z", + "postProcessHash": "5a3a55adf97ad02604970e9ab4f4ce88a9c00d1c5a5b887953581763fd1f78af" }, "es": { - "updatedAt": "2025-12-01T18:59:36.417Z" + "updatedAt": "2025-12-08T15:00:23.847Z", + "postProcessHash": "d220bc2d4598d9576c12956f988bda7746c3e468cc43cd499dcfb8eed19b5128" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.420Z" + "updatedAt": "2025-12-08T15:00:23.855Z", + "postProcessHash": "27d1afd2b539fd2adc8b3d9ceaba7acdf2da5609523c230f248f0bcbb52f9c46" } } }, "973c64813b196e557d2d07e933311214c8883fbb3a68aa5181f8ae31ada51af9": { "4d9143e8b1b2464b6c299c1c6a503207e9b9a2b2f366c192294fa89548493ef0": { "es": { - "updatedAt": "2025-12-01T18:59:36.404Z" + "updatedAt": "2025-12-08T15:00:23.809Z", + "postProcessHash": "1b141d6df70c603d0bda2bd9e9d76dc7e91fe9c6acd0db94d4c2e05ed04c20e4" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.405Z" + "updatedAt": "2025-12-08T15:00:23.813Z", + "postProcessHash": "0c2d0697171eaf22387fe5b43a1cd4c60e491df0962956901a8cde713801ac9b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.407Z" + "updatedAt": "2025-12-08T15:00:23.818Z", + "postProcessHash": "0c2d0697171eaf22387fe5b43a1cd4c60e491df0962956901a8cde713801ac9b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.408Z" + "updatedAt": "2025-12-08T15:00:23.819Z", + "postProcessHash": "c007f5445cb1de2e628ee777dfc7f1f86bdd44da9cf3b7bf1bd103557c0f2192" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.419Z" + "updatedAt": "2025-12-08T15:00:23.851Z", + "postProcessHash": "980e3c94f340d695afbf4ce144db87d41caecac34f3f7a5bd1f85784ed441fc3" } } }, "3e58ffe8693211efefc9129b89257e9143cef9ed3e5972cffa48d10312dee7ed": { "909aba143de4c22448d96b66b49b0f7508cec11027ef78912628c1301929c983": { "es": { - "updatedAt": "2025-12-01T18:59:36.405Z" + "updatedAt": "2025-12-08T15:00:23.810Z", + "postProcessHash": "fdf63d38636434919af92deb01cf6a1c58333a71fb3777e92af00d24bae0d42d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.405Z" + "updatedAt": "2025-12-08T15:00:23.812Z", + "postProcessHash": "2ab8b5c236551bd442bb8f317a969504538cc10d766bb4874197925db0b9f7dc" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.406Z" + "updatedAt": "2025-12-08T15:00:23.815Z", + "postProcessHash": "75acb8063bedae2684f60c80c8fa5b927292ac61544584d7e73afaf19e3cd25b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.420Z" + "updatedAt": "2025-12-08T15:00:23.857Z", + "postProcessHash": "60ad79ae3357ab333652afc4fc3e87eebdb9a4cbf5c12503b36e909a96209c2b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.423Z" + "updatedAt": "2025-12-08T15:00:23.874Z", + "postProcessHash": "2858de571ca676191e554c02738e69d99280458255d816973fdcd2e972981b63" } } }, "ce9cfab9d1e57ce1e2dbb0e1e3eb33d60504a647d9e90abda1acb5b3f734f581": { "292d3104eb86713ce81cb81e5d66d4ad7d2659325233a79d1883b8d4269676ec": { "es": { - "updatedAt": "2025-12-01T18:59:36.406Z" + "updatedAt": "2025-12-08T15:00:23.814Z", + "postProcessHash": "f48cbe42e739ff716ddaddc123eac46b949c6f1bca5454b0099a183d2ce8fbf0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.411Z" + "updatedAt": "2025-12-08T15:00:23.832Z", + "postProcessHash": "fa440a2cb5c2798215a30a9d6d92f7ee2c64b307f51f24b09cb41529c95902ff" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.412Z" + "updatedAt": "2025-12-08T15:00:23.832Z", + "postProcessHash": "3e665fad346c32f944d93cd4508cb436463cdf2c7582b0dbbdf86ec2f5e35b1f" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.413Z" + "updatedAt": "2025-12-08T15:00:23.836Z", + "postProcessHash": "cfda266823a99592eed9341131e4daec3adafd2ec378fc016bd602744156e205" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.421Z" + "updatedAt": "2025-12-08T15:00:23.860Z", + "postProcessHash": "bea53f7803e9cdc6cc0cbca5c3eb4aa5e0d5517c537a4252ff04e65da399bb93" } } }, "cde4641e7c76223777f5bc04c2413bd1cf1cee1e1d3873367c086c232c44038a": { "d00c6a724384135cb42e0a10ac0de69364d01c4d129210d0dd9d52b2e701c74f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.402Z" + "updatedAt": "2025-12-08T15:00:23.838Z", + "postProcessHash": "42b01d4b46df944e87795ba09e21978fe43cfbe8cb21960e50be81bb0b0bebaf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.402Z" + "updatedAt": "2025-12-08T15:00:23.838Z", + "postProcessHash": "2d054fc0cb3eb4cc96c6b649afa3af72d3fc005be34664ea0cb83af170361479" }, "es": { - "updatedAt": "2025-12-01T18:59:36.402Z" + "updatedAt": "2025-12-08T15:00:23.839Z", + "postProcessHash": "29bfb8baa64100fda45811ce454cf971bbac9169cafa01a8810b3f21b83ef340" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.402Z" + "updatedAt": "2025-12-08T15:00:23.839Z", + "postProcessHash": "5225b9279c8667063abc244e78937d15827c50173055113d43029c9f6dece81c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.403Z" + "updatedAt": "2025-12-08T15:00:23.840Z", + "postProcessHash": "33b080f73a17d87b1c1e8a97ed35b9220a396a1669bd0c28cdd80fe3d6ddc4bf" } } }, "804361874cccaa0e8c9e71b6f4f8e5a88257b439f37164873d85c86bb6521315": { "a525f4f6b35439c78758defab1d61216853666e14cd024281a2d4b507d4ebc47": { "es": { - "updatedAt": "2025-12-01T18:59:36.407Z" + "updatedAt": "2025-12-08T15:00:23.816Z", + "postProcessHash": "1a0ac3684f3dc2c142596083f98082bc0dda4cbbf437e49a6e43a2c98124198b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.409Z" + "updatedAt": "2025-12-08T15:00:23.824Z", + "postProcessHash": "c07412b60dae9e081e1c90181474218c2897ffe763034bcfc363af0b426d8d75" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.410Z" + "updatedAt": "2025-12-08T15:00:23.827Z", + "postProcessHash": "239ad2e852de5e9ea9214d62c54defbda46da21c94985357f90eec2bc4083e9c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.417Z" + "updatedAt": "2025-12-08T15:00:23.848Z", + "postProcessHash": "3bd3a27b98802067e65fe2bb1c0c6cd34a8f288d9e3cafe17bfa4e1802d2bafb" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.421Z" + "updatedAt": "2025-12-08T15:00:23.859Z", + "postProcessHash": "ec59dacffaf02aa7d50243b8948432bcff95e7af76bcd4302c5094f49e68e6ae" } } }, "ee4079487f122349ded8a1f7e06b2841d7538ea550ffa61e353bc0c1c5679207": { "b9e7acc25d82627e3ebfee7f7bf64ab6154d61cb51a958ef2e362ddaebbabe55": { "fr": { - "updatedAt": "2025-12-01T18:59:36.409Z" + "updatedAt": "2025-12-08T15:00:23.826Z", + "postProcessHash": "82a44b5ff9e1163883317bd8aed6662a898903d5b185a1050a2826fb0a6eea7d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.409Z" + "updatedAt": "2025-12-08T15:00:23.827Z", + "postProcessHash": "fca60a0442b95caf48600bf937e2b2cee2c14a293dce202bde3814f76437b0ad" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.413Z" + "updatedAt": "2025-12-08T15:00:23.834Z", + "postProcessHash": "eaa070d27a667105a0de5ac3e62b98c6304b53cefcad4aa3a41ba450ef61ee5e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.414Z" + "updatedAt": "2025-12-08T15:00:23.836Z", + "postProcessHash": "70dab36db3e08768a4baf0312495f0176215f4e508348acd18f009684a2347e3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.418Z" + "updatedAt": "2025-12-08T15:00:23.849Z", + "postProcessHash": "6af25baf927c37253a10ac37e3986745d09c73339f41fb19bb2c1c069a17bdce" } } }, "9a4dd64c32b556c94a4cc10aef0720174e32f321584de2f0f35676f99dfc26bb": { "28c12e415e43f6fd7f572e53028b9340d3f0cc386105b76c61988b3bc0c73aea": { "es": { - "updatedAt": "2025-12-01T18:59:36.410Z" + "updatedAt": "2025-12-08T15:00:23.828Z", + "postProcessHash": "d4b7b90b885506508398fa0679ab8e79fb25202c5e39e4a7a06215606baeaa69" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.411Z" + "updatedAt": "2025-12-08T15:00:23.831Z", + "postProcessHash": "8c7204efcca7a2f17a05a4510d6957cf30802073228070bcc5e3ba4abd67daad" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.417Z" + "updatedAt": "2025-12-08T15:00:23.847Z", + "postProcessHash": "6c12da678d1caafa6be3adeac5e9f88ee3306ef10543c4929d6e8b0b13f6b36f" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.420Z" + "updatedAt": "2025-12-08T15:00:23.855Z", + "postProcessHash": "277dfb3ff3c699c53cdb2db36970f2f08f2cd07d38491f0170a18df0aca06224" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.423Z" + "updatedAt": "2025-12-08T15:00:23.874Z", + "postProcessHash": "f7ccfa47db162c85d3f75925d7c3255d3690dc52a56ccc536e2b958e16d8909d" } } }, "5699966320637ad907e87f04a9bc80abe17dca5358cfc7790058b65ca69dc21b": { "2271c6d54cfd6d7c33d71f03ec09079de9d4bbf1de9b84949ce6683991204e85": { "es": { - "updatedAt": "2025-12-01T18:59:36.413Z" + "updatedAt": "2025-12-08T15:00:23.835Z", + "postProcessHash": "49e5a55d389516eba90e1ea85b81c37b0747f1fc673d2258a1175ff33a8e96e2" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.421Z" + "updatedAt": "2025-12-08T15:00:23.857Z", + "postProcessHash": "de76e2827b94bea1fe9c05d6a4ec49ca8ad1c6367b67f48b5e5e532467555013" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.427Z" + "updatedAt": "2025-12-08T15:00:23.862Z", + "postProcessHash": "3ee864dd2ee304d923b73a70e458b19797a37e9538569ebad576c560b073c67b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.431Z" + "updatedAt": "2025-12-08T15:00:23.875Z", + "postProcessHash": "0a35e711aac613537c46187c3c83a2cd8134c206aa207aa03a03969dfc3ba86f" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.439Z" + "updatedAt": "2025-12-08T15:00:23.891Z", + "postProcessHash": "fe972ea3018e946e5d6cc7a78ade6c5f643264d49ae02cb85a124a6a28d11fc4" } } }, "fbf18d52f72b7574bd65cbfdecf15e01b5ec8953be719827594eaea9f2635fa6": { "bc814623d99b41c0c499022b31a8f022f622a68d86d29d8588213299d929d586": { "es": { - "updatedAt": "2025-12-01T18:59:36.424Z" + "updatedAt": "2025-12-08T15:00:23.835Z", + "postProcessHash": "95dc9ea73f495babc18fd1f94d65c93f1fb1293c53d52c38cfc3368539ff742e" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.425Z" + "updatedAt": "2025-12-08T15:00:23.852Z", + "postProcessHash": "c1062cfdcd7dbe6e1074cc05030f2325cccab7669ef875a5442d090a68a81acf" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.426Z" + "updatedAt": "2025-12-08T15:00:23.860Z", + "postProcessHash": "60a161d6619ac46ff905893c4e55b4fa4932d69719a08f2f5fcf990fb9b2ba2e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.427Z" + "updatedAt": "2025-12-08T15:00:23.863Z", + "postProcessHash": "f2ec6b93041db79d0d079c0a97664609bbb2ad197559b54a486fa3a2a44b9bfa" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.429Z" + "updatedAt": "2025-12-08T15:00:23.869Z", + "postProcessHash": "f2ec6b93041db79d0d079c0a97664609bbb2ad197559b54a486fa3a2a44b9bfa" } } }, "e165f47365c0cfee1107a16a5bd57b82e0e26ecf74d70366da83bd3f85bd0717": { "76df0dd3991e4fbb708b57031aa4264db5a3b61c898878a19a07b543b7ada7ae": { "ja": { - "updatedAt": "2025-12-01T18:59:36.414Z" + "updatedAt": "2025-12-08T15:00:23.837Z", + "postProcessHash": "ae0b9ea973553d69bb925a53dc1e2c2328c7c4728c348cd66c1f37e8191fd8ce" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.414Z" + "updatedAt": "2025-12-08T15:00:23.843Z", + "postProcessHash": "fdd4413f0f39bc99ed5b5391246ebd8e196b5183682a0e05cde990f20aedbdad" }, "es": { - "updatedAt": "2025-12-01T18:59:36.422Z" + "updatedAt": "2025-12-08T15:00:23.865Z", + "postProcessHash": "42e83e58717f122fc30206838badc8c9a0a47638598c01d69456e3e1f39d7442" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.423Z" + "updatedAt": "2025-12-08T15:00:23.871Z", + "postProcessHash": "da255d8c6b2101752d0012b0d80eae9e495e3aa9309c5f77f26c5e6a4ebfd5a2" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.424Z" + "updatedAt": "2025-12-08T15:00:23.898Z", + "postProcessHash": "46e0b2f7910b58b2907bc392675d8c533e72f856980f94c7d8dbee680557a5c3" } } }, "a3d91dd55c3c8a59026a498be96b9aa4ccce562867fe62f947feb358b264da04": { "2d3d8e20e69900eb3c17d01f7de7a10e8623dc7b0e8fe5ae6d5696c191c380ea": { "zh": { - "updatedAt": "2025-12-01T18:59:36.415Z" + "updatedAt": "2025-12-08T15:00:23.844Z", + "postProcessHash": "ec7ad7e992a9e66ae73316aae4c16ebcef756db4ba61bdf0649130f9f38aaee1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.418Z" + "updatedAt": "2025-12-08T15:00:23.850Z", + "postProcessHash": "ec7ad7e992a9e66ae73316aae4c16ebcef756db4ba61bdf0649130f9f38aaee1" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.422Z" + "updatedAt": "2025-12-08T15:00:23.860Z", + "postProcessHash": "e4d65f8b88430f463a408a5d01844d0ad462e33f934bfa2c01b6819e4e8dd470" }, "es": { - "updatedAt": "2025-12-01T18:59:36.422Z" + "updatedAt": "2025-12-08T15:00:23.863Z", + "postProcessHash": "ec7ad7e992a9e66ae73316aae4c16ebcef756db4ba61bdf0649130f9f38aaee1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.422Z" + "updatedAt": "2025-12-08T15:00:23.867Z", + "postProcessHash": "8dd6ad1bdcde2beb203e2bbd076bed9d42f45e0a3f74f2e16a9ba4c862d5fd8b" } } }, "565af83edadf94934876bae5b79aa5b8f4130c658c7cc79110d1e975430b5c48": { "c2bf3c368c33596b0609480a35dfb7df6994ca2a72cfb52b03ba805ae01a546b": { "es": { - "updatedAt": "2025-12-01T18:59:36.415Z" + "updatedAt": "2025-12-08T15:00:23.845Z", + "postProcessHash": "d9effeab8bd76f5f2caa4f68084f59f52dc26ec46e57315c2387315ee4f4ceed" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.416Z" + "updatedAt": "2025-12-08T15:00:23.846Z", + "postProcessHash": "eef64145593e9f90410f09296007c7f8c041c5ca48ae649faf7d0e6546768a56" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.416Z" + "updatedAt": "2025-12-08T15:00:23.846Z", + "postProcessHash": "1ba11159b068e90a19b3161cebbee10bdcc14ff6c14c3b26c42e081bec105448" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.419Z" + "updatedAt": "2025-12-08T15:00:23.853Z", + "postProcessHash": "6a2edd0be889cd9622db2bc196d67c4e4e514376a90085b71c4b200094fca6c4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.423Z" + "updatedAt": "2025-12-08T15:00:23.876Z", + "postProcessHash": "d2a4a1bfa62af1e90087f6c601f5fee46bb070cba3651b3830ba9cdce501b99a" } } }, "12fd663b92c70aae4300a1ee08d8eade3d694de204c85b55d8302ef7dffb1afe": { "46c6eba0cdbf3711e92bb164798f1e0b00f3cf276c0a8bbc71545e777072fee5": { "fr": { - "updatedAt": "2025-12-01T18:59:36.425Z" + "updatedAt": "2025-12-08T15:00:23.852Z", + "postProcessHash": "3051997a65c924e0d80de67557fe8ae2f2515b97d59f8d91480178efc9b04f8b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.425Z" + "updatedAt": "2025-12-08T15:00:23.856Z", + "postProcessHash": "3051997a65c924e0d80de67557fe8ae2f2515b97d59f8d91480178efc9b04f8b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.426Z" + "updatedAt": "2025-12-08T15:00:23.858Z", + "postProcessHash": "3051997a65c924e0d80de67557fe8ae2f2515b97d59f8d91480178efc9b04f8b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.426Z" + "updatedAt": "2025-12-08T15:00:23.859Z", + "postProcessHash": "7af0570c2e63bfe42b8cfe29b6016d5f5fcaa2c385ff7d7a2ec7466b2f0ce808" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.436Z" + "updatedAt": "2025-12-08T15:00:23.883Z", + "postProcessHash": "3051997a65c924e0d80de67557fe8ae2f2515b97d59f8d91480178efc9b04f8b" } } }, "a0301ddb4d71855fb9bcdff2257e28f68ba1060ceb7f7b8cc303432d1f7fd3fc": { "252272ad447a62066035b6c6d935bd30b1cb0340b6f3a1c985d808284ef38599": { "fr": { - "updatedAt": "2025-12-01T18:59:36.427Z" + "updatedAt": "2025-12-08T15:00:23.864Z", + "postProcessHash": "423355ff0ad08b2b9c1e05b490a30fd79fd34d7e81eb14616812fb805c7f3d6b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.428Z" + "updatedAt": "2025-12-08T15:00:23.866Z", + "postProcessHash": "252272ad447a62066035b6c6d935bd30b1cb0340b6f3a1c985d808284ef38599" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.431Z" + "updatedAt": "2025-12-08T15:00:23.873Z", + "postProcessHash": "252272ad447a62066035b6c6d935bd30b1cb0340b6f3a1c985d808284ef38599" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.438Z" + "updatedAt": "2025-12-08T15:00:23.888Z", + "postProcessHash": "252272ad447a62066035b6c6d935bd30b1cb0340b6f3a1c985d808284ef38599" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.438Z" + "updatedAt": "2025-12-08T15:00:23.889Z", + "postProcessHash": "67e979ade21000022a1e5043ed38a0f0270edc7f462b467b5c1ef0a2e9285530" } } }, "37c444e0a2de1573f9fc1053a9a49591118e72064abfcf771cac7312668cc421": { "9f1f8a444c2eda322b0bf802e916b526af9750fdaeb66791f63a7ef8006111fb": { "fr": { - "updatedAt": "2025-12-01T18:59:36.427Z" + "updatedAt": "2025-12-08T15:00:23.865Z", + "postProcessHash": "c0d2d7bee4c0ca8923c0884d13bec2587e170e0c8538bdacfaded60b4e0481b1" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.428Z" + "updatedAt": "2025-12-08T15:00:23.867Z", + "postProcessHash": "c0d2d7bee4c0ca8923c0884d13bec2587e170e0c8538bdacfaded60b4e0481b1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.430Z" + "updatedAt": "2025-12-08T15:00:23.872Z", + "postProcessHash": "c0d2d7bee4c0ca8923c0884d13bec2587e170e0c8538bdacfaded60b4e0481b1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.432Z" + "updatedAt": "2025-12-08T15:00:23.877Z", + "postProcessHash": "c0d2d7bee4c0ca8923c0884d13bec2587e170e0c8538bdacfaded60b4e0481b1" }, "es": { - "updatedAt": "2025-12-01T18:59:36.439Z" + "updatedAt": "2025-12-08T15:00:23.897Z", + "postProcessHash": "77e216e3328f9b649ee8e0a25483c7558eea021fc01fd71c9c744914097b1ad0" } } }, "f0cd340fae47b211622619869a1d923b054a1ef8caa5da9b1f1512fa6fcfe4e3": { "5799ef96853ef76926a27fd9bfd80eb7cda4c6bb9307cbc2d2b6f64bd7eadb5d": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.428Z" + "updatedAt": "2025-12-08T15:00:23.866Z", + "postProcessHash": "8e50c1790fbfa54712cc9a98fb29e2f747bc0be230d3a97867b77ee662d6599b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.430Z" + "updatedAt": "2025-12-08T15:00:23.873Z", + "postProcessHash": "bf6f1d7d755b02b2f0d4adc5946ce1b11b44f849929efd2ed1789f424b6dabf0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.432Z" + "updatedAt": "2025-12-08T15:00:23.876Z", + "postProcessHash": "bf6f1d7d755b02b2f0d4adc5946ce1b11b44f849929efd2ed1789f424b6dabf0" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.433Z" + "updatedAt": "2025-12-08T15:00:23.878Z", + "postProcessHash": "bf6f1d7d755b02b2f0d4adc5946ce1b11b44f849929efd2ed1789f424b6dabf0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.439Z" + "updatedAt": "2025-12-08T15:00:23.896Z", + "postProcessHash": "8e50c1790fbfa54712cc9a98fb29e2f747bc0be230d3a97867b77ee662d6599b" } } }, "99a1e0e1fa4ee478b88c5040aace9d603e9722fcade5deae9a2e2a14e4786d4c": { "3bca2b8c16e61a3fef7f28e5f1680e8a24d5bba1ccd12bec508336e62958b718": { "fr": { - "updatedAt": "2025-12-01T18:59:36.428Z" + "updatedAt": "2025-12-08T15:00:23.868Z", + "postProcessHash": "ffbaeeca1f455426d26405422f882647e2c888dde5ff5689d86fcd13ac334ec6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.429Z" + "updatedAt": "2025-12-08T15:00:23.869Z", + "postProcessHash": "ffbaeeca1f455426d26405422f882647e2c888dde5ff5689d86fcd13ac334ec6" }, "es": { - "updatedAt": "2025-12-01T18:59:36.432Z" + "updatedAt": "2025-12-08T15:00:23.876Z", + "postProcessHash": "ffbaeeca1f455426d26405422f882647e2c888dde5ff5689d86fcd13ac334ec6" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.434Z" + "updatedAt": "2025-12-08T15:00:23.879Z", + "postProcessHash": "ffbaeeca1f455426d26405422f882647e2c888dde5ff5689d86fcd13ac334ec6" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.440Z" + "updatedAt": "2025-12-08T15:00:23.903Z", + "postProcessHash": "ffbaeeca1f455426d26405422f882647e2c888dde5ff5689d86fcd13ac334ec6" } } }, "550bd145e647d1e4586cfb059f46e81bef0520ea0164da378a9cfa0f0f2f4e62": { "4f5057d3de65775adb48756102237dff3ae33a727b1a173ea21ef8e1b97add0c": { "fr": { - "updatedAt": "2025-12-01T18:59:36.429Z" + "updatedAt": "2025-12-08T15:00:23.870Z", + "postProcessHash": "be7df150d33b4ced60c83a34a1d9fb060ad19475a7ce33f681eb801a371af209" }, "es": { - "updatedAt": "2025-12-01T18:59:36.436Z" + "updatedAt": "2025-12-08T15:00:23.882Z", + "postProcessHash": "f08364f0f991c3b535afe2b3b853e6934b56d8841b19eece357c81bd5e613fa2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.438Z" + "updatedAt": "2025-12-08T15:00:23.890Z", + "postProcessHash": "01d019980e2b3fb2d101ce0d1f41d5b03915a107316c1283b07aafeeee2ddecf" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.440Z" + "updatedAt": "2025-12-08T15:00:23.909Z", + "postProcessHash": "b482b3d29fe7a195cd7da693d8864fb467808b0d62a89903f9d866e3339e9a35" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.441Z" + "updatedAt": "2025-12-08T15:00:23.919Z", + "postProcessHash": "0c144db207e8a4c5accf0802c65442142ca6e08fd4899c5b261e6ce1f04f2db1" } } }, "4765c8df5b7c71111ea2de8f55e8237eb82ddd25470ca5c57d501aa5eb05a898": { "9e1ae43cfe8b6deed69d9a445cdd2ac8e04df036ff4dbe58b198794eb1b8301c": { "es": { - "updatedAt": "2025-12-01T18:59:36.430Z" + "updatedAt": "2025-12-08T15:00:23.871Z", + "postProcessHash": "e282f664637a140293d1c95b106854afb6b8fae9bbac1f7d769399e642281e51" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.437Z" + "updatedAt": "2025-12-08T15:00:23.884Z", + "postProcessHash": "e282f664637a140293d1c95b106854afb6b8fae9bbac1f7d769399e642281e51" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.438Z" + "updatedAt": "2025-12-08T15:00:23.888Z", + "postProcessHash": "e282f664637a140293d1c95b106854afb6b8fae9bbac1f7d769399e642281e51" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.441Z" + "updatedAt": "2025-12-08T15:00:23.918Z", + "postProcessHash": "e282f664637a140293d1c95b106854afb6b8fae9bbac1f7d769399e642281e51" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.442Z" + "updatedAt": "2025-12-08T15:00:23.922Z", + "postProcessHash": "e282f664637a140293d1c95b106854afb6b8fae9bbac1f7d769399e642281e51" } } }, "725a1eeecacabfb2c82e747fe26c5dc6f1ee3fc35aefe745fb8a83ce4dcd55e8": { "18313f4d411d6e805d751159f9c65ff5cab929c2f49849628e32f4ed4bc7413d": { "fr": { - "updatedAt": "2025-12-01T18:59:36.433Z" + "updatedAt": "2025-12-08T15:00:23.878Z", + "postProcessHash": "6aa436187d3e2377623be2d7664fdcfdf6432f9ccbedb01bca94f7d5da94baeb" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.435Z" + "updatedAt": "2025-12-08T15:00:23.880Z", + "postProcessHash": "6aa436187d3e2377623be2d7664fdcfdf6432f9ccbedb01bca94f7d5da94baeb" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.435Z" + "updatedAt": "2025-12-08T15:00:23.881Z", + "postProcessHash": "6aa436187d3e2377623be2d7664fdcfdf6432f9ccbedb01bca94f7d5da94baeb" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.436Z" + "updatedAt": "2025-12-08T15:00:23.882Z", + "postProcessHash": "6aa436187d3e2377623be2d7664fdcfdf6432f9ccbedb01bca94f7d5da94baeb" }, "es": { - "updatedAt": "2025-12-01T18:59:36.443Z" + "updatedAt": "2025-12-08T15:00:23.903Z", + "postProcessHash": "6aa436187d3e2377623be2d7664fdcfdf6432f9ccbedb01bca94f7d5da94baeb" } } }, "b216e1be5346dc1c4b1b1a7ac8e73eb303e320963370b06c45a6f4e64a115073": { "58fa5ca39447cbc367de53abc8318a820bd6b3e47f4bf6c133ebd44ff33fcff3": { "fr": { - "updatedAt": "2025-12-01T18:59:36.434Z" + "updatedAt": "2025-12-08T15:00:23.879Z", + "postProcessHash": "b7a0b3e4d336b79f5fce823d542e35f2a668c8601546f0d5c983b5e0634a8795" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.435Z" + "updatedAt": "2025-12-08T15:00:23.880Z", + "postProcessHash": "a813c4c4178261f1efe12a1fd2d3ce26a71bffd6767ca4cd11569e4f3a656409" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.439Z" + "updatedAt": "2025-12-08T15:00:23.906Z", + "postProcessHash": "b56603c3f7784815e20edbd10d78feb64ce6267f3352531b8782255c0b8c39ae" }, "es": { - "updatedAt": "2025-12-01T18:59:36.440Z" + "updatedAt": "2025-12-08T15:00:23.908Z", + "postProcessHash": "70e086a3532ae71613fe2d39303c5214e83d8b38024e7ea08ec7c32cbb69aecd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.441Z" + "updatedAt": "2025-12-08T15:00:23.910Z", + "postProcessHash": "51e00f69ece0575735ff9f0ed3f8c9100303d35cb7f22a4161012789e523d96a" } } }, "bdc516ef862d4232f068df01504d548e493b625b9120b5ee93cd8855b43fb99f": { "7e011add78b86c3265a0437355ce41295decb0ebb628ac6d81a5c66029a365e9": { "es": { - "updatedAt": "2025-12-01T18:59:36.436Z" + "updatedAt": "2025-12-08T15:00:23.883Z", + "postProcessHash": "43800d68e48c9f31c1392c9bae57fade73b24adca155b031504410e2b055227a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.437Z" + "updatedAt": "2025-12-08T15:00:23.885Z", + "postProcessHash": "f4b39da02d6e87b944cdba9b560514e73a70126aec7cef0543f657b479ae3957" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.437Z" + "updatedAt": "2025-12-08T15:00:23.885Z", + "postProcessHash": "5d563614da19aed9861bef08285ac74c465563eefc65a3a043c2b506a3f0364d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.438Z" + "updatedAt": "2025-12-08T15:00:23.886Z", + "postProcessHash": "08ff7a4dc78f6a06877b7e21933e0be7a28d50574b5b8bf6b883570455974bf9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.441Z" + "updatedAt": "2025-12-08T15:00:23.910Z", + "postProcessHash": "87a1817a2d7bc848fa75d161d8ae2459a4a8047ba16ca5298e920a57433496af" } } }, "7c3ad961202fd93b33839b2cf59c088452795d0ca97e81cf180a428263949c31": { "74146b60f772c46bcf649e1c7a991cc57109ae6a80a66989182f22acc69e1473": { "fr": { - "updatedAt": "2025-12-01T18:59:36.444Z" + "updatedAt": "2025-12-08T15:00:23.887Z", + "postProcessHash": "515536d8511de8c1aba16e9fc168bb6471c902d1d8fdd1ce2cdd8d27f1cd07f7" }, "es": { - "updatedAt": "2025-12-01T18:59:36.445Z" + "updatedAt": "2025-12-08T15:00:23.891Z", + "postProcessHash": "4521042022121c357b9cdd5a238881dfb9f9682abe662db8725eaea6c20f7e38" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.445Z" + "updatedAt": "2025-12-08T15:00:23.892Z", + "postProcessHash": "171a533b751a6c11e88015ccb89ce657698f20aad2c7482d651ca5f2e41a8c8d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.445Z" + "updatedAt": "2025-12-08T15:00:23.892Z", + "postProcessHash": "cda5632872116cfd77223cad63b246dc4a84b9421b163d67b7d8402243717d04" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.455Z" + "updatedAt": "2025-12-08T15:00:23.908Z", + "postProcessHash": "a7734ae615edcd52091fd2d9ff2f86d1162e24aa2df6ec087032869dd9c13b37" } } }, "dfbe73a13066ce1c0ccc1944841e5c37cd96c275673f45ebd1ed61f19882136e": { "c578ffee94d282151be4285f79933e9cf79a28220893cd3999f9a22610986ef3": { "fr": { - "updatedAt": "2025-12-01T18:59:36.444Z" + "updatedAt": "2025-12-08T15:00:23.890Z", + "postProcessHash": "04ed11d46152e99e8f3e7c1f324dd17a9788793c931853691e1952e4c0c51d7b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.442Z" + "updatedAt": "2025-12-08T15:00:23.920Z", + "postProcessHash": "4533401589e8282f151a9ceba0746fb4ff4d2a0b2dc791efe85b1cc8e7786bf5" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.448Z" + "updatedAt": "2025-12-08T15:00:23.896Z", + "postProcessHash": "56b563ce837c9bdba5e131030589a00becd1d55ec8784dabac5127cdf55ba37d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.449Z" + "updatedAt": "2025-12-08T15:00:23.899Z", + "postProcessHash": "8e500fb5060588870b9f34d63d9877b6f6119e7d275c407369146f7e6d4a6ba2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.464Z" + "updatedAt": "2025-12-08T15:00:23.930Z", + "postProcessHash": "fdfa3026e954105b09372e1d395a85f4a76a067fb066327275460fd6b889e52c" } } }, "8d25b7784e1629c8b13c0d5b21418495a919e5caac982541994dd3ad0b3458b6": { "5d8bb1c3b07433f1c3acf4620939da5c0a8dce864e5f1f4295168a55893af1d3": { "es": { - "updatedAt": "2025-12-01T18:59:36.445Z" + "updatedAt": "2025-12-08T15:00:23.893Z", + "postProcessHash": "c4bb8c5d398cc37977f4ac03cf7737884aa34c740ff826263c3c67d83e036583" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.449Z" + "updatedAt": "2025-12-08T15:00:23.898Z", + "postProcessHash": "5d8bb1c3b07433f1c3acf4620939da5c0a8dce864e5f1f4295168a55893af1d3" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.457Z" + "updatedAt": "2025-12-08T15:00:23.913Z", + "postProcessHash": "b39d32f506ac188585fda962602b62622ec4b492534d8837988ebc1b9a8bb26b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.459Z" + "updatedAt": "2025-12-08T15:00:23.915Z", + "postProcessHash": "b7e3eaeb78dd971d1b449faeebf6280ec0cdcf9b6ac5d30e0dd9c3a65bdc9097" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.465Z" + "updatedAt": "2025-12-08T15:00:23.938Z", + "postProcessHash": "5d8bb1c3b07433f1c3acf4620939da5c0a8dce864e5f1f4295168a55893af1d3" } } }, "a743547a4ccda7eeb92bb78855cfa1ffac74e7a8fd103e2131f747b94d8f2bb2": { "d22311b7a01e932d5c3acc7481fba6473c37c9a5c335660ac0da8f8746118db7": { "ja": { - "updatedAt": "2025-12-01T18:59:36.446Z" + "updatedAt": "2025-12-08T15:00:23.893Z", + "postProcessHash": "8b6a2cd69a65e084e872c95e6afce0c03194bdb37cad2024def64cf0374faceb" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.448Z" + "updatedAt": "2025-12-08T15:00:23.904Z", + "postProcessHash": "2627e408c047f8c4c9eeae2f6d902065d887d98e0052f5f9403a71abb77500b0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.464Z" + "updatedAt": "2025-12-08T15:00:23.929Z", + "postProcessHash": "f3b15d63a5bc8000f4d4cba87d940b75d68313a161a91519fd4c0dfe60784023" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.465Z" + "updatedAt": "2025-12-08T15:00:23.931Z", + "postProcessHash": "d34ed925ebaa422dd8c4815da851d4f6fee77b00373a2868fbd3771678e05518" }, "es": { - "updatedAt": "2025-12-01T18:59:36.467Z" + "updatedAt": "2025-12-08T15:00:23.985Z", + "postProcessHash": "7b13d505f47c74eca243c0e7d276f6f0cf54671fc6fa53e26febfbdd0656e29c" } } }, "c18d3f9fd05fe52c2cc735c86b120841f943cc49b278424ce52f16a436d05187": { "69d31c747f1573fa04bf97624d05a6a41f06c8e2f0b41e5d1da7715b29f5d55e": { "es": { - "updatedAt": "2025-12-01T18:59:36.446Z" + "updatedAt": "2025-12-08T15:00:23.894Z", + "postProcessHash": "ffb0db45d11bcf8f815c0cf2646d7a9fe1880cdd184a5aeaa0572aea156995b4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.447Z" + "updatedAt": "2025-12-08T15:00:23.895Z", + "postProcessHash": "8090ed3ea38adca58b8921bc011f8b8378196cf797393ced482481d49fe12522" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.448Z" + "updatedAt": "2025-12-08T15:00:23.904Z", + "postProcessHash": "25d6048098b3dc174633004eacf7799396a0c5dfa388531a1bb5aa4346d46f6a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.463Z" + "updatedAt": "2025-12-08T15:00:23.928Z", + "postProcessHash": "31d9142599028750eb497548270d5f29d478f77e1d7c98098b23966503f993cc" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.465Z" + "updatedAt": "2025-12-08T15:00:23.937Z", + "postProcessHash": "489d86d2ea5f93bae26a4fd0b96ff0c37aed1420c7df2c1fc2ca84ac4fe9ac3a" } } }, "f5062a5d1444b6b62fc7a04d2bc91b4d898a270e0da1c9c87f90abd3bb18b09e": { "75f238baf5582f9ea864c298f75b9787914e18461ffebad133caafdd8ee8246e": { "zh": { - "updatedAt": "2025-12-01T18:59:36.447Z" + "updatedAt": "2025-12-08T15:00:23.895Z", + "postProcessHash": "0626678502da8bfe1602cebca676a7117200536281a3f06f2a3f709e02ba4b03" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.458Z" + "updatedAt": "2025-12-08T15:00:23.914Z", + "postProcessHash": "00cd98a38405b0f0583a370d48570953cbb192f5c15159a8b4001880eda28455" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.463Z" + "updatedAt": "2025-12-08T15:00:23.927Z", + "postProcessHash": "e7daf498de9b9d779e17aebb2b0c8de045d0d82cda9df6151a097a3ec04f549a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.463Z" + "updatedAt": "2025-12-08T15:00:23.928Z", + "postProcessHash": "c828ad6da2bc0f18905bd4d18c5d7d5c62c061b10fa7c654ef5d8371044a5f10" }, "es": { - "updatedAt": "2025-12-01T18:59:36.464Z" + "updatedAt": "2025-12-08T15:00:23.930Z", + "postProcessHash": "db1ead3883d8212838a510cdeb82e3101067ffc82a7bb55a1b869a2e34ca713d" } } }, "14b5616718d902ed7a47b6a6e47573fd1463b4ed42d84025ccab84e745cf4216": { "26e94fc1832b106e97453a81cdd3ad764835329d253fed2f23fbb738344da3d1": { "es": { - "updatedAt": "2025-12-01T18:59:36.443Z" + "updatedAt": "2025-12-08T15:00:23.961Z", + "postProcessHash": "ca030be2bf0bcedeb9c5687f221e16cc903b372a0c7674a0444152d3844c0ef8" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.443Z" + "updatedAt": "2025-12-08T15:00:23.962Z", + "postProcessHash": "44b45d327c408a3eedcbb926cadf47a3773a5ecec540a3d7a441351d0d202f29" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.443Z" + "updatedAt": "2025-12-08T15:00:23.962Z", + "postProcessHash": "44b45d327c408a3eedcbb926cadf47a3773a5ecec540a3d7a441351d0d202f29" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.444Z" + "updatedAt": "2025-12-08T15:00:23.963Z", + "postProcessHash": "44b45d327c408a3eedcbb926cadf47a3773a5ecec540a3d7a441351d0d202f29" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.444Z" + "updatedAt": "2025-12-08T15:00:23.963Z", + "postProcessHash": "44b45d327c408a3eedcbb926cadf47a3773a5ecec540a3d7a441351d0d202f29" } } }, "b2d6aad696480d01479c02a5f964308a68edd02189d5aa3a6d39ff2839bc09e3": { "08c7294810aefab382e0eb7b37c64497e6b776bd103c57976dddaaf4c9d9b2d1": { "es": { - "updatedAt": "2025-12-01T18:59:36.450Z" + "updatedAt": "2025-12-08T15:00:23.899Z", + "postProcessHash": "e15a57683846671020862b31128cf65946ebe205c9f0a6aade4a40f68929c5ce" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.450Z" + "updatedAt": "2025-12-08T15:00:23.900Z", + "postProcessHash": "ef06783b3385886a324fda75ce86772a27ef03809b366dd523f517ec343d94ae" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.451Z" + "updatedAt": "2025-12-08T15:00:23.901Z", + "postProcessHash": "6144feeb72da4f87634e0ea23f473f81bdb288906b0f4e632ca11ccf47b581ee" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.451Z" + "updatedAt": "2025-12-08T15:00:23.901Z", + "postProcessHash": "2531d84b2b243ed49b332776b6c8db5a7c32617d57057f5a5d7684085da123ee" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.462Z" + "updatedAt": "2025-12-08T15:00:23.925Z", + "postProcessHash": "8853cb0ab3c5e02c3b462adf757356a1417b494819942bb0276c116370521c9f" } } }, "8f22fc61dfd424d3a0998bf6e01147d7bd3173cd5267b35bb09f4f144228d9c4": { "837fd381d8adeb76ba932e18bcb0577da8bbf3a46709f9350863d409cd6937ed": { "fr": { - "updatedAt": "2025-12-01T18:59:36.452Z" + "updatedAt": "2025-12-08T15:00:23.902Z", + "postProcessHash": "ec230f6436a021fb112a4d6b9a53ce5c785c92106b79c7b227275f07e46d7743" }, "es": { - "updatedAt": "2025-12-01T18:59:36.454Z" + "updatedAt": "2025-12-08T15:00:23.905Z", + "postProcessHash": "8c2f01965eedd1b582ac52209dc8a4f80389593b048d89b5285ff2a16a4f17a4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.460Z" + "updatedAt": "2025-12-08T15:00:23.917Z", + "postProcessHash": "6f2513921c4ec622aa3d987890c64da25e13b359649ee02349a8872bd4642e01" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.460Z" + "updatedAt": "2025-12-08T15:00:23.918Z", + "postProcessHash": "ab845e841b84a4f198def6b9c2e4633c01f2b65b4cadf37450dd347fd11d3b59" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.460Z" + "updatedAt": "2025-12-08T15:00:23.921Z", + "postProcessHash": "93f9b859b0a30adaa7519c68e653842a0f85eee79fbb3ff373b87520b6108906" } } }, "7a6d71e760ce0b6db96fbc1e9f2aa01d2e6d17ff21672aaeb48143c6afbac202": { "245f19808f968e6b11e86515c489c28c0763a23ba5b2ef04c372ddbe7e256fb0": { "zh": { - "updatedAt": "2025-12-01T18:59:36.452Z" + "updatedAt": "2025-12-08T15:00:23.905Z", + "postProcessHash": "7fd0b97dcbcf5c019e2eef9e05f4b6d1d8c5118d0c44b89771b352268d6015a0" }, "es": { - "updatedAt": "2025-12-01T18:59:36.454Z" + "updatedAt": "2025-12-08T15:00:23.906Z", + "postProcessHash": "7fd0b97dcbcf5c019e2eef9e05f4b6d1d8c5118d0c44b89771b352268d6015a0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.455Z" + "updatedAt": "2025-12-08T15:00:23.907Z", + "postProcessHash": "7fd0b97dcbcf5c019e2eef9e05f4b6d1d8c5118d0c44b89771b352268d6015a0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.459Z" + "updatedAt": "2025-12-08T15:00:23.915Z", + "postProcessHash": "7fd0b97dcbcf5c019e2eef9e05f4b6d1d8c5118d0c44b89771b352268d6015a0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.466Z" + "updatedAt": "2025-12-08T15:00:23.948Z", + "postProcessHash": "0e0e72f8b189e880b5bdb48aab5117dfde283dfaa2e39fd302ef5d7c13e24571" } } }, "dffd4c42da3504b24c18dcd0fd7658ebc25c4cd4e0fc86ddcafb01b05719aad5": { "d2a54262f65d87ec7b66b0bc4e4506e7ff90cbaffd387ee4fe68dde97978aa79": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.455Z" + "updatedAt": "2025-12-08T15:00:23.909Z", + "postProcessHash": "03ca9ba898d8d66e1174aaa5ecce1160a535d5146fb37e331d1c25763db7ecf0" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.456Z" + "updatedAt": "2025-12-08T15:00:23.912Z", + "postProcessHash": "7110bf9c5c2951272e4ba72661604fa278830029bcf4381cf08eca71030c3bac" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.460Z" + "updatedAt": "2025-12-08T15:00:23.920Z", + "postProcessHash": "0fc487a74be5f088399f4a3ef9ed96bbef566979956d6aefb61f859fe0fe0067" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.461Z" + "updatedAt": "2025-12-08T15:00:23.923Z", + "postProcessHash": "7110bf9c5c2951272e4ba72661604fa278830029bcf4381cf08eca71030c3bac" }, "es": { - "updatedAt": "2025-12-01T18:59:36.465Z" + "updatedAt": "2025-12-08T15:00:23.935Z", + "postProcessHash": "a332a569f91a411e37a12c79bec9096a12493f7fba67448a49d8ccd5007046f9" } } }, "7932d9bcd4b9594ee35035a723ee451d329721cd2bb4c2548f35d4be4c0d7734": { "3aec1e39751f7f6ae7e109672135e28609234b282652f4e748d096643b8c5301": { "es": { - "updatedAt": "2025-12-01T18:59:36.456Z" + "updatedAt": "2025-12-08T15:00:23.911Z", + "postProcessHash": "6826e6329c29c78a4768ff31883e2ac4b4aa81a384fd42eed66d4fcdf3b667ab" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.456Z" + "updatedAt": "2025-12-08T15:00:23.912Z", + "postProcessHash": "b55b4f18095116e29855d9247fd03402e4d2bec804d63b7e7eb63ada111f5be9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.461Z" + "updatedAt": "2025-12-08T15:00:23.921Z", + "postProcessHash": "b55b4f18095116e29855d9247fd03402e4d2bec804d63b7e7eb63ada111f5be9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.461Z" + "updatedAt": "2025-12-08T15:00:23.924Z", + "postProcessHash": "b55b4f18095116e29855d9247fd03402e4d2bec804d63b7e7eb63ada111f5be9" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.466Z" + "updatedAt": "2025-12-08T15:00:23.960Z", + "postProcessHash": "b55b4f18095116e29855d9247fd03402e4d2bec804d63b7e7eb63ada111f5be9" } } }, "329223b498b2c65a40990630cb0373a4a1a9bc3f83d61594b86f60de660d2490": { "401511f578ad4a6a72c6c4fcc4ae0685089400d1fa856c4b037316c88d6ef7ab": { "zh": { - "updatedAt": "2025-12-01T18:59:36.457Z" + "updatedAt": "2025-12-08T15:00:23.914Z", + "postProcessHash": "5b9038f761fea347527847e37d7530ccc7f10cbb3b55e3c21af58ac391188205" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.462Z" + "updatedAt": "2025-12-08T15:00:23.925Z", + "postProcessHash": "5b9038f761fea347527847e37d7530ccc7f10cbb3b55e3c21af58ac391188205" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.462Z" + "updatedAt": "2025-12-08T15:00:23.926Z", + "postProcessHash": "627b248039d8f71c395b28c4b738ab60750d2fffd03e7b800263437766fbd798" }, "es": { - "updatedAt": "2025-12-01T18:59:36.463Z" + "updatedAt": "2025-12-08T15:00:23.927Z", + "postProcessHash": "627b248039d8f71c395b28c4b738ab60750d2fffd03e7b800263437766fbd798" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.467Z" + "updatedAt": "2025-12-08T15:00:23.961Z", + "postProcessHash": "07f35eef5af3e1f76d92d29c403eec393b0b61a1af5093cd40345b300348da90" } } }, "ae56dd531b654349007b5366d35691e520399b2e5755e0981d52d07db2bd0149": { "890171db650bacefaf5a36c2a55ef7bb5b3ae2bddbe4108f789959afcc16a58e": { "es": { - "updatedAt": "2025-12-01T18:59:36.470Z" + "updatedAt": "2025-12-08T15:00:23.916Z", + "postProcessHash": "50febff37f519b77fccccaa46a11f7446f2f7011a8a02039b6e108749df62814" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.473Z" + "updatedAt": "2025-12-08T15:00:23.936Z", + "postProcessHash": "aea23bab6bcfe96e23a34cf3ee454c2090c15bb10fa36c6ce1e2460805b664a2" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.481Z" + "updatedAt": "2025-12-08T15:00:23.957Z", + "postProcessHash": "4400dc0955cf1323657aea65339efbe69e312f4f9585e9b4508ff8d4c450b539" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.482Z" + "updatedAt": "2025-12-08T15:00:23.958Z", + "postProcessHash": "4cbab1c673f090808bc355de75c8f9be83d31dd6bbb801935db83bfd2e9040ad" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.488Z" + "updatedAt": "2025-12-08T15:00:24.116Z", + "postProcessHash": "4400dc0955cf1323657aea65339efbe69e312f4f9585e9b4508ff8d4c450b539" } } }, "55431d6a800bc38f54a449009eab12f6f9bab5ac27008999fd2d0ffad253ebd4": { "ccc07de45f6fc0989c545ed105b9ab7b48ca1f5a15183b5428d18da4059e38fa": { "es": { - "updatedAt": "2025-12-01T18:59:36.471Z" + "updatedAt": "2025-12-08T15:00:23.931Z", + "postProcessHash": "8c7488e6be2aab9cc049194e48092648d5dab5e833039c708fb372d31eca531c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.471Z" + "updatedAt": "2025-12-08T15:00:23.932Z", + "postProcessHash": "3663a1253e2f31380406126a88ccb7899def50a7f21f0522881fc8d53e748b27" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.475Z" + "updatedAt": "2025-12-08T15:00:23.943Z", + "postProcessHash": "be12bdaef1120ec792e6d0502b19773421d45533d23595479ae26bfd45784031" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.478Z" + "updatedAt": "2025-12-08T15:00:23.949Z", + "postProcessHash": "c2a1ecb458fc9e1446d70f8ee5f6335ddbdd089d349a1ab32c83718377da0b85" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.478Z" + "updatedAt": "2025-12-08T15:00:23.951Z", + "postProcessHash": "43d5ddea5b8c01fb53b1e870d75a495ce8155de0988e41731c271a23b1b7c635" } } }, "b52a9ffc3e0953721d5cc7fadae8b5846ddb71b76b645abd8cd962b6081d9f81": { "c7d9f1cba735a20a7d37156f5f5e761bc964c3550fdf2f98425ec862e24fdce0": { "es": { - "updatedAt": "2025-12-01T18:59:36.471Z" + "updatedAt": "2025-12-08T15:00:23.933Z", + "postProcessHash": "e0516e80e3a5d6aa08ce4ca12afc2c5e05132eb0e5d2a8119b4aa045bea8de56" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.472Z" + "updatedAt": "2025-12-08T15:00:23.934Z", + "postProcessHash": "fb35a8468e4619eb0fb06c02c7631634ee769cea908ac99bc18cb7b81f87f35e" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.474Z" + "updatedAt": "2025-12-08T15:00:23.939Z", + "postProcessHash": "a168d92cc636c038e04c88c6026b214e2fc8138e92649a9c66dfc7c08fcccbca" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.477Z" + "updatedAt": "2025-12-08T15:00:23.947Z", + "postProcessHash": "224ad982a7ec9e17530cf51ff7dce96e9fbf53a945d63e900ab7f39d172fe6b0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.482Z" + "updatedAt": "2025-12-08T15:00:23.959Z", + "postProcessHash": "adb8e7faa1bd5484552c9cce4eaba5164f09041fe09a289acc0e9addc0150fc3" } } }, "a8daa920472039d885cb4780476fd7c9a7e7941bcc2305d5b7c5d9ca041ea150": { "c300427f664c8ae0f834b262f7e17e03f00f6f05a9ab2617ea7393badd228c5c": { "zh": { - "updatedAt": "2025-12-01T18:59:36.472Z" + "updatedAt": "2025-12-08T15:00:23.934Z", + "postProcessHash": "21ffc1241ef8e478c4d46209307278b37ba4ca0936aa9b09485fcd1813a99dbf" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.473Z" + "updatedAt": "2025-12-08T15:00:23.936Z", + "postProcessHash": "123999d4b604a1293f4e89e8aa5683d5b38b54fb2328ba419db665eda9eac8d8" }, "es": { - "updatedAt": "2025-12-01T18:59:36.475Z" + "updatedAt": "2025-12-08T15:00:23.942Z", + "postProcessHash": "6471624b1838a0cbeed2e83b096476c87f5a0b5cd2c849b145a51f207d9b9e4c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.480Z" + "updatedAt": "2025-12-08T15:00:23.953Z", + "postProcessHash": "41e52fdefbb6f9a280054bce3a4b05671ecd08702a5b35dd1fddcf8da78d2f95" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.482Z" + "updatedAt": "2025-12-08T15:00:23.974Z", + "postProcessHash": "702bdd8ba0bdc05c86f99df5c4c302b8e44d22768bdff4fd17dcd63fdf61f2cf" } } }, "de072b6c00a2b129c55ded32bd17439ddda585119b85a75685049d4163805a4d": { "9c138a3a23d72582f4ab3daec53dae89fe7c5a4cf005595a73f5ba1b9806c857": { "ja": { - "updatedAt": "2025-12-01T18:59:36.472Z" + "updatedAt": "2025-12-08T15:00:23.935Z", + "postProcessHash": "0e42d7580ee97aa9037af6068931be394526a887b8cb6ca23d19441b4f8e409d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.475Z" + "updatedAt": "2025-12-08T15:00:23.942Z", + "postProcessHash": "ea3dcff1befa6acf08abd1d539461c08b34991bc9919f8ff282324ecf5818454" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.475Z" + "updatedAt": "2025-12-08T15:00:23.943Z", + "postProcessHash": "6882ba8fa5d412efeded481521c273ff4dd90b1d1f89818d77b79292f6c288e8" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.477Z" + "updatedAt": "2025-12-08T15:00:23.948Z", + "postProcessHash": "b4e052f54b1bc7a009b9b834e620f60e6dedd08a6dfd3b5e44878371a26661b9" }, "es": { - "updatedAt": "2025-12-01T18:59:36.482Z" + "updatedAt": "2025-12-08T15:00:23.959Z", + "postProcessHash": "2e951b82bf1f1b98e002311e1c3bcffe06fd27a48083b4c2551ec897c2c5a32b" } } }, "35971633cee8b45ada59b882da8792675488b905ab07ce2c8d1a5c7656f61f00": { "df67d6526d18c4d54e8232120f5418e611c2d805114083d80f6dd111dec9e04e": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.473Z" + "updatedAt": "2025-12-08T15:00:23.939Z", + "postProcessHash": "0c4f1382096b6e8c641dc4d8893f4da9d81385338b1a7ba4ff2f21ab17d37b25" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.476Z" + "updatedAt": "2025-12-08T15:00:23.946Z", + "postProcessHash": "9457ff210cfe55ab0bd7ea28c84b5aee1ee85feae66ccb895838f42639e10748" }, "es": { - "updatedAt": "2025-12-01T18:59:36.479Z" + "updatedAt": "2025-12-08T15:00:23.951Z", + "postProcessHash": "cda9979ffbebbdd35921b401a45280d17679f96d3c531fbb11c7cacb3efb902c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.480Z" + "updatedAt": "2025-12-08T15:00:23.955Z", + "postProcessHash": "23dffc0c0c480aae98c05614deed9d115ca7d97997303f7d555bee86c3b7a8e1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.486Z" + "updatedAt": "2025-12-08T15:00:23.995Z", + "postProcessHash": "68238c01a62af5e6cbb6dab4d0a972a0bcb3f2d132f91d8d2ed39783d2d55d43" } } }, "4bb195404776aa0760c57c03f638915b194684e43823b7475895849af1c7e254": { "7dc16f5d35a0fd67128ef6d548c92a2ade345ec2ef606c204f2b6cc1ad751c31": { "fr": { - "updatedAt": "2025-12-01T18:59:36.468Z" + "updatedAt": "2025-12-08T15:00:23.964Z", + "postProcessHash": "16c41fa4a36533870dd2900dbc5bd32be4f017ce49e1ea634d87886ed7157738" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.468Z" + "updatedAt": "2025-12-08T15:00:23.965Z", + "postProcessHash": "7dc16f5d35a0fd67128ef6d548c92a2ade345ec2ef606c204f2b6cc1ad751c31" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.469Z" + "updatedAt": "2025-12-08T15:00:23.965Z", + "postProcessHash": "7dc16f5d35a0fd67128ef6d548c92a2ade345ec2ef606c204f2b6cc1ad751c31" }, "es": { - "updatedAt": "2025-12-01T18:59:36.469Z" + "updatedAt": "2025-12-08T15:00:23.966Z", + "postProcessHash": "6cdac6147ce3bba07ccd87e3ccda3cbb5d917c1f8fc7bfc58b8ed8689e2a626a" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.470Z" + "updatedAt": "2025-12-08T15:00:23.967Z", + "postProcessHash": "cf8ba080247f7719467c57b6c0d9a6d8c76d9135321c8beb277f09a86f9801bb" } } }, "3a95e6895533532982d4b12440b160759632da7caee0e245d4a53d648f45466b": { "3b7f1c0e1df63bc2cdcf7356269e23dd987704c961dfcfb02d9f3115245087b7": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.474Z" + "updatedAt": "2025-12-08T15:00:23.940Z", + "postProcessHash": "24034bb0a30026f38e23b3b4c4f7b4dbbec6449b82a206efbd04519b177f25d6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.474Z" + "updatedAt": "2025-12-08T15:00:23.941Z", + "postProcessHash": "3b6e5716910853e26018a605a3a4b934007c1316c6724c4e1ac118ba29948a3d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.474Z" + "updatedAt": "2025-12-08T15:00:23.941Z", + "postProcessHash": "25cb4a8730c51551daaf8fbe34fc96f34dde7d746b04ef010ae7a4e2ae063c8e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.485Z" + "updatedAt": "2025-12-08T15:00:23.988Z", + "postProcessHash": "24ebb3e9e223c3a11aadb7243d89265e51d110dd102bffb23de7a159deefdc13" }, "es": { - "updatedAt": "2025-12-01T18:59:36.487Z" + "updatedAt": "2025-12-08T15:00:24.057Z", + "postProcessHash": "2caa3b98430459d18c06ea9f45bdd7f1955627d60e73f8ed6c147a39e8a65d9e" } } }, "427a01be524b52fd4b9b7b459ba50bb64a81e28d252ba42c9bc849254788b3ed": { "15fdaddb9d673a0d75d3ee71edb2a4f70c192551f927a6f0371e939cf586f7cd": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.476Z" + "updatedAt": "2025-12-08T15:00:23.944Z", + "postProcessHash": "aaff0a26adf8967af6b324f3186383bdcfc143f1873126d541bf2055601ec34a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.481Z" + "updatedAt": "2025-12-08T15:00:23.957Z", + "postProcessHash": "aaff0a26adf8967af6b324f3186383bdcfc143f1873126d541bf2055601ec34a" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.483Z" + "updatedAt": "2025-12-08T15:00:23.976Z", + "postProcessHash": "aaff0a26adf8967af6b324f3186383bdcfc143f1873126d541bf2055601ec34a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.483Z" + "updatedAt": "2025-12-08T15:00:23.977Z", + "postProcessHash": "aaff0a26adf8967af6b324f3186383bdcfc143f1873126d541bf2055601ec34a" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.483Z" + "updatedAt": "2025-12-08T15:00:23.978Z", + "postProcessHash": "aaff0a26adf8967af6b324f3186383bdcfc143f1873126d541bf2055601ec34a" } } }, "382b60428b12cc451b447dfa88da236533c08515d2a59a1d4617d3224cb84b9f": { "2f026aa374e36c1a2dc7482aff76fdd035fa7b0d853e15cb55f43c3857b9aa4f": { "ja": { - "updatedAt": "2025-12-01T18:59:36.476Z" + "updatedAt": "2025-12-08T15:00:23.945Z", + "postProcessHash": "05cc6440c81ff849161417b1e14f1085bc80b98a064b6f00908797e64b988399" }, "es": { - "updatedAt": "2025-12-01T18:59:36.477Z" + "updatedAt": "2025-12-08T15:00:23.946Z", + "postProcessHash": "301e9f4ada98a50953dc07047dceda69bcaf0ebe64db45b015fa3e49ee0a5254" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.479Z" + "updatedAt": "2025-12-08T15:00:23.953Z", + "postProcessHash": "64ed6820627738b66e591eac9d16d12d8ed6231be20c1dc27b2dec0cf07909f9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.485Z" + "updatedAt": "2025-12-08T15:00:23.989Z", + "postProcessHash": "05cc6440c81ff849161417b1e14f1085bc80b98a064b6f00908797e64b988399" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.487Z" + "updatedAt": "2025-12-08T15:00:24.071Z", + "postProcessHash": "ac56fea6b290d09521f3d936ee9f9314d7e560754474c53509ef5ed71b2ce3bb" } } }, "fc083fcc20595a5f38421325e0cc8f00819e79190b8a5dc92321ee01887e4151": { "ba5df453115d233903b6da70be572ed418c243228b9f97996bd8cf81dd0f3462": { "ja": { - "updatedAt": "2025-12-01T18:59:36.478Z" + "updatedAt": "2025-12-08T15:00:23.950Z", + "postProcessHash": "134fdfa2cca056132ef329bfc3116f74d43d917839b4aa002709fe6f5a250e8c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.478Z" + "updatedAt": "2025-12-08T15:00:23.950Z", + "postProcessHash": "2dcfc060eb964da0dbb6d800bcffb4770cee9eef880929ca2d2129586cad6914" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.479Z" + "updatedAt": "2025-12-08T15:00:23.952Z", + "postProcessHash": "718ad6afd37a364a66ddb8b58b4c43774ca4859d7ef2ca352a982b537fffec45" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.484Z" + "updatedAt": "2025-12-08T15:00:23.987Z", + "postProcessHash": "0e7196a67ddf12ce965edea04d0356593fcef18366f634891c385daaa33bfc4f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.486Z" + "updatedAt": "2025-12-08T15:00:23.990Z", + "postProcessHash": "163fa156135d8febbde01b6538c7af23fc302d06ebb1b71d74a384354f6a9cb4" } } }, "ccb2d79baa889c5c2fade16e30a2cb95ea91257757be953474e8017e4240ca8a": { "82a448a6c6bd0cbabbe18cd311c5cb8ae26dd820bc99b3170a28b3251da8afe6": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.480Z" + "updatedAt": "2025-12-08T15:00:23.954Z", + "postProcessHash": "d8db0846bf724e54679e4efd4131d98193a4dba0fe27af72570519760d83320d" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.484Z" + "updatedAt": "2025-12-08T15:00:23.979Z", + "postProcessHash": "d8db0846bf724e54679e4efd4131d98193a4dba0fe27af72570519760d83320d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.484Z" + "updatedAt": "2025-12-08T15:00:23.984Z", + "postProcessHash": "d8db0846bf724e54679e4efd4131d98193a4dba0fe27af72570519760d83320d" }, "es": { - "updatedAt": "2025-12-01T18:59:36.487Z" + "updatedAt": "2025-12-08T15:00:24.076Z", + "postProcessHash": "d8db0846bf724e54679e4efd4131d98193a4dba0fe27af72570519760d83320d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.501Z" + "updatedAt": "2025-12-08T15:00:24.075Z", + "postProcessHash": "a5353719af46e426e8d9558b1331106399788b772213ac75f18429d2c2e5c131" } } }, "a766af4151b504649b977388d894ea3b1c93dfdddfd1fcce1a52da3c98273bcc": { "6fbb437c01183272a935e7d0993578854121a10a6f60056dc771ba4ad650e9e5": { "es": { - "updatedAt": "2025-12-01T18:59:36.490Z" + "updatedAt": "2025-12-08T15:00:23.955Z", + "postProcessHash": "a609bc0e4bb210b97abd6e81b8293d2def1e58491cdcf9dd868a5997c4ce07b0" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.490Z" + "updatedAt": "2025-12-08T15:00:23.956Z", + "postProcessHash": "28700aaea8db07ed2022df2789b39427fda2ce60b7bddf4fe47235f2a3fb442d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.494Z" + "updatedAt": "2025-12-08T15:00:23.994Z", + "postProcessHash": "cabe56576eaea1b373376e8bd6500940df8cd78c68efcfad14a72b1dafceb97c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.507Z" + "updatedAt": "2025-12-08T15:00:24.088Z", + "postProcessHash": "92b5847a356b3eb1a519ad68ea4d20af14abbcf3cd88c81550f4536214b64da8" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.511Z" + "updatedAt": "2025-12-08T15:00:24.115Z", + "postProcessHash": "60a8eab9ef575e14e9f63ee562f5d89f30d84503352df7b0a793082d19e64385" } } }, "1cddecb6c60e552f90c905b8ee5774082e2e26e7294ca0c4dec713ed97a2f43b": { "51472d855670d2643470632913d84c800170e0e8bfc0e2a3433bf0a1e7811aac": { "es": { - "updatedAt": "2025-12-01T18:59:36.491Z" + "updatedAt": "2025-12-08T15:00:23.979Z", + "postProcessHash": "b6c36ab58f60cfd2d13f08e2b45775842a4d93ba2e5f7f7306f739d6eba661a6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.504Z" + "updatedAt": "2025-12-08T15:00:24.081Z", + "postProcessHash": "922ac994831c7f86ecce5f2dc6cc329d604cb6ece6ce71d00613474c592a6397" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.513Z" + "updatedAt": "2025-12-08T15:00:24.137Z", + "postProcessHash": "443bfd1a96a2d4ac42c513d9c0a6122c061234eaf90852b342060850b1192535" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.513Z" + "updatedAt": "2025-12-08T15:00:24.142Z", + "postProcessHash": "70ba79067bf0380934ff41a151a30be4fa6e2e3826aaa116c97809f0a99df510" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.515Z" + "updatedAt": "2025-12-08T15:00:24.152Z", + "postProcessHash": "e4c5b520fb5c6184ce2768a82620d86949b42222e31006704bef5ed7cc3c6fd2" } } }, "756ec1dabfac20b85a0b881a4d6fd97678f762dda95eb93ea10e5dc4a43baa3f": { "296909ac8c951f76d3a166495bab4af3c50c4e0611e7370e9eff1ee4aaaaf01f": { "es": { - "updatedAt": "2025-12-01T18:59:36.491Z" + "updatedAt": "2025-12-08T15:00:23.980Z", + "postProcessHash": "6d0179e2fbe0c0694cbe03c775e3cef31d9dc83874cb678fffc6f13f8b6a502b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.493Z" + "updatedAt": "2025-12-08T15:00:23.987Z", + "postProcessHash": "22c2e11fd7ed557eb037d30c3d693e9da66383a8f46644300b9cc5d062a69e7b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.493Z" + "updatedAt": "2025-12-08T15:00:23.988Z", + "postProcessHash": "2ccb9bc5ea2fb04bfc70952c6cb480a966593381cf5a3d008235f727276bca03" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.511Z" + "updatedAt": "2025-12-08T15:00:24.115Z", + "postProcessHash": "17b3efdfac86e5165639672bb1ea87bf60566e6e46e137e26c737094ed0fc869" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.515Z" + "updatedAt": "2025-12-08T15:00:24.117Z", + "postProcessHash": "b5bb33941e823c3c56353afadef9f7d58eb48b5a935c91febe778a2c5e15aaa6" } } }, "e5dabc88fbe9cceda68aa84f85c4eac6b5ccc8461e98d3473c49088e9fa10c96": { "dca835b35c72bc153e918336c184ed82234fc2324782570fd62464ae0b8206e6": { "ja": { - "updatedAt": "2025-12-01T18:59:36.492Z" + "updatedAt": "2025-12-08T15:00:23.981Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.515Z" + "updatedAt": "2025-12-08T15:00:23.982Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.518Z" + "updatedAt": "2025-12-08T15:00:24.110Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.510Z" + "updatedAt": "2025-12-08T15:00:24.111Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "es": { - "updatedAt": "2025-12-01T18:59:36.514Z" + "updatedAt": "2025-12-08T15:00:24.145Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" } } }, "d9f6163d3cfe0476202b246bca1c45715a4762c67d3ab1efe303d568fce34dd9": { "ba5df453115d233903b6da70be572ed418c243228b9f97996bd8cf81dd0f3462": { "zh": { - "updatedAt": "2025-12-01T18:59:36.492Z" + "updatedAt": "2025-12-08T15:00:23.981Z", + "postProcessHash": "ed44764f9ea617777d035fe0d6c94247eb75f7a9b969b0805a5b26b37b23997d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.492Z" + "updatedAt": "2025-12-08T15:00:23.983Z", + "postProcessHash": "134fdfa2cca056132ef329bfc3116f74d43d917839b4aa002709fe6f5a250e8c" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.498Z" + "updatedAt": "2025-12-08T15:00:24.062Z", + "postProcessHash": "134fdfa2cca056132ef329bfc3116f74d43d917839b4aa002709fe6f5a250e8c" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.501Z" + "updatedAt": "2025-12-08T15:00:24.073Z", + "postProcessHash": "85ff8a7914699ea89b8480b65de2b6f512a250d19b3a4ede49693d61bdb74111" }, "es": { - "updatedAt": "2025-12-01T18:59:36.511Z" + "updatedAt": "2025-12-08T15:00:24.111Z", + "postProcessHash": "c528d8d52888d364717058f8a4e211d315fe44ff4ea292fbb43e27956c808478" } } }, "0a0730370260ce807af94e146d6ac52c2fd5ac094c41641474fa9e36b398417d": { "6efe6ae5cbc2b952c7e6c981fb896032dfdb96a734598ee284379b2da9da0122": { "zh": { - "updatedAt": "2025-12-01T18:59:36.493Z" + "updatedAt": "2025-12-08T15:00:23.985Z", + "postProcessHash": "5dad65b55a6fe7e6746740625c5841acdfb261aac514c63255d54e33d3921b21" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.494Z" + "updatedAt": "2025-12-08T15:00:23.991Z", + "postProcessHash": "711db2649dd3b0da0bd0968041a18f00d4b724af937e5586e03bfa961f8b4254" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.494Z" + "updatedAt": "2025-12-08T15:00:23.992Z", + "postProcessHash": "5deaf11b78841a97f234a5639ea94797e21cd71b191072808aa75fe891c41b16" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.500Z" + "updatedAt": "2025-12-08T15:00:24.072Z", + "postProcessHash": "e8bfd7420ae9136827be4d7b0fb4ab237cdcdaa67393adb917c1d700741baf16" }, "es": { - "updatedAt": "2025-12-01T18:59:36.502Z" + "updatedAt": "2025-12-08T15:00:24.077Z", + "postProcessHash": "1708895836f2c65656a8656c85fb830a355f88a410ab913c63aa2f08eea1e9e9" } } }, "7019807117604292edf9faaac5ee9f3dfc26ec8e69c3fb4a7186d3033288c8a9": { "c817690e2eb454b817094110f5a4767c3fa777576b9e999daa997893a70732a1": { "es": { - "updatedAt": "2025-12-01T18:59:36.484Z" + "updatedAt": "2025-12-08T15:00:23.986Z", + "postProcessHash": "b0f4bece0dbce3bc7f693fb275be41ffcfa6f09fe1bdc02f02e681ca95a25b51" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.485Z" + "updatedAt": "2025-12-08T15:00:23.989Z", + "postProcessHash": "5afff67324ccad421d8a737b2b4439a281f7d5f90285f0664e0ace9734975771" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.486Z" + "updatedAt": "2025-12-08T15:00:23.993Z", + "postProcessHash": "b47ab25f2eeadcdb745be91b96f17b7180cf64a543eaa119d82c290d4681e56b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.486Z" + "updatedAt": "2025-12-08T15:00:23.993Z", + "postProcessHash": "cb2a4ad70099fccad972e84d5ff55d4dedc7a044e790955c6c6d0abc9a6d78b4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.487Z" + "updatedAt": "2025-12-08T15:00:24.075Z", + "postProcessHash": "6e86a42e960ba8be4e34c8e719660be862f55a4faa46ce21f7b74abb9bf386b3" } } }, "7c6f70473c6a93d337a4d9ef2c1360adbd7b1d2669fc138fd942ca7a43e5dd9f": { "ec771556953ec22ab8d82fb2e69d9f66e18f5dc30e5cea114f849d5011dab76e": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.488Z" + "updatedAt": "2025-12-08T15:00:24.117Z", + "postProcessHash": "413cd88a49db1b47777026199bae1439d53990851da9192cd8fcf7e977484ec4" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.489Z" + "updatedAt": "2025-12-08T15:00:24.118Z", + "postProcessHash": "68fd9a73bf5c6d507e59c083afc256f5f2881d283f71018530bb6a99d032104e" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.489Z" + "updatedAt": "2025-12-08T15:00:24.119Z", + "postProcessHash": "ec771556953ec22ab8d82fb2e69d9f66e18f5dc30e5cea114f849d5011dab76e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.489Z" + "updatedAt": "2025-12-08T15:00:24.120Z", + "postProcessHash": "f50d3cfba5fe3290ca87fe687750c9167389c2be5c13357de0856098ea47a5f4" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.489Z" + "updatedAt": "2025-12-08T15:00:24.120Z", + "postProcessHash": "ec771556953ec22ab8d82fb2e69d9f66e18f5dc30e5cea114f849d5011dab76e" } } }, "a56b1dbf7019b555c91141227f4e51642f48b0c49d067eabe9097f6fbc7e60c6": { "93d1ef3f8e481b180cfad75e2a7241a2a2d6c15869741d9ba1f2c07f5cdd6e08": { "es": { - "updatedAt": "2025-12-01T18:59:36.494Z" + "updatedAt": "2025-12-08T15:00:23.990Z", + "postProcessHash": "e7a4127b810a194c32de6e29984b42968edd5766e459b4f599402165e130e97d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.500Z" + "updatedAt": "2025-12-08T15:00:24.070Z", + "postProcessHash": "ed10fe7e1a75c186833376184d84b5140087c0087732fba477699c6f49eb55ca" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.500Z" + "updatedAt": "2025-12-08T15:00:24.073Z", + "postProcessHash": "54b22c8e73f5dcea681f7936c29e9facb822cfe9b3d4d3307b0f7f4ff043a3d5" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.501Z" + "updatedAt": "2025-12-08T15:00:24.074Z", + "postProcessHash": "610d37f7def40dd56a7a30a5873f3786a29cd41773ffd4ae8eb13f7b94ca9dc6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.508Z" + "updatedAt": "2025-12-08T15:00:24.105Z", + "postProcessHash": "543b33a1549c3123b366b7dde6bb55a59d35b970376c574edae7316d3d6c304f" } } }, "8a54310c41f81a31375ade8fcc9743c2ad20f43147ab1aba80f3a9254a65e098": { "b642f1dd2c7969663a665994be9b1a1e8e449742823dcaece268ef66504eb1fe": { "fr": { - "updatedAt": "2025-12-01T18:59:36.495Z" + "updatedAt": "2025-12-08T15:00:23.995Z", + "postProcessHash": "14f6aa7be33b819084d8a3f437e4f4549b9d764481702e76218af59c3005ef41" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.495Z" + "updatedAt": "2025-12-08T15:00:23.996Z", + "postProcessHash": "f26361619e83b194ab100d5430922f0187a82e5e5edd4de878148bf0d5b1289e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.495Z" + "updatedAt": "2025-12-08T15:00:23.996Z", + "postProcessHash": "d924ab6432c417f854e57a3c19f319c42d1379cf13e76a5233212fd0aaa02cf7" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.496Z" + "updatedAt": "2025-12-08T15:00:23.997Z", + "postProcessHash": "bb0f2fb5863ee586d14b75b18007f585e7117a6b2cb23d5a3d0944d55438b38a" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.496Z" + "updatedAt": "2025-12-08T15:00:23.998Z", + "postProcessHash": "5c1061119e876a4c82d2c6808516ac112fdcb2b73124d072233546260f084bc6" } } }, "8c1ae8eea748e67b05515ffb60dbc762fd354cca121b8af179c0e9ba317382a3": { "76a15d0f583c07e1d7c705d43ad49eeb1e7d60fd2f7c22a17eef2d6ec83662b7": { "fr": { - "updatedAt": "2025-12-01T18:59:36.496Z" + "updatedAt": "2025-12-08T15:00:24.056Z", + "postProcessHash": "b86b4f38c866520d43ef822f3eca923dca60552132314cf7720c23e62f201a4a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.497Z" + "updatedAt": "2025-12-08T15:00:24.059Z", + "postProcessHash": "0360c9bb5e47cdaeacd8d07a0bd7132c8621857fdb7f727256beb33d2982b301" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.497Z" + "updatedAt": "2025-12-08T15:00:24.060Z", + "postProcessHash": "0022461044b8d024dd915c35076f6771f80f6f2655109f568f865fbe89db24ab" }, "es": { - "updatedAt": "2025-12-01T18:59:36.508Z" + "updatedAt": "2025-12-08T15:00:24.089Z", + "postProcessHash": "a6da47aeffa5755bbad9930d8abd58755de1b8d5f7d8a783e50bb52ef2d0610c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.514Z" + "updatedAt": "2025-12-08T15:00:24.116Z", + "postProcessHash": "906a895e1347215285ddfc98023cd95a8415b2b498dd4188f3e0df882ce9eeee" } } }, "b1a75277754de0398228570210e3ddb5f00a108e5913f3cb0bb566dd01dab52d": { "dca835b35c72bc153e918336c184ed82234fc2324782570fd62464ae0b8206e6": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.498Z" + "updatedAt": "2025-12-08T15:00:24.063Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "es": { - "updatedAt": "2025-12-01T18:59:36.499Z" + "updatedAt": "2025-12-08T15:00:24.064Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.502Z" + "updatedAt": "2025-12-08T15:00:24.078Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.506Z" + "updatedAt": "2025-12-08T15:00:24.085Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.510Z" + "updatedAt": "2025-12-08T15:00:24.107Z", + "postProcessHash": "a1fc63526fe42c5d57c1d12f5948b2d01555ff025944c16323b2a94467a3d370" } } }, "6cbb691c92aef84c0278ecf14f16f6886dc950f479dd5cf7926280f93bec6254": { "22f5f50bf48508f67bdeb7c4dcf7e2edd0b7b1321f4c9a5230f0298b29039048": { "es": { - "updatedAt": "2025-12-01T18:59:36.499Z" + "updatedAt": "2025-12-08T15:00:24.064Z", + "postProcessHash": "27641fcb47349a4276afaefdf143795877cf728109b14a0e5a4c0c15b84d8b68" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.503Z" + "updatedAt": "2025-12-08T15:00:24.078Z", + "postProcessHash": "57e32004debee7eb66457ae266accf52514bd9f0f1a1616076a2b9380851c012" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.512Z" + "updatedAt": "2025-12-08T15:00:24.134Z", + "postProcessHash": "c56f1f738dd5db4a75a1caee98f8ae31fce5465496151da88d86609860f29dc5" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.512Z" + "updatedAt": "2025-12-08T15:00:24.137Z", + "postProcessHash": "679e1ff6b2b0934148f7e9603e55f1b242ff7aa7919190a42014049ec9aa07a3" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.514Z" + "updatedAt": "2025-12-08T15:00:24.146Z", + "postProcessHash": "eed88cb4e4714bf7a3e130697925061bf75dac5d47074ad59286a2637369ff45" } } }, "7468f91fb48adb9b5b7c646808a23e2928795e21007804ab8477c3f11e196d81": { "e1ac4189e186bbafa5115ef86d2f83f54cac754f2574bfd79bec47f9f6bdadcc": { "es": { - "updatedAt": "2025-12-01T18:59:36.502Z" + "updatedAt": "2025-12-08T15:00:24.077Z", + "postProcessHash": "adccdebc9379b19efd300338f691e7ce6e28250ceb2be79ff2e7f397005dc888" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.505Z" + "updatedAt": "2025-12-08T15:00:24.082Z", + "postProcessHash": "b52b926c86bdbaaf56ca4c26acde288b412e1bed9c206392438a080f01024bae" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.505Z" + "updatedAt": "2025-12-08T15:00:24.083Z", + "postProcessHash": "3577359e47a367bfbc0fb87b514df0988b44d1478a8fc397a8a8a8a28e356629" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.506Z" + "updatedAt": "2025-12-08T15:00:24.084Z", + "postProcessHash": "b344e375847aba507dd99d41b62c672dcfefe7e9d55ebab7f66617d06fdb49a5" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.509Z" + "updatedAt": "2025-12-08T15:00:24.107Z", + "postProcessHash": "3577359e47a367bfbc0fb87b514df0988b44d1478a8fc397a8a8a8a28e356629" } } }, "f74f8eeb1018ad53574dd8c9961efb73be0d66de71633eef109c5a5b67ff191e": { "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.503Z" + "updatedAt": "2025-12-08T15:00:24.079Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.504Z" + "updatedAt": "2025-12-08T15:00:24.080Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.505Z" + "updatedAt": "2025-12-08T15:00:24.084Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.507Z" + "updatedAt": "2025-12-08T15:00:24.087Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "es": { - "updatedAt": "2025-12-01T18:59:36.508Z" + "updatedAt": "2025-12-08T15:00:24.091Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" } } }, "105decee0a46df1fca5eb4c7404f9884ff02d6b1334005fc6d6371e9f05ec702": { "44daff96b5a074d255010ea08fd7c59827f5522b3753b21f61aac67d562925eb": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.516Z" + "updatedAt": "2025-12-08T15:00:24.089Z", + "postProcessHash": "e1dcafa0c59f447b246c4eaed050330eb1c173a96a109885cf1429d5178708a9" }, "es": { - "updatedAt": "2025-12-01T18:59:36.516Z" + "updatedAt": "2025-12-08T15:00:24.090Z", + "postProcessHash": "e1dcafa0c59f447b246c4eaed050330eb1c173a96a109885cf1429d5178708a9" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.516Z" + "updatedAt": "2025-12-08T15:00:24.105Z", + "postProcessHash": "e1dcafa0c59f447b246c4eaed050330eb1c173a96a109885cf1429d5178708a9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.518Z" + "updatedAt": "2025-12-08T15:00:24.112Z", + "postProcessHash": "e1dcafa0c59f447b246c4eaed050330eb1c173a96a109885cf1429d5178708a9" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.525Z" + "updatedAt": "2025-12-08T15:00:24.132Z", + "postProcessHash": "e1dcafa0c59f447b246c4eaed050330eb1c173a96a109885cf1429d5178708a9" } } }, "6fe2bfa4f40f8d77169fb1f6e3005b3fc0f6f68d4b4448516c448d2116384eb5": { "c8c380c65ec5a6114ef86c2016d3f26e1ea42811cd5062fcca60357ceb0e31ba": { "fr": { - "updatedAt": "2025-12-01T18:59:36.517Z" + "updatedAt": "2025-12-08T15:00:24.106Z", + "postProcessHash": "d8c5e510aad7f764418ef019aa67e4abf1eddb68c97170e9017f6e7ba8f365c4" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.520Z" + "updatedAt": "2025-12-08T15:00:24.113Z", + "postProcessHash": "c2879b66700edb11316da28f9a0ea55bccb2cc1274db8bbf52ac4c7a63c39394" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.525Z" + "updatedAt": "2025-12-08T15:00:24.133Z", + "postProcessHash": "9f7cb0d9898f8491e9f9e4ea9097cf1e55b00114171ee5867d2943b28ba71fda" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.526Z" + "updatedAt": "2025-12-08T15:00:24.133Z", + "postProcessHash": "c2879b66700edb11316da28f9a0ea55bccb2cc1274db8bbf52ac4c7a63c39394" }, "es": { - "updatedAt": "2025-12-01T18:59:36.541Z" + "updatedAt": "2025-12-08T15:00:24.160Z", + "postProcessHash": "bfee133877d2d27ee4cd7306fa8ce035f063f85bf9e05b90a1480dcea4d54957" } } }, "8a66a60b05aa5a534ed2f94aed27b8c9785a85f181b662b04522f95248f21344": { "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893": { "fr": { - "updatedAt": "2025-12-01T18:59:36.517Z" + "updatedAt": "2025-12-08T15:00:24.108Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.518Z" + "updatedAt": "2025-12-08T15:00:24.109Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.522Z" + "updatedAt": "2025-12-08T15:00:24.124Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.523Z" + "updatedAt": "2025-12-08T15:00:24.126Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" }, "es": { - "updatedAt": "2025-12-01T18:59:36.527Z" + "updatedAt": "2025-12-08T15:00:24.136Z", + "postProcessHash": "b5968829b2277e2aca634c8c1857d374b7c23c8175c8b7e778c4c6314d06d893" } } }, "fa161697d413aa0cce69a1cefc632cf8cbee35713d165b14debc527ae7fad1aa": { "2b1087c4fa9d6fcd9bc6b8bc020adf43afdbcf988419e474c9032d6497a62d30": { "ja": { - "updatedAt": "2025-12-01T18:59:36.517Z" + "updatedAt": "2025-12-08T15:00:24.109Z", + "postProcessHash": "e573d8591bd570faf339045e674415f754c6c354f6eb6d353393afad6f0b43fe" }, "es": { - "updatedAt": "2025-12-01T18:59:36.518Z" + "updatedAt": "2025-12-08T15:00:24.110Z", + "postProcessHash": "e573d8591bd570faf339045e674415f754c6c354f6eb6d353393afad6f0b43fe" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.520Z" + "updatedAt": "2025-12-08T15:00:24.113Z", + "postProcessHash": "e573d8591bd570faf339045e674415f754c6c354f6eb6d353393afad6f0b43fe" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.521Z" + "updatedAt": "2025-12-08T15:00:24.123Z", + "postProcessHash": "e573d8591bd570faf339045e674415f754c6c354f6eb6d353393afad6f0b43fe" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.528Z" + "updatedAt": "2025-12-08T15:00:24.140Z", + "postProcessHash": "e573d8591bd570faf339045e674415f754c6c354f6eb6d353393afad6f0b43fe" } } }, "5e43e2dc7b1656f7f6b5cc4cb3ee732d76f54db759bdfb2a89a9bb3500f21c2a": { "6aba839f4650716683a101f6f9b029f875a5014042685034f5eb376e517ecf71": { "zh": { - "updatedAt": "2025-12-01T18:59:36.544Z" + "updatedAt": "2025-12-08T15:00:24.121Z", + "postProcessHash": "6aba839f4650716683a101f6f9b029f875a5014042685034f5eb376e517ecf71" }, "es": { - "updatedAt": "2025-12-01T18:59:36.544Z" + "updatedAt": "2025-12-08T15:00:24.123Z", + "postProcessHash": "6aba839f4650716683a101f6f9b029f875a5014042685034f5eb376e517ecf71" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.550Z" + "updatedAt": "2025-12-08T15:00:24.361Z", + "postProcessHash": "7c21a96df22d1dbcb1d08a98b7d9972a87b597f57cd2e6afa5e3ffbc5e72ad06" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.552Z" + "updatedAt": "2025-12-08T15:00:24.366Z", + "postProcessHash": "6aba839f4650716683a101f6f9b029f875a5014042685034f5eb376e517ecf71" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.553Z" + "updatedAt": "2025-12-08T15:00:24.370Z", + "postProcessHash": "8ba8e5fc6d08c059dc679700a9162351423b0d12b3c48fa49e559f6809ac9fe5" } } }, "3e96b75a5b9f723919ebc66220876d31119e516af6c0843c5c80ac21a953f770": { "71c98eb545122f91c9f9826b71e30b9d3ed582ded5348b1bbd209405d2398fcc": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.545Z" + "updatedAt": "2025-12-08T15:00:23.968Z", + "postProcessHash": "ef07a2b56f83257b10026f3cd9e1159936fae26a5ac51589f94b83cf60fa962b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.555Z" + "updatedAt": "2025-12-08T15:00:24.177Z", + "postProcessHash": "ef07a2b56f83257b10026f3cd9e1159936fae26a5ac51589f94b83cf60fa962b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.558Z" + "updatedAt": "2025-12-08T15:00:24.183Z", + "postProcessHash": "ef07a2b56f83257b10026f3cd9e1159936fae26a5ac51589f94b83cf60fa962b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.562Z" + "updatedAt": "2025-12-08T15:00:24.381Z", + "postProcessHash": "ef07a2b56f83257b10026f3cd9e1159936fae26a5ac51589f94b83cf60fa962b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.562Z" + "updatedAt": "2025-12-08T15:00:24.382Z", + "postProcessHash": "ef07a2b56f83257b10026f3cd9e1159936fae26a5ac51589f94b83cf60fa962b" } } }, "c270106463ee206cd1a58e831f5e10df5ff0bc82d5698d1f02b4540d42bfc572": { "a79d0c98476d6247553db3b2937156d22e22ecc4deb48270a7937b5148a934ab": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.545Z" + "updatedAt": "2025-12-08T15:00:23.968Z", + "postProcessHash": "f70d783d89cfc7ea308641e1f17b8786ed5444f970936e1ee6451c3c1514e9a8" }, "es": { - "updatedAt": "2025-12-01T18:59:36.557Z" + "updatedAt": "2025-12-08T15:00:24.182Z", + "postProcessHash": "60d9532de8ed09d4b0a5e6b0ff0a63a11f281893d5c06cd71248d18b32f31ddf" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.559Z" + "updatedAt": "2025-12-08T15:00:24.374Z", + "postProcessHash": "64259054c0fcdabb8de4a2365aae85a181a79397884f01d1380b7f63157b43bc" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.560Z" + "updatedAt": "2025-12-08T15:00:24.376Z", + "postProcessHash": "64259054c0fcdabb8de4a2365aae85a181a79397884f01d1380b7f63157b43bc" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.562Z" + "updatedAt": "2025-12-08T15:00:24.381Z", + "postProcessHash": "b7f4cdeffda979030d8402afc14b605a7f80242e3db36abdfb8e51f1cfa182b7" } } }, "7c2a6224e991b6bf91709f161a96825fc6657086404f4000eb076610e0bb7299": { "9be392b226222107c9da1f5d2eae7e75e3356ecd41b2a01dae6c1c9f0bd32f4b": { "es": { - "updatedAt": "2025-12-01T18:59:36.545Z" + "updatedAt": "2025-12-08T15:00:23.969Z", + "postProcessHash": "e26031b156af1231172a0187a814fc6ec73d9794af87e03f4032c5e638eb3210" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.558Z" + "updatedAt": "2025-12-08T15:00:24.183Z", + "postProcessHash": "e26031b156af1231172a0187a814fc6ec73d9794af87e03f4032c5e638eb3210" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.558Z" + "updatedAt": "2025-12-08T15:00:24.184Z", + "postProcessHash": "ac1ca5b22e6ce0c850d6edc6fb729458849c345be18a457a5884c40819b714a9" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.560Z" + "updatedAt": "2025-12-08T15:00:24.377Z", + "postProcessHash": "ac1ca5b22e6ce0c850d6edc6fb729458849c345be18a457a5884c40819b714a9" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.561Z" + "updatedAt": "2025-12-08T15:00:24.378Z", + "postProcessHash": "ac1ca5b22e6ce0c850d6edc6fb729458849c345be18a457a5884c40819b714a9" } } }, "7cb770d02369a417ebec1b76a251368e9542ab4051f807d9e3ceebc411e6e060": { "67d32ff67b3313f36406e4e0d5f697b7bb2e531ef8913fca2902497caec09826": { "zh": { - "updatedAt": "2025-12-01T18:59:36.545Z" + "updatedAt": "2025-12-08T15:00:23.970Z", + "postProcessHash": "25ca8cd3192f9e1a88ce42342ad2459a8990a9aa8fc95e299dcf0ab4ca8f63ef" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.555Z" + "updatedAt": "2025-12-08T15:00:24.177Z", + "postProcessHash": "25ca8cd3192f9e1a88ce42342ad2459a8990a9aa8fc95e299dcf0ab4ca8f63ef" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.556Z" + "updatedAt": "2025-12-08T15:00:24.179Z", + "postProcessHash": "25ca8cd3192f9e1a88ce42342ad2459a8990a9aa8fc95e299dcf0ab4ca8f63ef" }, "es": { - "updatedAt": "2025-12-01T18:59:36.556Z" + "updatedAt": "2025-12-08T15:00:24.180Z", + "postProcessHash": "25ca8cd3192f9e1a88ce42342ad2459a8990a9aa8fc95e299dcf0ab4ca8f63ef" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.559Z" + "updatedAt": "2025-12-08T15:00:24.373Z", + "postProcessHash": "df31cd90ec154b0ecc1797bf41ec053f1bec86b3df4bbf481d69a124941cf8ac" } } }, "a91d0c98ca796f09d90e49839fa7fe29b2e18442d46c9f1d97e155c8b4eda42d": { "327e6abb7c9d35ff60f243e9ca8fb5a4e7ed041b43c23bc495ef60d302e76602": { "es": { - "updatedAt": "2025-12-01T18:59:36.546Z" + "updatedAt": "2025-12-08T15:00:23.973Z", + "postProcessHash": "ddc3f78dfa53ae8d5734c4aed5df80eadc6db12c5a7a34dabcbe1d75ec28655e" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.555Z" + "updatedAt": "2025-12-08T15:00:24.178Z", + "postProcessHash": "2bf0bf2c545e290eaa826e0c50c84b9341fb91da508ce1edeb994ea739031320" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.557Z" + "updatedAt": "2025-12-08T15:00:24.181Z", + "postProcessHash": "cf3f9f861317b6a8573e9643544d4ffe65c0b94096586dad116a24b08cd21508" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.559Z" + "updatedAt": "2025-12-08T15:00:24.375Z", + "postProcessHash": "2bf0bf2c545e290eaa826e0c50c84b9341fb91da508ce1edeb994ea739031320" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.560Z" + "updatedAt": "2025-12-08T15:00:24.376Z", + "postProcessHash": "2bf0bf2c545e290eaa826e0c50c84b9341fb91da508ce1edeb994ea739031320" } } }, "df6b2888a8e9740b6721ccdc9ac452a23c5088e70ef5e4669000d6834e2ec88d": { "ab087523a16b089dc3bbcb3dd0a38274f8fc5afd96d712cb1196afd63750575f": { "ja": { - "updatedAt": "2025-12-01T18:59:36.521Z" + "updatedAt": "2025-12-08T15:00:24.114Z", + "postProcessHash": "7a4fc5256aa7d4a7bec2e69bc446c91253c24697ac5c866876a67e74b098f878" }, "es": { - "updatedAt": "2025-12-01T18:59:36.530Z" + "updatedAt": "2025-12-08T15:00:24.142Z", + "postProcessHash": "2b3b6dd3d10ad2e9f9e4baca51ffed325d29fd396be234b2bd45b87f28b4eaea" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.532Z" + "updatedAt": "2025-12-08T15:00:24.145Z", + "postProcessHash": "d3192b9d8306528fba4c5f1952442b456e8050cad703f49db59bba97ffb6495c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.539Z" + "updatedAt": "2025-12-08T15:00:24.156Z", + "postProcessHash": "05ec8c6c63b1386c6807aa456f989f23888516227d7a46b6b7c879b12e319700" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.540Z" + "updatedAt": "2025-12-08T15:00:24.158Z", + "postProcessHash": "9cbcb6a4e5d2c88e702bdf509c73a8b3e03c7c8d37e691034814f65fbf953845" } } }, "27985738075e0a6095d16753a2c9dc8ea938b7485beef70347623687e8750f81": { "78862acb162e1dd44e1b56a2c09efe53199585aff8eeb9d9019a1a4577ab6f96": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.522Z" + "updatedAt": "2025-12-08T15:00:24.125Z", + "postProcessHash": "296d58c238eec3b0417fa232b13e9ed1ea9b4b0085353bc60e6771a4257d7a10" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.523Z" + "updatedAt": "2025-12-08T15:00:24.126Z", + "postProcessHash": "c763b310688fd315b2407f29e16f3f0f3ff36a5c01d52c567769b0c350058265" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.531Z" + "updatedAt": "2025-12-08T15:00:24.144Z", + "postProcessHash": "825095b4d9278165c5edad97ac0171189077018b468687cfbc35ed6823befbf7" }, "es": { - "updatedAt": "2025-12-01T18:59:36.531Z" + "updatedAt": "2025-12-08T15:00:24.144Z", + "postProcessHash": "22cdab876388ad03428f45eb06eecec2344002d29fe9affd92623ce748f2c55b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.540Z" + "updatedAt": "2025-12-08T15:00:24.157Z", + "postProcessHash": "e4903c429d84d7b3ebc5bc8e887c56904fad96d3177b9fe3fcebed4bd2df6838" } } }, "4c9c4ae38754fba17ec50bb4bef3ca12cb48a0d829cde79257bb7648bf0fea0e": { "717ebbd299966fc85cb3f7498b4e31e1bd314467b80fd33b1d6b9121bda7a795": { "es": { - "updatedAt": "2025-12-01T18:59:36.524Z" + "updatedAt": "2025-12-08T15:00:24.127Z", + "postProcessHash": "3706dea4fd233069e205816951acfed3d7273dcbabad6d8ec5277ffb74540200" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.524Z" + "updatedAt": "2025-12-08T15:00:24.129Z", + "postProcessHash": "e7d62c415871d470a57886497f0e5460e8d6177dca71e1763a64cf27a3f398c6" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.526Z" + "updatedAt": "2025-12-08T15:00:24.135Z", + "postProcessHash": "aa93ca36173c3e7eb0b586f069c73945d832a6e0a05352cccd00b31bbf8714d0" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.527Z" + "updatedAt": "2025-12-08T15:00:24.136Z", + "postProcessHash": "54951321b81b9fa6d8c4f3a8bf70e9c872d202c83d76b0a2bf4b511730f8c246" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.538Z" + "updatedAt": "2025-12-08T15:00:24.153Z", + "postProcessHash": "15c07822b7d805887d1ddac605a3717cbe6dd821880e0e812698ac47fefd914e" } } }, "612171c1503b8c49aa010f76f4aa5e2f63c84aabc256c1ea5c1d815725a5f25f": { "1f8136b178663d03fb648cc0ec8f99a649c27e4e8f906445d767bb0b72a164aa": { "zh": { - "updatedAt": "2025-12-01T18:59:36.524Z" + "updatedAt": "2025-12-08T15:00:24.128Z", + "postProcessHash": "930f64f72ac2902d417bfbf4fbbd4419c21426a6081cbea563c5c442ff3d2b20" }, "es": { - "updatedAt": "2025-12-01T18:59:36.537Z" + "updatedAt": "2025-12-08T15:00:24.151Z", + "postProcessHash": "1133ed62b883281f70cf14deb9e6b3f5efd7f726b85aaa0b0140e19eba3a7aa8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.541Z" + "updatedAt": "2025-12-08T15:00:24.161Z", + "postProcessHash": "930f64f72ac2902d417bfbf4fbbd4419c21426a6081cbea563c5c442ff3d2b20" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.542Z" + "updatedAt": "2025-12-08T15:00:24.162Z", + "postProcessHash": "ca11dd61d7873aacd70fe758b6a173fed9a06869108ea8472670517f17876fa3" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.542Z" + "updatedAt": "2025-12-08T15:00:24.164Z", + "postProcessHash": "82e5c8640e082c07f60b56f01e4f3c343dde878837b06d6ad61ae774fd23b78f" } } }, "3fe37f43f2f2ef64736c70eddc6381890f39ac68fee677bd9cdcdfddbcf8deca": { "09ad0a9396bc1e5eda676c4bfe371d0d12aaade3c6174ad08e0a6b3b018a2b63": { "fr": { - "updatedAt": "2025-12-01T18:59:36.546Z" + "updatedAt": "2025-12-08T15:00:24.129Z", + "postProcessHash": "62247462ad4a3610a874fdb1c90d9d3460c199a98e4e1b6e2d4dc9de83a2eb13" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.546Z" + "updatedAt": "2025-12-08T15:00:24.160Z", + "postProcessHash": "11a1063ef4dc2f3280cac169d3889d2a0429e7648bfa34c6f6f8584f3f8d8554" }, "es": { - "updatedAt": "2025-12-01T18:59:36.547Z" + "updatedAt": "2025-12-08T15:00:24.161Z", + "postProcessHash": "ea50193ca8316675f8c0fe5101ebc3984a235e3c804fda055f67b8529a6ab947" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.547Z" + "updatedAt": "2025-12-08T15:00:24.166Z", + "postProcessHash": "33fc21e2c44fe44b0e78da29fbe879ffcd96b714535f10489fffcbffcd4d5ae7" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.547Z" + "updatedAt": "2025-12-08T15:00:24.169Z", + "postProcessHash": "806e9c3d1ac4b0d145097bb141d2fad3675c98a49290cb53e7b051dc4cd82166" } } }, "f0727cb7913e520659485b30bff6401a9e1f1d5aabc1ec2ee24df76e8af0c648": { "d536efbfe1ee025ca1d5f35ee12be1bf5e1e47ffc30316076aeaa65edbbe01bc": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.527Z" + "updatedAt": "2025-12-08T15:00:24.138Z", + "postProcessHash": "925294ddfc307cd9fdec520b4ce9fb3d17cd64f6dfcc4747d104ef5bb90582fe" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.527Z" + "updatedAt": "2025-12-08T15:00:24.138Z", + "postProcessHash": "84e5d900ca87dd20874fb2d36cc75ddac9e8ceab839bda8ef40325f553894099" }, "es": { - "updatedAt": "2025-12-01T18:59:36.528Z" + "updatedAt": "2025-12-08T15:00:24.139Z", + "postProcessHash": "5a8cd3e4d762cbcd8f0834b583e3aa12c7747272c55b7849fb6abbdecc1aa4aa" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.538Z" + "updatedAt": "2025-12-08T15:00:24.154Z", + "postProcessHash": "84e5d900ca87dd20874fb2d36cc75ddac9e8ceab839bda8ef40325f553894099" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.538Z" + "updatedAt": "2025-12-08T15:00:24.154Z", + "postProcessHash": "3cf9ed11a01c9abe980658d7565d55ee85eaf52265de7e41438759132d187bf8" } } }, "612e0175177410b9a3237ab37e2bd6e4d7aa57cc67ac6bf300a391f992f80430": { "7d358f96f15743414d09c22d00545761fb19c749512bce1ac94a6259073ebfe5": { "ja": { - "updatedAt": "2025-12-01T18:59:36.528Z" + "updatedAt": "2025-12-08T15:00:24.140Z", + "postProcessHash": "53bbb677a8d679f0e6b6f4ad22c3787c9d20245e862d563a83753ef4c77a8213" }, "es": { - "updatedAt": "2025-12-01T18:59:36.529Z" + "updatedAt": "2025-12-08T15:00:24.141Z", + "postProcessHash": "a5fbc00933f2eb5cf15d43cbeff3c03ae35b2f170de19d8630996de523719b89" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.531Z" + "updatedAt": "2025-12-08T15:00:24.143Z", + "postProcessHash": "59217392a89628f816792f966e4c52306b196dac42b06c48d413dc60d61985d1" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.533Z" + "updatedAt": "2025-12-08T15:00:24.146Z", + "postProcessHash": "1447e914790e74a3d867aec3ae2d4c88e792f9b71773f756603beef426e437ee" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.539Z" + "updatedAt": "2025-12-08T15:00:24.155Z", + "postProcessHash": "b24d596465a6c649c63ef2ec2f630b70e37f8436673a17d02ed85762a9e25dcd" } } }, "a095548ad57f0146e622c0ec9030a581b0eef4de95f0ed30b548f46b6fd5cf29": { "88925e1abd104a56abf4ed4314b996c597305da24d0e507ba2934f16a5ae9c35": { "es": { - "updatedAt": "2025-12-01T18:59:36.534Z" + "updatedAt": "2025-12-08T15:00:24.147Z", + "postProcessHash": "73afdaf8dc0afea20f322bf5dd0d8ec302a834dfa7d198530fab5975eaa91d50" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.535Z" + "updatedAt": "2025-12-08T15:00:24.148Z", + "postProcessHash": "69a1006d4143f9092f7ea3fb707f7326aa716453efba4efcb9f5c10d3daf43d9" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.535Z" + "updatedAt": "2025-12-08T15:00:24.148Z", + "postProcessHash": "73afdaf8dc0afea20f322bf5dd0d8ec302a834dfa7d198530fab5975eaa91d50" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.539Z" + "updatedAt": "2025-12-08T15:00:24.156Z", + "postProcessHash": "73afdaf8dc0afea20f322bf5dd0d8ec302a834dfa7d198530fab5975eaa91d50" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.541Z" + "updatedAt": "2025-12-08T15:00:24.159Z", + "postProcessHash": "73afdaf8dc0afea20f322bf5dd0d8ec302a834dfa7d198530fab5975eaa91d50" } } }, "3b1cbb6e195c80499a2e87a4113a5667b2d5ae17a6eede037cb934c6553c1719": { "24cdd5c830e523191064a5306b5438d702b45a5f2c4372a6f7186a64c2314e6b": { "ja": { - "updatedAt": "2025-12-01T18:59:36.536Z" + "updatedAt": "2025-12-08T15:00:24.149Z", + "postProcessHash": "895537e96fd0505858fae1bdd460dbab3a29a4a4e7a5f0d99555dc4c0288296e" }, "es": { - "updatedAt": "2025-12-01T18:59:36.536Z" + "updatedAt": "2025-12-08T15:00:24.149Z", + "postProcessHash": "62c148fbb09d8c00e2ae6ba2202fcc57b2561830cfe2be5ac483a3fe9e9925ad" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.537Z" + "updatedAt": "2025-12-08T15:00:24.150Z", + "postProcessHash": "f2a7d216db745b538d73fdc393f6fb7fc0569dfba00a36d72c3ad7bad7eb788b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.537Z" + "updatedAt": "2025-12-08T15:00:24.151Z", + "postProcessHash": "11a18355e1259a5dcb57c754025feea5505c096a55cd2e78912cfbb38f56b1e4" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.542Z" + "updatedAt": "2025-12-08T15:00:24.163Z", + "postProcessHash": "74af0ce3192e406648498a4b00fdd03defe1de938405d70d16b90f37af0ad945" } } }, "2d044f81baa5ce8fe73a57ee9de7f08ab3ecd777eecaea875733544ff2fcde35": { "3da76192e9e31cc18adf5228894f4674f691fd8c7d3ea765cbc8a6dc9a7a3b04": { "fr": { - "updatedAt": "2025-12-01T18:59:36.543Z" + "updatedAt": "2025-12-08T15:00:24.374Z", + "postProcessHash": "7843a808045c61fd799e0382420f792232a2dbb68b0bcb4a2947760cb368ee75" }, "es": { - "updatedAt": "2025-12-01T18:59:36.543Z" + "updatedAt": "2025-12-08T15:00:24.380Z", + "postProcessHash": "7843a808045c61fd799e0382420f792232a2dbb68b0bcb4a2947760cb368ee75" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.557Z" + "updatedAt": "2025-12-08T15:00:24.182Z", + "postProcessHash": "0c35d83152a12ab007cf551d5efd5c4d74cea1a14d4edaa374500a56dca66447" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.560Z" + "updatedAt": "2025-12-08T15:00:24.376Z", + "postProcessHash": "7843a808045c61fd799e0382420f792232a2dbb68b0bcb4a2947760cb368ee75" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.561Z" + "updatedAt": "2025-12-08T15:00:24.378Z", + "postProcessHash": "7843a808045c61fd799e0382420f792232a2dbb68b0bcb4a2947760cb368ee75" } } }, "389e5298d5251316e9fdd74197805b174ba7830cab4fe1e5c475d759d580299e": { "9356a143e11affcbaca5464b709590bfd831d52dfd9445c5ddb4d4aa4ea1dcf1": { "fr": { - "updatedAt": "2025-12-01T18:59:36.563Z" + "updatedAt": "2025-12-08T15:00:24.122Z", + "postProcessHash": "739926b1e1298e12ce1a62405e452fc4a92c27e44191aa258ad145125da9f8b1" }, "es": { - "updatedAt": "2025-12-01T18:59:36.548Z" + "updatedAt": "2025-12-08T15:00:24.173Z", + "postProcessHash": "eacae1a03010618a4bd0260730545e1be950b1751a781bea3ece760dca4d4d1c" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.569Z" + "updatedAt": "2025-12-08T15:00:24.173Z", + "postProcessHash": "6daf4b46361974f736c65e81e598e22b57797fca512842a3c383ae71e57109a8" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.569Z" + "updatedAt": "2025-12-08T15:00:24.174Z", + "postProcessHash": "106f66ea1503d277d53082dbc83bb10ee8c4cabfb93c4359d00c336c19eb621c" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.571Z" + "updatedAt": "2025-12-08T15:00:24.357Z", + "postProcessHash": "d7635ebefacc2da4e6d1c0f30cb3ccf0d6df4f38ac600224ad061fed50d9d17a" } } }, "effe2ea2d4138bd05b509fa11dc45d3086effd51b14db25e74b538ab907e586b": { "a9a08b0825496e5bc41c7fb37ed94bc13fd7d27c4ee252c0158175f8de707c66": { "ja": { - "updatedAt": "2025-12-01T18:59:36.563Z" + "updatedAt": "2025-12-08T15:00:24.130Z", + "postProcessHash": "5a5cb6a01a6d2c4f6b9271ef4acc173ed494d1e4a26f93a1ee957d1921c2a357" }, "es": { - "updatedAt": "2025-12-01T18:59:36.564Z" + "updatedAt": "2025-12-08T15:00:24.164Z", + "postProcessHash": "e107f61bc42a85ac602e24ee2040849e3146697b30e815076aee3c67a43e88bc" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.565Z" + "updatedAt": "2025-12-08T15:00:24.165Z", + "postProcessHash": "59e8561beee6e0e5ac45fc600ed18975b3555de13a82101190d415878c875a8b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.566Z" + "updatedAt": "2025-12-08T15:00:24.168Z", + "postProcessHash": "6e4bfff730ed167e4e142ce9a4fa801c58ff248cd5718719bab31c468463ce1d" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.567Z" + "updatedAt": "2025-12-08T15:00:24.168Z", + "postProcessHash": "e27b1b6ffdfe269855e6d675bf39fe803e6e52a231fae0786b8f648ac1af2d09" } } }, "10844edc6c0014b315d27029003fd9afe32846a4464e400dac1b643378446cd6": { "8d65f2dc3d48fe6f4b0a6f09fe4e655996bee2a2c34f686e46675d83847d94c6": { "fr": { - "updatedAt": "2025-12-01T18:59:36.563Z" + "updatedAt": "2025-12-08T15:00:24.131Z", + "postProcessHash": "069fa0c69aaa564656732b9e05194b3134bc87e3570eb982d45afa7b634d83dd" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.564Z" + "updatedAt": "2025-12-08T15:00:24.132Z", + "postProcessHash": "93045effa20eba210387de9379d770773b161347c288380bffe7d7eb2de6fb0f" }, "es": { - "updatedAt": "2025-12-01T18:59:36.565Z" + "updatedAt": "2025-12-08T15:00:24.166Z", + "postProcessHash": "65279dfa82cb21973789bb6c0dbfd00119cc0ebd2f31abc163a6a9800eb03c9d" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.565Z" + "updatedAt": "2025-12-08T15:00:24.167Z", + "postProcessHash": "c41822cdeb9c06e7b0c096709d76cead2eaab49b6e63ebf9d4bc36e4c013954a" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.565Z" + "updatedAt": "2025-12-08T15:00:24.167Z", + "postProcessHash": "06e991398da48a872bfee385f35aee8b51f14a79fd02de94a31e8e2800ef3f22" } } }, "9481c2c4d56f8f82c97911859b4e850a0d9ed187c529616fc25d8f191daedc97": { "414f334c9a3508470fd77120618d271ee5177fbbc7e39cda246490735ea1bdea": { "zh": { - "updatedAt": "2025-12-01T18:59:36.548Z" + "updatedAt": "2025-12-08T15:00:24.171Z", + "postProcessHash": "414f334c9a3508470fd77120618d271ee5177fbbc7e39cda246490735ea1bdea" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.549Z" + "updatedAt": "2025-12-08T15:00:24.354Z", + "postProcessHash": "1034e807213f98ee1fe91ad461eb1fdaedcb171c896d7da76b6d3993e8ec7f9b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.551Z" + "updatedAt": "2025-12-08T15:00:24.361Z", + "postProcessHash": "414f334c9a3508470fd77120618d271ee5177fbbc7e39cda246490735ea1bdea" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.551Z" + "updatedAt": "2025-12-08T15:00:24.362Z", + "postProcessHash": "48d4e6b450eb68abdd1f3f8e3649b462802a49cd7d13e6ebf8a518a322ef0058" }, "es": { - "updatedAt": "2025-12-01T18:59:36.552Z" + "updatedAt": "2025-12-08T15:00:24.368Z", + "postProcessHash": "414f334c9a3508470fd77120618d271ee5177fbbc7e39cda246490735ea1bdea" } } }, "7c79ddd3fbf3a3416ca5bb48821f50b9777e6ba01f25dff0124e46bc5e0842ba": { "5df152e3e8ce360183f9dcd0a564274c401b8065f077ab74e2ecf11072624016": { "ja": { - "updatedAt": "2025-12-01T18:59:36.548Z" + "updatedAt": "2025-12-08T15:00:24.175Z", + "postProcessHash": "5df152e3e8ce360183f9dcd0a564274c401b8065f077ab74e2ecf11072624016" }, "es": { - "updatedAt": "2025-12-01T18:59:36.549Z" + "updatedAt": "2025-12-08T15:00:24.176Z", + "postProcessHash": "1effa8ddcb8d1320c7b3b2e7adcf77052fda6796282ffd5cd972c9a124dfdc60" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.551Z" + "updatedAt": "2025-12-08T15:00:24.365Z", + "postProcessHash": "5df152e3e8ce360183f9dcd0a564274c401b8065f077ab74e2ecf11072624016" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.552Z" + "updatedAt": "2025-12-08T15:00:24.370Z", + "postProcessHash": "5df152e3e8ce360183f9dcd0a564274c401b8065f077ab74e2ecf11072624016" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.553Z" + "updatedAt": "2025-12-08T15:00:24.371Z", + "postProcessHash": "979179f6045c270f7e425de3c29f6f2ccac6afea64c44b1d6935747b03d672f4" } } }, "85e067a93f1383fa2da195c647d0a13a92dd8e9ea284668395676725eb96b04d": { "623c59ae72b8f8ce6d1fecc122cb22bbb0cd6b23527759b3e1c3668bd71dd844": { "zh": { - "updatedAt": "2025-12-01T18:59:36.548Z" + "updatedAt": "2025-12-08T15:00:24.175Z", + "postProcessHash": "e7d06ec126b64a763be322584f195aba583fd266d76722ef442d1f6dda183ed5" }, "es": { - "updatedAt": "2025-12-01T18:59:36.549Z" + "updatedAt": "2025-12-08T15:00:24.354Z", + "postProcessHash": "d6d3c848265a19667974f9a90b285c4b6c9830f2378bf2a83344fab7f19eed86" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.550Z" + "updatedAt": "2025-12-08T15:00:24.355Z", + "postProcessHash": "ef6cf91fa75437b085034540a9c16de2cd9c842fcef82f2aa6a54795915c5968" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.550Z" + "updatedAt": "2025-12-08T15:00:24.359Z", + "postProcessHash": "ddff6b43cfa3ee88550f5fa3a3397e893ef57261c8bbf6984c732f7da0d8011b" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.552Z" + "updatedAt": "2025-12-08T15:00:24.368Z", + "postProcessHash": "eb02bb9afb5bf31d68377a301e9bd814672a5c7ad58a53cd8a1bab17be0fde01" } } }, "d63950c691f085fc20c2ce43600e6ceca1ce497d4f57e8a2874f2930ab35a052": { "3512611a600dcb841829ac156bff94f6d061199ea686aa563c11fc2841a831e6": { "es": { - "updatedAt": "2025-12-01T18:59:36.551Z" + "updatedAt": "2025-12-08T15:00:24.364Z", + "postProcessHash": "3512611a600dcb841829ac156bff94f6d061199ea686aa563c11fc2841a831e6" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.553Z" + "updatedAt": "2025-12-08T15:00:24.371Z", + "postProcessHash": "3512611a600dcb841829ac156bff94f6d061199ea686aa563c11fc2841a831e6" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.554Z" + "updatedAt": "2025-12-08T15:00:24.372Z", + "postProcessHash": "5597eeaef41e444af4886e1045bc8b0759a56eb331eec8f984194bcac0d15c7d" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.554Z" + "updatedAt": "2025-12-08T15:00:24.372Z", + "postProcessHash": "3512611a600dcb841829ac156bff94f6d061199ea686aa563c11fc2841a831e6" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.554Z" + "updatedAt": "2025-12-08T15:00:24.373Z", + "postProcessHash": "ce87cf3d0df1f0ec3b0731d4ac36938aeb6f55252a57b02190a033e95c21572c" } } }, "87482778e23f7bceaab8e8151d60dd1b771c8f493bff43e8be7097b161b5c1d8": { "a889de34aad891fe09527fa4ea54d9da7a1931d87b4932d5eae63175cfa20b4c": { "ja": { - "updatedAt": "2025-12-01T18:59:36.556Z" + "updatedAt": "2025-12-08T15:00:24.179Z", + "postProcessHash": "cdd48c557f44182d26c0b41c7ea9e89c6a38b7df8a324ad75df2310b80b2440b" }, "es": { - "updatedAt": "2025-12-01T18:59:36.557Z" + "updatedAt": "2025-12-08T15:00:24.180Z", + "postProcessHash": "cdd48c557f44182d26c0b41c7ea9e89c6a38b7df8a324ad75df2310b80b2440b" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.559Z" + "updatedAt": "2025-12-08T15:00:24.184Z", + "postProcessHash": "cdd48c557f44182d26c0b41c7ea9e89c6a38b7df8a324ad75df2310b80b2440b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.561Z" + "updatedAt": "2025-12-08T15:00:24.379Z", + "postProcessHash": "cdd48c557f44182d26c0b41c7ea9e89c6a38b7df8a324ad75df2310b80b2440b" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.562Z" + "updatedAt": "2025-12-08T15:00:24.379Z", + "postProcessHash": "cdd48c557f44182d26c0b41c7ea9e89c6a38b7df8a324ad75df2310b80b2440b" } } }, @@ -27989,76 +30809,240 @@ "c2e553142d3da7d83c2f5c35aa6287684604aec1a6a565135c5fed3939d19357": { "eeffe73ab4852e81b6c57b151b3e4891a9718aa369eac8133562daf0d9f8e9a4": { "zh": { - "updatedAt": "2025-12-01T18:59:35.736Z" + "updatedAt": "2025-12-08T15:00:22.498Z", + "postProcessHash": "f35d92be59322f3b2161da2bcd7dbeecc8cb714fbe3a260a453b181a24cfe0d5" }, "es": { - "updatedAt": "2025-12-01T18:59:35.736Z" + "updatedAt": "2025-12-08T15:00:22.499Z", + "postProcessHash": "74c237ba5c4cf815cde3b6be55c5a5bd4475b37106983d862018e6bd40bc1c96" }, "fr": { - "updatedAt": "2025-12-01T18:59:35.737Z" + "updatedAt": "2025-12-08T15:00:22.500Z", + "postProcessHash": "0a3ccc2d8f7065125580e13d2a6488a33ad0042820110d6d79508969c4a87cbf" }, "ja": { - "updatedAt": "2025-12-01T18:59:35.737Z" + "updatedAt": "2025-12-08T15:00:22.502Z", + "postProcessHash": "ba7a752bae764efbedd77d86c1a931b6e6a5f978b47f69a6c16d32a3ffecaab2" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:35.738Z" + "updatedAt": "2025-12-08T15:00:22.594Z", + "postProcessHash": "36a3965dc8d004b050ca5fc007a592ce26650651a9e248b5a5f0be81e93a3c6e" } } }, "b4f7b00614b406850462159d40609b528f74c9618615dfdba536e138a7d83197": { "50ec9d2e8160125cc47455dc044a7bd026789904e3a50f7c402773c4472e7b7f": { "fr": { - "updatedAt": "2025-12-01T18:59:36.567Z" + "updatedAt": "2025-12-08T15:00:24.169Z", + "postProcessHash": "162de995920103013c9556702c9e58034d3ace40bac34471b48500f32209c0d3" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.567Z" + "updatedAt": "2025-12-08T15:00:24.170Z", + "postProcessHash": "dc54ae2bfa66b8292c067a9a6b21cbea19a7df5566ad2043c097d6e509d016ad" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.570Z" + "updatedAt": "2025-12-08T15:00:24.174Z", + "postProcessHash": "d8cc134bc55efd65902f5a71f76136091a07d944e1621cfc955cfaf044f5a91b" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.570Z" + "updatedAt": "2025-12-08T15:00:24.356Z", + "postProcessHash": "676dccd0939694d71fdbda9bff64c7a2f2fc443448d69aeee8e779d60a143a7c" }, "es": { - "updatedAt": "2025-12-01T18:59:36.570Z" + "updatedAt": "2025-12-08T15:00:24.357Z", + "postProcessHash": "3d02a1c2154e364e936edf211a1208fa2fbec6d12a6bafe087e6aea958382ecb" } } }, "e316e21da3041ad69d295a1830dfa74305883a0c7fc8864de293ce4d71bb556d": { "54b547fbe9dec035ff0e06c35dde8f8574e9fd82230497618852c885a3172739": { "zh": { - "updatedAt": "2025-12-01T18:59:36.568Z" + "updatedAt": "2025-12-08T15:00:24.170Z", + "postProcessHash": "54b547fbe9dec035ff0e06c35dde8f8574e9fd82230497618852c885a3172739" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.568Z" + "updatedAt": "2025-12-08T15:00:24.172Z", + "postProcessHash": "54b547fbe9dec035ff0e06c35dde8f8574e9fd82230497618852c885a3172739" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.568Z" + "updatedAt": "2025-12-08T15:00:24.172Z", + "postProcessHash": "cf32901160706f5ffd3fa88484c3b44fa5e81850bc03e6950181dc1df69c8754" }, "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.571Z" + "updatedAt": "2025-12-08T15:00:24.359Z", + "postProcessHash": "54b547fbe9dec035ff0e06c35dde8f8574e9fd82230497618852c885a3172739" }, "es": { - "updatedAt": "2025-12-01T18:59:36.572Z" + "updatedAt": "2025-12-08T15:00:24.369Z", + "postProcessHash": "54b547fbe9dec035ff0e06c35dde8f8574e9fd82230497618852c885a3172739" } } }, "c3304e1d1e0d87b6b54de058973970bc701ca15333cf6aa3bf29624ce2718382": { "cd50140ba4b6f0e065b2c04ccf02214fe58fcc5b92e0e6341aea433d318fdabb": { "pt-BR": { - "updatedAt": "2025-12-01T18:59:36.571Z" + "updatedAt": "2025-12-08T15:00:24.358Z", + "postProcessHash": "bc5d297680b75d5c0a5970e56a3f650163230f25b78ce23b956d48044955bda1" }, "ja": { - "updatedAt": "2025-12-01T18:59:36.571Z" + "updatedAt": "2025-12-08T15:00:24.360Z", + "postProcessHash": "623fb472e8a6a710045fbf0fa83c7d620ff62fbd20aeb19b57d35dc538d3cd0a" }, "es": { - "updatedAt": "2025-12-01T18:59:36.572Z" + "updatedAt": "2025-12-08T15:00:24.363Z", + "postProcessHash": "bcf14e4f61f8f08e6f5733d56bceb3b84a852a7576a3dbbded11ac55034b6e59" }, "zh": { - "updatedAt": "2025-12-01T18:59:36.572Z" + "updatedAt": "2025-12-08T15:00:24.364Z", + "postProcessHash": "dbc651e353b4d9188d570f7fb37396dee9792e5da39e5219cd09e116d52027aa" }, "fr": { - "updatedAt": "2025-12-01T18:59:36.572Z" + "updatedAt": "2025-12-08T15:00:24.367Z", + "postProcessHash": "04b8a21f03de1e3eea50e8465a7365b7e2d414a961184efea04ce77f08dff228" + } + } + }, + "db502878f734e676c2e3e5472fcdb6660ec7bd440b7c73a30b32f76b5418110e": { + "405ac758c0cbea3920b67882fa89b42b37f299bfaa41b02b56e00539db7d00fa": { + "fr": { + "updatedAt": "2025-12-08T15:00:24.193Z", + "postProcessHash": "9e223eb90ef5c1b8bb3fff32dcd37ec73fe146d35de3cc833122134577287e9c" + }, + "es": { + "updatedAt": "2025-12-08T15:00:24.214Z", + "postProcessHash": "1582efdeecec8cf3c51f02a4264a07736e05eec1437c456953002dbdf2554b80" + }, + "ja": { + "updatedAt": "2025-12-08T15:00:24.262Z", + "postProcessHash": "8bdbced793c654311314e332bdb0f4b09cd1ff7f4a92d02b51136b2e3e560c37" + }, + "zh": { + "updatedAt": "2025-12-08T15:00:24.268Z", + "postProcessHash": "2b477ecdb377fbb72b59f34f3f8ee0370ad24257991f2e63d455b165968fc02d" + }, + "pt-BR": { + "updatedAt": "2025-12-08T15:00:24.314Z", + "postProcessHash": "7a42734e213e568fcb140d0005cd854831ed92f435a9653f8f7aa25259c69380" + } + } + }, + "088b88f900a40ccb5816bdf89adc30a10731f316d6d5b9eeb71040de9bac9064": { + "4c3d0d9265ccdad8bd071304696a67ea4ddfe6ca64dc6811f0c8162df05c7b6b": { + "pt-BR": { + "updatedAt": "2025-12-08T15:00:24.200Z", + "postProcessHash": "011b9ef5231c2276007fe70731dc88671c8d8a95c4c9546f90922a2ca3073344" + }, + "es": { + "updatedAt": "2025-12-08T15:00:24.222Z", + "postProcessHash": "e1f790550da4807bb6fb9ea724c4dad850abfc5f2554159d790ad5910a22160c" + }, + "fr": { + "updatedAt": "2025-12-08T15:00:24.245Z", + "postProcessHash": "6dff13c1eab59bb86990cb6cf6e9ab52ab5b4f936cef3970ecebaaa74990395a" + }, + "zh": { + "updatedAt": "2025-12-08T15:00:24.276Z", + "postProcessHash": "806ea8c668751f532864f1a97580cad8ad102e461db8e0305ebe212dead502b0" + }, + "ja": { + "updatedAt": "2025-12-08T15:00:24.332Z", + "postProcessHash": "406c036fcaf95d289c20c46e74db60ff47c48f4d5d5ae0655df8d972cab0d992" + } + } + }, + "8ad6861d84b162d093bdd5d36b6696d95a1eecb61245885ed9b375442921ec03": { + "c247088a6137a155413b2c6c150251e4d8cc2cc6221be3187bf9ff5872b77410": { + "es": { + "updatedAt": "2025-12-08T15:00:24.208Z", + "postProcessHash": "6816c106212e650560459551394ad3304f9d7462092dd49f983b0c2fcb07bad8" + }, + "zh": { + "updatedAt": "2025-12-08T15:00:24.288Z", + "postProcessHash": "81db61dce9f35ff816f10c407a6387f2e85d0c9309aacb1187d7f1ebc29d6b86" + }, + "ja": { + "updatedAt": "2025-12-08T15:00:24.295Z", + "postProcessHash": "1d1926f19e012056c1a89cbba760cab4e62112ef5720934d88915260741c0081" + }, + "pt-BR": { + "updatedAt": "2025-12-08T15:00:24.302Z", + "postProcessHash": "b372c7c5a9df7b1ff187e5c9f3242b33c77ebfb83f6c28923ae93a956b065a76" + }, + "fr": { + "updatedAt": "2025-12-08T15:00:24.309Z", + "postProcessHash": "7eb5cb6d18ee604dbcf984f8b7f9dca1ec45d22360869fb77b437eba9b85cffc" + } + } + }, + "f28d42289beba89b84909ca9b46cabfe2c98b8998cfeeab209fe0aad63527511": { + "e2f3e6d05fba8ffac84cb199ea0c253af4d017220618b2afa34e42222817a4ba": { + "ja": { + "updatedAt": "2025-12-08T15:00:24.229Z", + "postProcessHash": "0a79762b1ded421e92852982102b191f9481cd51757ebbf653c14f17ea9cabc9" + }, + "pt-BR": { + "updatedAt": "2025-12-08T15:00:24.235Z", + "postProcessHash": "f514011c4ec310406481c553a3fd105f9541f4a2987d1b1b91e1ef6e0a47f318" + }, + "es": { + "updatedAt": "2025-12-08T15:00:24.255Z", + "postProcessHash": "70c2f0b913dc56611f59a832b04658f404b4d08e36a3d268b12297f88097adc7" + }, + "fr": { + "updatedAt": "2025-12-08T15:00:24.320Z", + "postProcessHash": "af78d3282174459bf31e5b4c4d4d1e02aa21819481ecfbc4fdc080325d76b239" + }, + "zh": { + "updatedAt": "2025-12-08T15:00:24.350Z", + "postProcessHash": "f18782786c8a3414190be3781f7f1a0bfcb7415eb28e5bd262f27a3509ab760f" + } + } + }, + "6737dc85f682b60e4520761b2a26c06e1efbb507c21ca59e94ff9bb6424d368c": { + "875e43c536af85234c0567e70d602540f95f2a33505a005aebaf6dc77c26bf27": { + "pt-BR": { + "updatedAt": "2025-12-08T15:00:24.237Z", + "postProcessHash": "95d8ac0c38ee784e3531235ad4091f4f249c3d7eba7df9db657a4310230bf37c" + }, + "fr": { + "updatedAt": "2025-12-08T15:00:24.246Z", + "postProcessHash": "ed9959a023afaaed22d03d950edf49f01b1f70d8aaaa0ba38c8f1cb7d560fb17" + }, + "ja": { + "updatedAt": "2025-12-08T15:00:24.248Z", + "postProcessHash": "7ac2fd167c3bf6e1b0a1bf75088b543b1ca6443183fe25677aa0230c3e3105e8" + }, + "es": { + "updatedAt": "2025-12-08T15:00:24.322Z", + "postProcessHash": "02b44a2bf9ae9d2aa09d867b999b21543a1f1785284130fa17f57e037bd66a94" + }, + "zh": { + "updatedAt": "2025-12-08T15:00:24.324Z", + "postProcessHash": "ff95eff1b38a1c2724642ec3f4f8fa1dae68644aaca08ad4ac5278d98a975d5c" + } + } + }, + "c576cb8669e5e706de6276efb21e39fc0ad0776e2cb817bef6619d012b3eb928": { + "50f1873659173ca8a37e540a7aab5cb25e5e826a5f85f39d8737a3c40a9ffbac": { + "es": { + "updatedAt": "2025-12-08T15:00:24.269Z", + "postProcessHash": "99f7f374e8c453c0cda3ebeeed95003b84bebd4fe45378031ffde1f7bb235f69" + }, + "fr": { + "updatedAt": "2025-12-08T15:00:24.269Z", + "postProcessHash": "797f52e4b553315901749d523198b6ee19ab1c043e61badf4b7a8992e7b41d84" + }, + "pt-BR": { + "updatedAt": "2025-12-08T15:00:24.276Z", + "postProcessHash": "0e55676b311360e3e8a669fdd3c3eecdc5f4402ef36aa4e48b5516a4d6d41b90" + }, + "zh": { + "updatedAt": "2025-12-08T15:00:24.325Z", + "postProcessHash": "c2b107ec2ee44b294c513549f5cf12f4d116d30b234c89ad687a77a5c25614ba" + }, + "ja": { + "updatedAt": "2025-12-08T15:00:24.325Z", + "postProcessHash": "1c0e9495b8cacb1b6bca2e0579fdbf7fac96c84bc57a90bfe68687d5fe595b07" } } } diff --git a/gt.config.json b/gt.config.json index 89975140..83de9b1a 100644 --- a/gt.config.json +++ b/gt.config.json @@ -3,7 +3,34 @@ "files": { "json": { "include": [ - "./docs.json" + "./docs.json", + "./api-reference/v1-openapi.json", + "./api-reference/v2-openapi.json", + "./v0/api-reference/v0-openapi.json", + "./v1/api-reference/v1-openapi.json", + "./v1/api-reference/v2-openapi.json" + ], + "transform": [ + { + "match": "^api-reference/v1-openapi.json$", + "replace": "{locale}/api-reference/v1-openapi.json" + }, + { + "match": "^api-reference/v2-openapi.json$", + "replace": "{locale}/api-reference/v2-openapi.json" + }, + { + "match": "^v0/api-reference/v0-openapi.json$", + "replace": "{locale}/v0/api-reference/v0-openapi.json" + }, + { + "match": "^v1/api-reference/v1-openapi.json$", + "replace": "{locale}/v1/api-reference/v1-openapi.json" + }, + { + "match": "^v1/api-reference/v2-openapi.json$", + "replace": "{locale}/v1/api-reference/v2-openapi.json" + } ] }, "mdx": { @@ -56,6 +83,21 @@ "experimentalSort": "locales" } } + }, + "./api-reference/v1-openapi.json": { + "preset": "openapi" + }, + "./api-reference/v2-openapi.json": { + "preset": "openapi" + }, + "./v0/api-reference/v0-openapi.json": { + "preset": "openapi" + }, + "./v1/api-reference/v1-openapi.json": { + "preset": "openapi" + }, + "./v1/api-reference/v2-openapi.json": { + "preset": "openapi" } }, "docsUrlPattern": "/[locale]", @@ -66,6 +108,17 @@ "docsHideDefaultLocaleImport": true, "experimentalHideDefaultLocale": true, "experimentalAddHeaderAnchorIds": "mintlify", - "experimentalClearLocaleDirs": true + "experimentalClearLocaleDirs": true, + "mintlify": { + "openapi": { + "files": [ + "./api-reference/v1-openapi.json", + "./api-reference/v2-openapi.json", + "./v0/api-reference/v0-openapi.json", + "./v1/api-reference/v1-openapi.json", + "./v1/api-reference/v2-openapi.json" + ] + } + } } } \ No newline at end of file diff --git a/ja/_essentials/code.mdx b/ja/_essentials/code.mdx index 8d16f11a..bfb768bf 100644 --- a/ja/_essentials/code.mdx +++ b/ja/_essentials/code.mdx @@ -18,7 +18,6 @@ icon: "code" 「単語」や「語句」をコードとして示すには、バッククォート(`)で囲みます。 ``` -
### コードブロック
diff --git a/ja/_essentials/markdown.mdx b/ja/_essentials/markdown.mdx index 04a46aa5..31172919 100644 --- a/ja/_essentials/markdown.mdx +++ b/ja/_essentials/markdown.mdx @@ -14,7 +14,6 @@ icon: 'text-size' ## 見出し ``` -
### サブタイトル
@@ -29,7 +28,6 @@ icon: 'text-size' 各**タイトル**と**サブタイトル**はアンカーを生成し、右側の目次にも表示されます。 -
## テキストの書式設定
@@ -77,7 +75,6 @@ icon: 'text-size' > ドロシーは、彼女に導かれて彼女の城の多くの美しい部屋を通り抜けていった。 ``` -
### 複数行
@@ -92,7 +89,6 @@ icon: 'text-size' > 魔女は、鍋ややかんを洗い、床を掃き、薪をくべて火を絶やさないようにすることを彼女に命じた。 ``` -
### LaTeX
diff --git a/ja/_essentials/navigation.mdx b/ja/_essentials/navigation.mdx index 1781a1ec..0a4f141f 100644 --- a/ja/_essentials/navigation.mdx +++ b/ja/_essentials/navigation.mdx @@ -63,7 +63,6 @@ MDXファイルをフォルダに配置し、`mint.json` のパスを更新す ] ``` -
## 非表示ページ
diff --git a/ja/advanced-scraping-guide.mdx b/ja/advanced-scraping-guide.mdx index bed2774e..173f1227 100644 --- a/ja/advanced-scraping-guide.mdx +++ b/ja/advanced-scraping-guide.mdx @@ -242,7 +242,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ APIリファレンスはこちら: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## フォーマットによるJSON抽出
@@ -263,7 +262,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ }' ``` -
## Extract エンドポイント
@@ -336,7 +334,6 @@ IDを返します { "id": "1234-5678-9101" } ``` -
### クローラー ジョブの確認
@@ -349,7 +346,6 @@ curl -X GET https://api.firecrawl.dev/v2/crawl/1234-5678-9101 \ -H 'Authorization: Bearer fc-YOUR-API-KEY' ``` -
#### ページネーション/次のURL
@@ -372,7 +368,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl/params-preview \ }' ``` -
### クローラーのオプション
@@ -468,7 +463,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl \ }' ``` - @@ -488,7 +482,6 @@ curl -X POST https://api.firecrawl.dev/v2/map \ }' ``` -
### マップオプション
diff --git a/ja/agents/fire-1-extract.mdx b/ja/agents/fire-1-extract.mdx index f66c5a0d..af4b873b 100644 --- a/ja/agents/fire-1-extract.mdx +++ b/ja/agents/fire-1-extract.mdx @@ -52,7 +52,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ この例では、FIRE-1(エージェント)に、最終的なスクレイプを行う前に商品リストをページ送り(ページネーション)するよう指示しています。 -
### FIRE-1 を /extract エンドポイントで使う
@@ -94,7 +93,6 @@ curl -X POST https://api.firecrawl.dev/v1/extract \ ここでは、エージェントが提供されたスキーマとプロンプトに基づく抽出を開始する前に、「Load More Comments」ボタンを操作して、ページ上のすべてのコメントが読み込まれていることを確実にします。 **注:** FIRE-1(エージェント)は強力ですが、ナビゲーション指示の複雑さや操作するページ数によっては、クレジット消費が増える場合があります。 -
### FIRE-1 の紹介: インテリジェントなナビゲーションとインタラクション
@@ -124,7 +122,6 @@ FIRE-1 の有効化は簡単です。/scrape エンドポイントまたは /ext *注記:* `prompt` フィールドはスクレイプリクエストで必須で、FIRE-1 にウェブページとの具体的なインタラクション方法を正確に指示します。 -
## /scrape エンドポイントの使用例
@@ -147,7 +144,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ このシナリオでは、FIRE-1(エージェント)がページネーションを自動で適切にたどり、すべての商品を取得します。 -
## 留意事項
diff --git a/ja/agents/fire-1.mdx b/ja/agents/fire-1.mdx index 98407166..99cdef77 100644 --- a/ja/agents/fire-1.mdx +++ b/ja/agents/fire-1.mdx @@ -13,7 +13,6 @@ import ExtractFire1CURL from "/snippets/ja/v1/scrape/agent-f1/python.mdx"; FIRE-1 は、Firecrawl のスクレイピング機能を強化する AI エージェントです。ブラウザのアクションを制御し、複雑なウェブサイト構造を自在に探索して、従来のスクレイピングを超える包括的なデータ抽出を実現します。 -
### FIRE-1でできること:
diff --git a/ja/api-reference/endpoint/batch-scrape-delete.mdx b/ja/api-reference/endpoint/batch-scrape-delete.mdx index 65341347..2e4fa2dc 100644 --- a/ja/api-reference/endpoint/batch-scrape-delete.mdx +++ b/ja/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,4 +1,4 @@ --- title: "バッチスクレイプのキャンセル" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/batch-scrape-get-errors.mdx b/ja/api-reference/endpoint/batch-scrape-get-errors.mdx index a45ef1d5..c4f6a2cc 100644 --- a/ja/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/ja/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,4 +1,4 @@ --- title: 'バッチスクレイプのエラーを取得する' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/batch-scrape-get.mdx b/ja/api-reference/endpoint/batch-scrape-get.mdx index d3ae39aa..d125b659 100644 --- a/ja/api-reference/endpoint/batch-scrape-get.mdx +++ b/ja/api-reference/endpoint/batch-scrape-get.mdx @@ -1,4 +1,4 @@ --- title: 'バッチスクレイプのステータス取得' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/batch-scrape.mdx b/ja/api-reference/endpoint/batch-scrape.mdx index 615d4bdb..65cf66bf 100644 --- a/ja/api-reference/endpoint/batch-scrape.mdx +++ b/ja/api-reference/endpoint/batch-scrape.mdx @@ -1,4 +1,4 @@ --- title: "バッチスクレープ" -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/crawl-active.mdx b/ja/api-reference/endpoint/crawl-active.mdx index 4be59515..58ebf7a0 100644 --- a/ja/api-reference/endpoint/crawl-active.mdx +++ b/ja/api-reference/endpoint/crawl-active.mdx @@ -1,4 +1,4 @@ --- title: "実行中のクロールの取得" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/crawl-delete.mdx b/ja/api-reference/endpoint/crawl-delete.mdx index d0171bb8..924717c9 100644 --- a/ja/api-reference/endpoint/crawl-delete.mdx +++ b/ja/api-reference/endpoint/crawl-delete.mdx @@ -1,4 +1,4 @@ --- title: "クロールのキャンセル" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/crawl-get-errors.mdx b/ja/api-reference/endpoint/crawl-get-errors.mdx index 0e5ddd24..78855beb 100644 --- a/ja/api-reference/endpoint/crawl-get-errors.mdx +++ b/ja/api-reference/endpoint/crawl-get-errors.mdx @@ -1,4 +1,4 @@ --- title: "クロールのエラーを取得" -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/crawl-get.mdx b/ja/api-reference/endpoint/crawl-get.mdx index 54d8f22b..d651703c 100644 --- a/ja/api-reference/endpoint/crawl-get.mdx +++ b/ja/api-reference/endpoint/crawl-get.mdx @@ -1,4 +1,4 @@ --- title: "クロールのステータスを取得" -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/crawl-params-preview.mdx b/ja/api-reference/endpoint/crawl-params-preview.mdx index 1458dd90..b1300094 100644 --- a/ja/api-reference/endpoint/crawl-params-preview.mdx +++ b/ja/api-reference/endpoint/crawl-params-preview.mdx @@ -1,6 +1,6 @@ --- title: "Crawl パラメータのプレビュー" -openapi: 'v2-openapi POST /crawl/params-preview' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /crawl/params-preview' ---
@@ -18,7 +18,6 @@ openapi: 'v2-openapi POST /crawl/params-preview' } ``` -
### 応答
diff --git a/ja/api-reference/endpoint/crawl-post.mdx b/ja/api-reference/endpoint/crawl-post.mdx index 9c9d4c05..b1defb51 100644 --- a/ja/api-reference/endpoint/crawl-post.mdx +++ b/ja/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'クロール' -openapi: 'v2-openapi POST /crawl' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -22,7 +22,6 @@ openapi: 'v2-openapi POST /crawl' これにより、プロンプトがクロール実行用のクローラー設定一式にマッピングされます。 -
### サイトマップ制御の改善
diff --git a/ja/api-reference/endpoint/credit-usage-historical.mdx b/ja/api-reference/endpoint/credit-usage-historical.mdx index b8261405..98473a43 100644 --- a/ja/api-reference/endpoint/credit-usage-historical.mdx +++ b/ja/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "クレジット使用履歴" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- 月ごとのクレジット使用状況を返します。必要に応じて、APIキーごとの内訳も取得できます。 \ No newline at end of file diff --git a/ja/api-reference/endpoint/credit-usage.mdx b/ja/api-reference/endpoint/credit-usage.mdx index 95db7437..c05f987b 100644 --- a/ja/api-reference/endpoint/credit-usage.mdx +++ b/ja/api-reference/endpoint/credit-usage.mdx @@ -1,4 +1,4 @@ --- title: "クレジット利用状況" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/extract-get.mdx b/ja/api-reference/endpoint/extract-get.mdx index beea8a32..e22a80c2 100644 --- a/ja/api-reference/endpoint/extract-get.mdx +++ b/ja/api-reference/endpoint/extract-get.mdx @@ -1,4 +1,4 @@ --- title: "抽出ステータスの取得" -openapi: "v2-openapi GET /extract/{id}" +openapi: "/ja/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}" --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/extract.mdx b/ja/api-reference/endpoint/extract.mdx index 393fc1ed..bcdb9532 100644 --- a/ja/api-reference/endpoint/extract.mdx +++ b/ja/api-reference/endpoint/extract.mdx @@ -1,4 +1,4 @@ --- title: 'Extract' -openapi: 'v2-openapi POST /extract' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /extract' --- \ No newline at end of file diff --git a/ja/api-reference/endpoint/map.mdx b/ja/api-reference/endpoint/map.mdx index a485c06a..9b473c17 100644 --- a/ja/api-reference/endpoint/map.mdx +++ b/ja/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "マップ" -openapi: "v2-openapi POST /map" +openapi: "/ja/api-reference/v1-openapi.json V2-OPENAPI POST /map" ---
@@ -24,7 +24,6 @@ openapi: "v2-openapi POST /map" } ``` -
### レスポンス形式の変更
diff --git a/ja/api-reference/endpoint/queue-status.mdx b/ja/api-reference/endpoint/queue-status.mdx index 8f0c7aba..3b156227 100644 --- a/ja/api-reference/endpoint/queue-status.mdx +++ b/ja/api-reference/endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "キュー状況" -openapi: 'v2-openapi GET /team/queue-status' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/queue-status' --- チームのスクレイプキューに関するメトリクスです。 \ No newline at end of file diff --git a/ja/api-reference/endpoint/scrape.mdx b/ja/api-reference/endpoint/scrape.mdx index 207bf149..e856ff9c 100644 --- a/ja/api-reference/endpoint/scrape.mdx +++ b/ja/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'スクレイプ' -openapi: 'v2-openapi POST /scrape' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' ---
diff --git a/ja/api-reference/endpoint/search.mdx b/ja/api-reference/endpoint/search.mdx index d7a0b016..3fd88e80 100644 --- a/ja/api-reference/endpoint/search.mdx +++ b/ja/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: '検索' -openapi: 'v2-openapi POST /search' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -20,7 +20,6 @@ Web、画像、ニュースをまとめて検索: } ``` -
### レスポンス形式の変更
@@ -38,7 +37,6 @@ v1: 結果はフラットなリスト。v2: ソースタイプ別に整理: } ``` -
### 新機能
@@ -94,7 +92,6 @@ v1: 結果はフラットなリスト。v2: ソースタイプ別に整理: } ``` -
## Categories パラメータ
@@ -117,7 +114,6 @@ v1: 結果はフラットなリスト。v2: ソースタイプ別に整理: } ``` -
### カテゴリ応答
@@ -146,7 +142,6 @@ v1: 結果はフラットなリスト。v2: ソースタイプ別に整理: } ``` - diff --git a/ja/api-reference/endpoint/token-usage-historical.mdx b/ja/api-reference/endpoint/token-usage-historical.mdx index e9657565..f1a6bb3a 100644 --- a/ja/api-reference/endpoint/token-usage-historical.mdx +++ b/ja/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "過去のトークン使用量" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- 月ごとの過去のトークン使用量を返します。必要に応じて、APIキー別の内訳も取得できます。 diff --git a/ja/api-reference/endpoint/token-usage.mdx b/ja/api-reference/endpoint/token-usage.mdx index 71f96a9d..1270dec3 100644 --- a/ja/api-reference/endpoint/token-usage.mdx +++ b/ja/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "トークン使用量" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- 課金体系を見直し、Extract も他のすべてのエンドポイントと同様にクレジット制になりました。1クレジットは15トークンに相当します。報告されるトークン使用量には、すべてのエンドポイントでの使用分が含まれます。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/batch-scrape-delete.mdx b/ja/api-reference/v1-endpoint/batch-scrape-delete.mdx index 9f3f4f45..560873fe 100644 --- a/ja/api-reference/v1-endpoint/batch-scrape-delete.mdx +++ b/ja/api-reference/v1-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのキャンセル' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > 注意: 機能とパフォーマンスが向上した新しい[v2版のAPI](/ja/api-reference/endpoint/batch-scrape-delete)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/batch-scrape-get-errors.mdx b/ja/api-reference/v1-endpoint/batch-scrape-get-errors.mdx index 63e64d02..c1b8a607 100644 --- a/ja/api-reference/v1-endpoint/batch-scrape-get-errors.mdx +++ b/ja/api-reference/v1-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのエラーを取得' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > 注意: エラーレポートとデバッグ機能が強化された、このAPIの[v2版](/ja/api-reference/endpoint/batch-scrape-get-errors)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/batch-scrape-get.mdx b/ja/api-reference/v1-endpoint/batch-scrape-get.mdx index 0901b8fb..4fa8f268 100644 --- a/ja/api-reference/v1-endpoint/batch-scrape-get.mdx +++ b/ja/api-reference/v1-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのステータスを取得' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > 注: ステータス追跡と監視機能が強化された、このAPIの新しい[v2版](/ja/api-reference/endpoint/batch-scrape-get)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/batch-scrape.mdx b/ja/api-reference/v1-endpoint/batch-scrape.mdx index c7fd2556..54a43a14 100644 --- a/ja/api-reference/v1-endpoint/batch-scrape.mdx +++ b/ja/api-reference/v1-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプ' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > 注意: バッチ処理のパフォーマンスと信頼性が向上した、このAPIの新しい[v2版](/ja/api-reference/endpoint/batch-scrape)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/crawl-active.mdx b/ja/api-reference/v1-endpoint/crawl-active.mdx index 5b941229..8c3a4450 100644 --- a/ja/api-reference/v1-endpoint/crawl-active.mdx +++ b/ja/api-reference/v1-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: '進行中のクロールを取得' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > 注: 機能とパフォーマンスが向上したこの API の新しい[v2 版](/ja/api-reference/endpoint/crawl-active)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/crawl-delete.mdx b/ja/api-reference/v1-endpoint/crawl-delete.mdx index 4bfa8d7c..6028058e 100644 --- a/ja/api-reference/v1-endpoint/crawl-delete.mdx +++ b/ja/api-reference/v1-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'クロールのキャンセル' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > 注: 改良された機能とパフォーマンスを備えたこのAPIの新しい[v2版](/ja/api-reference/endpoint/crawl-delete)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/crawl-get-errors.mdx b/ja/api-reference/v1-endpoint/crawl-get-errors.mdx index 71cff28d..875157ec 100644 --- a/ja/api-reference/v1-endpoint/crawl-get-errors.mdx +++ b/ja/api-reference/v1-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'クロールエラーの取得' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > 注: 機能とパフォーマンスが向上したこのAPIの新しい[v2版](/ja/api-reference/endpoint/crawl-get-errors)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/crawl-get.mdx b/ja/api-reference/v1-endpoint/crawl-get.mdx index 1d607d34..9351c2f1 100644 --- a/ja/api-reference/v1-endpoint/crawl-get.mdx +++ b/ja/api-reference/v1-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'クロールのステータスを取得' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > 注意: 機能とパフォーマンスが向上した新しい [v2 版 API](/ja/api-reference/endpoint/crawl-get)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/crawl-post.mdx b/ja/api-reference/v1-endpoint/crawl-post.mdx index 1fb72789..a197a367 100644 --- a/ja/api-reference/v1-endpoint/crawl-post.mdx +++ b/ja/api-reference/v1-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > 注: 機能とパフォーマンスが向上した[v2版 API](/ja/api-reference/endpoint/crawl-post)が利用可能になりました。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/credit-usage-historical.mdx b/ja/api-reference/v1-endpoint/credit-usage-historical.mdx index c3028c64..041b2677 100644 --- a/ja/api-reference/v1-endpoint/credit-usage-historical.mdx +++ b/ja/api-reference/v1-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "過去のクレジット利用状況" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- 過去のクレジット利用状況を月別に返します。必要に応じて、APIキーごとの内訳も取得できます。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/credit-usage.mdx b/ja/api-reference/v1-endpoint/credit-usage.mdx index f9a4167f..d70c43d5 100644 --- a/ja/api-reference/v1-endpoint/credit-usage.mdx +++ b/ja/api-reference/v1-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'クレジット使用量' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > 注: 機能とパフォーマンスが向上した[v2版のAPI](/ja/api-reference/endpoint/credit-usage)が利用可能になりました。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/deep-research-get.mdx b/ja/api-reference/v1-endpoint/deep-research-get.mdx index a382df42..a4c49a80 100644 --- a/ja/api-reference/v1-endpoint/deep-research-get.mdx +++ b/ja/api-reference/v1-endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "ディープリサーチ" -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/deep-research.mdx b/ja/api-reference/v1-endpoint/deep-research.mdx index 9c5aca2a..a0ec9d19 100644 --- a/ja/api-reference/v1-endpoint/deep-research.mdx +++ b/ja/api-reference/v1-endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Deep Research" -openapi: 'v1-openapi POST /deep-research' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- Deep Research エンドポイントは、あらゆるトピックに対する AI 主導の高度な調査と分析を行えます。調査クエリを入力するだけで、Firecrawl が自律的にウェブを探索し、関連情報を収集して、知見を統合した包括的なインサイトにまとめます。 diff --git a/ja/api-reference/v1-endpoint/extract-get.mdx b/ja/api-reference/v1-endpoint/extract-get.mdx index 218165d8..15981d97 100644 --- a/ja/api-reference/v1-endpoint/extract-get.mdx +++ b/ja/api-reference/v1-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: "抽出ステータスの取得" -openapi: "v1-openapi GET /extract/{id}" +openapi: "/ja/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}" --- > 注記: 機能とパフォーマンスが向上した新しい[v2版のAPI](/ja/api-reference/endpoint/extract-get)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/extract.mdx b/ja/api-reference/v1-endpoint/extract.mdx index c894552c..82425faf 100644 --- a/ja/api-reference/v1-endpoint/extract.mdx +++ b/ja/api-reference/v1-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > 注意: 機能とパフォーマンスが向上した新しい[v2版のAPI](/ja/api-reference/endpoint/extract)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/llmstxt-get.mdx b/ja/api-reference/v1-endpoint/llmstxt-get.mdx index d018c989..c7210dd9 100644 --- a/ja/api-reference/v1-endpoint/llmstxt-get.mdx +++ b/ja/api-reference/v1-endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt のステータス" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/ja/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- LLMs.txt の生成ジョブのステータスと結果を取得します。このエンドポイントでは、生成の完了状況を確認し、生成されたコンテンツを取得できます。 @@ -69,7 +69,6 @@ LLMs.txt の生成ジョブのステータスと結果を取得します。こ } ``` -
### ポーリングの推奨
diff --git a/ja/api-reference/v1-endpoint/llmstxt.mdx b/ja/api-reference/v1-endpoint/llmstxt.mdx index ea55be4b..238c09f1 100644 --- a/ja/api-reference/v1-endpoint/llmstxt.mdx +++ b/ja/api-reference/v1-endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt を生成する" -openapi: "v1-openapi POST /llmstxt" +openapi: "/ja/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- LLMs.txt 生成エンドポイントは、任意のウェブサイト向けに LLMs.txt と LLMs-full.txt ファイルを生成します。これらのファイルは、ウェブサイトのコンテンツを構造化し、LLM に適したフォーマットで提供することで、言語モデルによる理解・処理を容易にします。 diff --git a/ja/api-reference/v1-endpoint/map.mdx b/ja/api-reference/v1-endpoint/map.mdx index adf59c6e..d7c08b62 100644 --- a/ja/api-reference/v1-endpoint/map.mdx +++ b/ja/api-reference/v1-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > 注: 機能とパフォーマンスが向上した新しい[v2版API](/ja/api-reference/endpoint/map)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/queue-status.mdx b/ja/api-reference/v1-endpoint/queue-status.mdx index a11a3bd9..7322203e 100644 --- a/ja/api-reference/v1-endpoint/queue-status.mdx +++ b/ja/api-reference/v1-endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "キューのステータス" -openapi: 'v1-openapi GET /team/queue-status' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/queue-status' --- > 注意: 機能とパフォーマンスが向上した [本APIの新しい v2 版](/ja/api-reference/endpoint/queue-status) が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/scrape.mdx b/ja/api-reference/v1-endpoint/scrape.mdx index 10d162e0..ec8d8ad6 100644 --- a/ja/api-reference/v1-endpoint/scrape.mdx +++ b/ja/api-reference/v1-endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > 注: 機能とパフォーマンスが向上したこのAPIの新しい[v2版](/ja/api-reference/endpoint/scrape)が利用可能です。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/search.mdx b/ja/api-reference/v1-endpoint/search.mdx index 1573f2c4..9b54f719 100644 --- a/ja/api-reference/v1-endpoint/search.mdx +++ b/ja/api-reference/v1-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > 注意: 機能とパフォーマンスが向上した[new v2 version of this API](/ja/api-reference/endpoint/search)が利用可能です。 diff --git a/ja/api-reference/v1-endpoint/token-usage-historical.mdx b/ja/api-reference/v1-endpoint/token-usage-historical.mdx index 862a46d0..1d9f1e42 100644 --- a/ja/api-reference/v1-endpoint/token-usage-historical.mdx +++ b/ja/api-reference/v1-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: '過去のトークン使用量' -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- 月ごとのトークン使用量を返します。必要に応じて、APIキーごとの内訳も取得できます。 \ No newline at end of file diff --git a/ja/api-reference/v1-endpoint/token-usage.mdx b/ja/api-reference/v1-endpoint/token-usage.mdx index 9ea3b6c5..6d20cb6d 100644 --- a/ja/api-reference/v1-endpoint/token-usage.mdx +++ b/ja/api-reference/v1-endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'トークン使用状況' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > 注意: 機能とパフォーマンスが向上した、このAPIの新しい[v2版](/ja/api-reference/endpoint/token-usage)が利用可能になりました。 \ No newline at end of file diff --git a/ja/api-reference/v1-openapi.json b/ja/api-reference/v1-openapi.json new file mode 100644 index 00000000..dd1bd13f --- /dev/null +++ b/ja/api-reference/v1-openapi.json @@ -0,0 +1,3656 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "Firecrawl サービスと連携して Web サイトのスクレイピングおよびクロール処理を行うための API です。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "1つのURLをスクレイピングし、必要に応じてLLMを使って情報を抽出する", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "スクレイプ対象のURL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このスクレイプではデータを一切保持しないゼロデータ保持モードが有効になります。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "複数のURLをスクレイピングし、必要に応じてLLMを使って情報を抽出する", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "スクレイピング対象のURL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook の仕様を表すオブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook の送信先 URL です。バッチスクレイプの開始時(batch_scrape.started)、各ページのスクレイプ時(batch_scrape.page)、およびバッチスクレイプが完了したとき(batch_scrape.completed または batch_scrape.failed)にトリガーされます。レスポンスは `/scrape` エンドポイントと同じです。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信する HTTP ヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールのすべてのWebhookペイロードに含まれるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類。(デフォルト: すべて)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "同時スクレイプの最大数。このパラメータで、このバッチスクレイプにおける同時実行数の上限を設定できます。指定しない場合は、チームの同時実行数の上限が適用されます。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "urls 配列に無効な URL が含まれている場合、それらは無視されます。無効な URL が原因でリクエスト全体が失敗するのではなく、残りの有効な URL のみを使ってバッチスクレイプが実行され、無効な URL はレスポンスの invalidURLs フィールドで返されます。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このバッチスクレイプではデータを一切保持しないゼロデータ保持モードが有効になります。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイプジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイプジョブの状態を取得する", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "バッチスクレイピングジョブをキャンセルする", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルに成功しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "バッチスクレイピングジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイピングジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブのエラーを取得する", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブのステータスを取得する", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "クロールジョブをキャンセルする", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルが完了しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "クロールジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブのエラーを取得", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "オプションに応じて複数のURLをクロールする", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールを開始するためのベースURL" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロール対象からURLを除外するための URL パス名の正規表現パターンです。たとえば、ベース URL が firecrawl.dev の場合に `\"excludePaths\": [\"blog/.*\"]` を設定すると、https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap のように、そのパターンに一致する結果はすべて除外されます。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールに含めるURLを指定するための、URLパス名に対する正規表現パターンです。指定したパターンに一致するパスのみがレスポンスに含まれます。たとえば、ベースURLが firecrawl.dev の場合に \"includePaths\": [\"blog/.*\"] を設定すると、そのパターンに一致する結果のみが含まれます(例: https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap)。" + }, + "maxDepth": { + "type": "integer", + "description": "入力されたURLのベースからクロールできる最大の絶対深度です。基本的には、スクレイピング対象となるURLのパス名に含めることができるスラッシュの最大数を指します。", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "発見順序に基づいてクロールする最大の深さです。ルートサイトおよびサイトマップに含まれるページの発見深度は 0 です。例えば、これを 1 に設定し、かつ ignoreSitemap を有効にした場合、入力した URL と、そのページ上からリンクされているすべての URL のみをクロールします。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "クロール時にサイトマップを無視する", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "同じパスを、クエリパラメータを変えて(または付けずに)再度スクレイピングしないでください", + "default": false + }, + "limit": { + "type": "integer", + "description": "クロールするページの最大数です。デフォルトの上限は 10,000 です。", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ 非推奨: 代わりに 'crawlEntireDomain' を使用してください。クローラーが子パスだけでなく、同一階層や親のURLへの内部リンクもたどれるようにします。", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "クローラーがたどるリンクの範囲を、子パスだけでなく同一階層や親階層の内部リンクにも広げます。\n\nfalse: より深い(子)URL だけをクロールします。\n→ 例: /features/feature-1 → /features/feature-1/tips ✅\n→ /pricing や / には移動しない ❌\n\ntrue: 同一階層や親階層のパスを含む、あらゆる内部リンクをクロールします。\n→ 例: /features/feature-1 → /pricing、/ など ✅\n\nネストされたパスだけでなく、サイト内部全体を広くカバーしたい場合は true に設定します。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "クローラーが外部サイトへのリンクをたどることを許可します。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "クロール時に、クローラーがメインドメイン配下のサブドメインへのリンクをたどれるようにします。", + "default": false + }, + "delay": { + "type": "number", + "description": "スクレイピング実行間の待機時間(秒)。ウェブサイトのレート制限を遵守するのに役立ちます。" + }, + "maxConcurrency": { + "type": "integer", + "description": "同時に実行するスクレイプの最大数。このパラメータで、このクロールに対する同時実行数の上限を設定できます。指定しない場合は、チームの同時実行数上限が適用されます。" + }, + "webhook": { + "type": "object", + "description": "Webhook仕様オブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook の送信先 URL です。クロール開始時(crawl.started)、各ページのクロール時(crawl.page)、およびクロール完了時(crawl.completed または crawl.failed)に呼び出されます。レスポンスは `/scrape` エンドポイントと同一です。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信する HTTP ヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールのすべてのWebhookペイロードに含まれるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類です(デフォルト: すべて)。", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このクロールではデータを一切保持しないゼロデータ保持モードが有効になります。この機能を有効にするには、help@firecrawl.dev までお問い合わせください。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "オプションに基づいて複数のURLをマップする", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールを開始するベースURL" + }, + "search": { + "type": "string", + "description": "マッピングに使用する検索クエリです。Alpha フェーズ中は、検索機能の「スマート」な部分は検索結果 500 件までに制限されています。ただし、map によってそれ以上の結果が見つかった場合でも、その件数には制限はありません。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "クロール時にサイトマップを無視する。", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "ウェブサイトのサイトマップに含まれるリンクだけを返す", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "サイトのサブドメインを含める", + "default": true + }, + "limit": { + "type": "integer", + "description": "返すリンク数の上限", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "タイムアウト時間(ミリ秒単位)。デフォルトではタイムアウトは設定されていません。" + }, + "location": { + "type": "object", + "description": "リクエストのロケーション設定。指定した場合、利用可能であれば対応するプロキシを使用し、対応する言語とタイムゾーン設定をエミュレートします。指定しない場合は、デフォルトで「US」が使用されます。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 形式の国コード(例: 「US」「AU」「DE」「JP」)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "リクエストに対して優先される言語およびロケール(優先度順)。指定された location の言語が既定値です。詳細は https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language を参照してください。", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "LLMでページから構造化データを抽出する", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "データを抽出する対象のURLです。URLはglobパターン形式で指定してください。" + } + }, + "prompt": { + "type": "string", + "description": "抽出プロセスを指示するプロンプト" + }, + "schema": { + "type": "object", + "description": "抽出されたデータの構造を定義するスキーマ。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "true の場合、抽出では Web 検索を使用して追加データを取得します", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "true の場合、ウェブサイトのスキャン時に sitemap.xml ファイルは無視されます。", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "true の場合、指定した URL のサブドメインもスキャン対象になります", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "true の場合、データ抽出に使用されたソースが、レスポンス内の `sources` キーとして含まれます", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "urls 配列に無効な URL が指定されている場合、それらは無視されます。リクエスト全体が失敗するのではなく、有効な URL のみを使って抽出処理が実行され、無効な URL はレスポンスの invalidURLs フィールドに返されます。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "抽出成功", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "無効なリクエスト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抽出ジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "抽出ジョブの状態を取得する", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "認証されたチームのすべての進行中のクロールを取得します", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "クロールの一意の識別子" + }, + "teamId": { + "type": "string", + "description": "クロールを所有しているチームのID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "クロールの起点となる URL" + }, + "options": { + "type": "object", + "description": "このクロールで使用したクローラーオプション", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "クエリに対する本格的なリサーチ処理を開始する", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "調査するクエリ" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "リサーチ反復の最大深さ" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "制限時間(秒)" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "分析する URL の最大数" + }, + "analysisPrompt": { + "type": "string", + "description": "最終的な分析に使用するプロンプトです。最終的な分析結果の Markdown を特定の形式で整形するために使用します。" + }, + "systemPrompt": { + "type": "string", + "description": "リサーチエージェントに使用するシステムプロンプトです。エージェントの振る舞いを特定の方向に導きたい場合に役立ちます。" + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "JSON 出力オプション", + "properties": { + "schema": { + "type": "object", + "description": "JSON 出力で使用するスキーマ。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "systemPrompt": { + "type": "string", + "description": "JSON 出力用のシステムプロンプト" + }, + "prompt": { + "type": "string", + "description": "JSON出力用のプロンプト" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "リサーチジョブの開始に成功しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "リサーチジョブの ID" + } + } + } + } + } + }, + "400": { + "description": "無効なリクエストパラメータです", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "リサーチジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "ディープリサーチのステータスと結果を取得する", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功レスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "JSON 形式のときに表示されます", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列です" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列の配列を取り得ます。" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "Research ジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "認証済みのチームの残りのクレジット数を取得する", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "チームの残りクレジット数", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "プランに含まれるクレジット数です。この数には、クーポンクレジット、クレジットパック、自動チャージによるクレジットは含まれません。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プランを利用している場合は null が設定されます", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プランを利用している場合は null になります", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "クレジット利用情報が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "認証済みチームのクレジット使用履歴を取得", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのクレジット利用履歴を取得", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "課金期間中に使用された API キーの名前。byApiKey が false(デフォルト)の場合は null", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "請求期間中に使用したクレジットの合計", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "認証済みのチームの残りトークン数を取得(Extract のみ)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "チームの残りトークン数", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "プランに含まれるトークン数。クーポンのトークンは含まれません。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プランの場合は null です", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プラン利用時は null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "トークン使用量情報が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "認証済みのチームのトークン使用履歴を取得(Extractのみ)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのトークン使用履歴を取得する", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "請求期間に使用された API キーの名前。byApiKey が false(デフォルト)の場合は null になります", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "請求期間中に使用されたトークン総数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "チームのスクレイプキューに関するメトリクス", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "正常なレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "現在キューに入っているジョブ数" + }, + "activeJobsInQueue": { + "type": "number", + "description": "現在実行中のジョブ数" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "現在待機中のジョブ数" + }, + "maxConcurrency": { + "type": "number", + "description": "ご利用プランごとの同時実行可能な最大ジョブ数" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "最新の成功したジョブのタイムスタンプ", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "検索を行い、必要に応じて検索結果をスクレイピングする", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "検索クエリ" + }, + "limit": { + "type": "integer", + "description": "返す結果の最大件数", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "時間指定の検索パラメータ。事前定義された時間範囲(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)と、カスタム日付範囲(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)をサポートします" + }, + "location": { + "type": "string", + "description": "検索結果の location パラメーター" + }, + "timeout": { + "type": "integer", + "description": "タイムアウト(ミリ秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "他の Firecrawl エンドポイントでは無効となる URL を検索結果から除外します。検索結果のデータを他の Firecrawl API エンドポイントにパイプで渡す場合のエラー削減に役立ちます。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "検索結果スクレイピングのオプション", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "検索結果のタイトル" + }, + "description": { + "type": "string", + "description": "検索結果の説明文" + }, + "url": { + "type": "string", + "description": "検索結果のURL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "スクレイピングをリクエストした場合のMarkdownコンテンツ" + }, + "html": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の HTML コンテンツ" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の生のHTMLコンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "フォーマットで指定された場合に取得されるリンク" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "フォーマットでリクエストされた場合のスクリーンショットのURLです。スクリーンショットは24時間で有効期限が切れ、それ以降はダウンロードできません。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列です" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列の配列のいずれかです" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "問題発生時に表示される警告メッセージ" + } + } + } + } + } + }, + "408": { + "description": "リクエストタイムアウト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "ウェブサイト向けの LLMs.txt を生成する", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "LLMs.txt を生成する元となる URL" + }, + "maxUrls": { + "type": "integer", + "description": "解析対象とするURLの最大数", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "レスポンスにテキスト全文を含める", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "LLMs.txt の生成ジョブが正常に開始されました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "LLMs.txt の生成ジョブID" + } + } + } + } + } + }, + "400": { + "description": "無効なリクエストパラメータです", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "LLMs.txt 生成ジョブの ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "LLMs.txt 生成ジョブのステータスおよび結果を取得する", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "生成された LLMs.txt ファイルの内容" + }, + "llmsfulltxt": { + "type": "string", + "description": "showFullText が true の場合に表示される全文テキストコンテンツ" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "生成されたコンテンツが失効するタイミング" + } + } + } + } + } + }, + "404": { + "description": "LLMs.txt の生成ジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダー、ナビゲーション、フッターなどを除き、ページのメインコンテンツのみを返します。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力に含めるタグ。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力結果から除外するタグ。" + }, + "maxAge": { + "type": "integer", + "description": "ページのキャッシュが、このミリ秒数以内に生成されたものであれば、そのキャッシュされたバージョンを返します。キャッシュされたページがこの値より古い場合は、ページをスクレイピングします。極めて最新のデータが不要な場合、これを有効にすることでスクレイピングを最大 500% 高速化できます。デフォルトは 0 で、この場合キャッシュは無効になります。", + "default": 0 + }, + "headers": { + "type": "object", + "description": "リクエストに付与して送信するヘッダー。Cookie や User-Agent などを送るために使用できます。" + }, + "waitFor": { + "type": "integer", + "description": "コンテンツを取得する前に待機する時間(ディレイ)をミリ秒単位で指定します。これにより、ページが十分に読み込まれるまでの時間を確保できます。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "モバイル端末からのスクレイピングを模擬したい場合は true に設定してください。レスポンシブページのテストやモバイル画面のスクリーンショット取得に便利です。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "リクエスト時に TLS 証明書の検証をスキップする", + "default": false + }, + "timeout": { + "type": "integer", + "description": "リクエストのタイムアウト(ミリ秒)", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "スクレイピング中のPDFファイルの処理方法を制御します。true の場合、PDFのコンテンツを抽出してMarkdown形式に変換し、課金はページ数に基づきます(1ページあたり1クレジット)。false の場合、PDFファイルはbase64エンコードされたデータとして返され、合計1クレジットの定額課金となります。", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "JSON オプションオブジェクト", + "properties": { + "schema": { + "type": "object", + "description": "抽出に使用するスキーマ(任意)。[JSON Schema](https://json-schema.org/) に準拠したものである必要があります。" + }, + "systemPrompt": { + "type": "string", + "description": "抽出に使用するシステムプロンプト(任意)" + }, + "prompt": { + "type": "string", + "description": "スキーマなしで抽出を行う際に使用するプロンプト(任意)" + } + } + }, + "actions": { + "type": "array", + "description": "ページからコンテンツを取得する前に実行するアクション", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "指定したミリ秒間待機します" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "待機する時間(ミリ秒)" + }, + "selector": { + "type": "string", + "description": "要素を検索するためのクエリセレクタ", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "スクリーンショットを撮影します。リンクはレスポンスの `actions.screenshots` 配列に含まれます。" + }, + "fullPage": { + "type": "boolean", + "description": "ページ全体のスクリーンショットを取得するか、現在のビューポートに限定するかを指定します。", + "default": false + }, + "quality": { + "type": "integer", + "description": "スクリーンショットの品質を1〜100で指定します。100が最高品質です。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "要素をクリックします" + }, + "selector": { + "type": "string", + "description": "要素を検索するためのクエリセレクタ", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "セレクターに一致する要素を、最初のものだけでなくすべてクリックします。セレクターに一致する要素が存在しない場合でも、エラーは発生しません。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "入力フィールド、テキストエリア、または contenteditable 要素にテキストを入力します。注意: テキストを入力する前に、必ず「click」アクションで要素にフォーカスを当ててください。テキストはキーボード入力をシミュレートするため、1文字ずつタイプされます。" + }, + "text": { + "type": "string", + "description": "入力するテキスト", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "ページ上でキーを押してください。キーコードについては https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html を参照してください。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "このページでいずれかのキーを押してください" + }, + "key": { + "type": "string", + "description": "押下するキー", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "ページ全体または特定の要素をスクロールする" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "スクロール方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "スクロール対象要素のクエリセレクター", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "現在のページの内容をスクレイピングし、URL と HTML を返します。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "ページ上で JavaScript コードを実行する" + }, + "script": { + "type": "string", + "description": "実行する JavaScript コード", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "現在のページの PDF を生成します。PDF はレスポンスの `actions.pdfs` 配列で返されます。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "出力されるPDFのページサイズ", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "PDF を横向きで生成するかどうか", + "default": false + }, + "scale": { + "type": "number", + "description": "生成される PDF の拡大縮小倍率", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "リクエストに対するロケーション設定です。指定されている場合、利用可能であれば適切なプロキシを使用し、対応する言語およびタイムゾーン設定を再現します。指定されていない場合は、デフォルトで 'US' が使用されます。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2国コード(例:「US」「AU」「DE」「JP」)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "リクエストに対して優先順位順に指定する言語およびロケール。指定がない場合は、指定された location の言語がデフォルトになります。詳細は https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language を参照してください。", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "出力から、非常に長くなりがちな Base64 画像をすべて削除します。画像の alt テキストは出力内に残りますが、URL はプレースホルダーに置き換えられます。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "広告とクッキーポップアップのブロックを有効にします。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "使用するプロキシの種類を指定します。\n\n - **basic**: ほとんどボット対策がない、または基本的なボット対策のみが導入されているサイト向けのプロキシです。高速で、通常は問題なく動作します。\n - **stealth**: 高度なボット対策が導入されているサイト向けのステルスプロキシです。basic より遅くなりますが、特定のサイトではより安定して動作します。1リクエストあたり最大5クレジットを消費します。\n - **auto**: basic プロキシでのスクレイピングが失敗した場合、Firecrawl が自動的にステルスプロキシで再試行します。ステルスでの再試行が成功した場合、そのスクレイピングには5クレジットが課金されます。最初の basic による試行が成功した場合は、通常の料金のみが課金されます。\n\nプロキシを指定しない場合、Firecrawl はデフォルトで basic を使用します。" + }, + "storeInCache": { + "type": "boolean", + "description": "true の場合、そのページは Firecrawl のインデックスおよびキャッシュに保存されます。スクレイピング内容がデータ保護上の懸念を伴う可能性がある場合は、これを false に設定するのが有効です。機密性の高いスクレイピングに関連する一部のパラメータ(アクションやヘッダーなど)を使用すると、このパラメータは強制的に false に設定されます。", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "出力に含めるフォーマット。", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "変更追跡用のオプション(ベータ版)。changeTracking がフォーマットに含まれている場合にのみ有効です。変更追跡を使用する際は、markdown フォーマットも指定する必要があります。", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "変更追跡に使用するモード。`git-diff` は詳細な差分を提供し、`json` は抽出された JSON データを比較します。" + }, + "schema": { + "type": "object", + "description": "'json' モード使用時の JSON 抽出用スキーマです。抽出および比較するデータの構造を定義します。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "prompt": { + "type": "string", + "description": "「json」モードで変更追跡を行う際に使用するプロンプトです。指定しない場合は、デフォルトのプロンプトが使用されます。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "変更トラッキングに使用するタグ。タグを使うことで、変更トラッキングの履歴を別々の「ブランチ」に分割でき、特定のタグでの変更トラッキングは同じタグで実行されたスクレイプとだけ比較されます。指定しない場合は、デフォルトタグ(null)が使用されます。" + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`formats` に `html` が含まれている場合の、ページのコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`rawHtml` が `formats` に含まれている場合のページの生の HTML コンテンツ" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`formats` に `screenshot` が含まれている場合、そのページのスクリーンショット。スクリーンショットは 24 時間後に有効期限が切れ、それ以降はダウンロードできません。" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`formats` に `links` が含まれている場合、そのページ上のリンク一覧" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` パラメータで指定されたアクションの結果。リクエストで `actions` パラメータが指定された場合にのみ含まれます。", + "properties": { + "screenshots": { + "type": "array", + "description": "スクリーンショットのURL。指定されたスクリーンショットのアクションと同じ順序で並びます。スクリーンショットは24時間後に有効期限が切れ、以降はダウンロードできなくなります。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "指定されたスクレイプアクションの順序どおりにコンテンツをスクレイピングします。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "executeJavascript で指定したアクションと同じ順序で並んだ JavaScript の戻り値。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "生成されたPDF。指定したPDFアクションと同じ順序で並びます。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたキーワード。文字列または文字列の配列を取ります。" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ページの別ロケール" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラー メッセージ" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "LLM Extraction 利用時に表示されます。定義したスキーマに従い、ページから抽出されたデータです。", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "LLM Extraction を使用しているときに表示されます。警告メッセージによって、抽出時の問題が通知されます。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "`formats` に `changeTracking` が含まれている場合の変更追跡情報です。`changeTracking` フォーマットが指定された場合にのみ返されます。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "現在のページが比較されている直前のスクレイプのタイムスタンプ。過去のスクレイプが存在しない場合は null。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "2 つのページバージョンの比較結果です。'new' はこのページがそれ以前には存在しなかったことを意味し、'same' は内容に変更がないことを意味し、'changed' は内容が変更されたことを意味し、'removed' はページが削除されたことを意味します。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "現在のページ/URL の可視性を示します。'visible' は、その URL がリンクやサイトマップなどの通常の経路から発見されたことを意味し、'hidden' は、その URL が過去のクロールの記憶から発見されたことを意味します。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "「git-diff」モード使用時の変更内容を示す Git スタイルの差分。モードが「git-diff」に設定されている場合にのみ出力されます。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "'json' モード使用時の JSON 比較結果。モードが 'json' に設定されている場合にのみ出力されます。`schema` で定義された型に基づき、`previous` と `current` のスクレイプから取得したすべてのキーとその値の一覧を出力します。例は[こちら](/features/change-tracking)にあります。" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "クロールの現在の状態です。`scraping`、`completed`、`failed` のいずれかです。" + }, + "total": { + "type": "integer", + "description": "クロールを試行したページ数の合計です。" + }, + "completed": { + "type": "integer", + "description": "正常にクロールが完了したページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "クロールで使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "クロールが有効期限切れとなる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の 10MB 分のデータを取得するための URL。クロールが完了していない場合、またはレスポンスが 10MB を超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "クロールで取得したデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合、そのページのコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合のページの未加工の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合の、ページ上のリンク一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合のページのスクリーンショット画像" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列である場合があります" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列配列のいずれかになります" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "ページから抽出された言語。文字列または文字列の配列のいずれかになります。" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたキーワード。文字列または文字列配列のいずれかです" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "このページの他のロケール" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "HTML から抽出されたその他のメタデータ。文字列または文字列配列になることがあります" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "エラーが発生したスクレイピングジョブとエラー詳細", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失敗発生時のISOタイムスタンプ" + }, + "url": { + "type": "string", + "description": "スクレイピングで取得したURL" + }, + "error": { + "type": "string", + "description": "エラー メッセージ" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "スクレイピングを試みたが robots.txt によりブロックされた URL の一覧", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "バッチスクレイピングの現在の状態です。`scraping`、`completed`、`failed` のいずれかになります。" + }, + "total": { + "type": "integer", + "description": "スクレイピングを試みたページ数の合計。" + }, + "completed": { + "type": "integer", + "description": "正常にスクレイピングできたページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "バッチスクレイピングで使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "バッチスクレイプの有効期限となる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の 10MB 分のデータを取得するための URL。バッチスクレイプが完了していない場合、またはレスポンスが 10MB を超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "バッチスクレイプで取得されたデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合のページ内コンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合のページの生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合、ページ内のリンク一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合のページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列のいずれかです。" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列の配列である場合があります" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "ページから抽出された言語。文字列または文字列配列のいずれかになります" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたキーワード。文字列または文字列の配列にできます。" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "このページの他のロケール" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "HTML から抽出されるその他のメタデータ。文字列または文字列配列となり得ます" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、この配列にはリクエストで指定された無効な URL が含まれます。無効な URL が存在しない場合、この配列は空になります。ignoreInvalidURLs が false の場合、このフィールドは undefined になります。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、これはリクエスト内で指定された無効な URL を含む配列です。無効な URL がなかった場合、この配列は空になります。ignoreInvalidURLs が false の場合、このフィールドは undefined になります。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "抽出ジョブの現在のステータス" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/ja/api-reference/v2-openapi.json b/ja/api-reference/v2-openapi.json new file mode 100644 index 00000000..54606b77 --- /dev/null +++ b/ja/api-reference/v2-openapi.json @@ -0,0 +1,3814 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "Firecrawlのサービスを利用して、Webスクレイピングやクロールを行うためのAPIです。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "1つのURLをスクレイピングし、必要に応じてLLMで情報を抽出します", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "スクレイピング対象のURL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このスクレイプではデータ保持が一切行われません。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "複数のURLをスクレイピングし、必要に応じてLLMを用いて情報を抽出する", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "スクレイプ対象のURL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook の仕様を表すオブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook を送信する URL。バッチスクレイプの開始時(batch_scrape.started)、各ページのスクレイプ時(batch_scrape.page)、およびバッチスクレイプの完了時(batch_scrape.completed または batch_scrape.failed)にトリガーされます。レスポンスは `/scrape` エンドポイントと同じです。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信するヘッダー情報。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールで送信されるすべてのWebhookペイロードに含めるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類を指定します(デフォルト: すべて)。", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "同時に実行されるスクレイプの最大数。このパラメータで、このバッチスクレイプに対する同時実行数の上限を設定できます。指定しない場合、このバッチスクレイプはチームで設定された同時実行数の上限に従います。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "urls 配列に無効な URL が含まれている場合、それらは無視されます。無効な URL が原因でリクエスト全体が失敗するのではなく、残りの有効な URL を使ってバッチスクレイプが作成され、無効な URL はレスポンスの invalidURLs フィールドで返されます。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このバッチスクレイプではゼロデータ保持が有効になり、データは一切保持されません。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイピングジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブのステータスを取得する", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "バッチスクレイピングジョブをキャンセルする", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルに成功しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "バッチスクレイピングジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイピングジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブで発生したエラーを取得する", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブの状態を取得する", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "クロールジョブをキャンセルする", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルが完了しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "クロールジョブが見つかりませんでした", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブのエラーを取得", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "オプション設定に基づいて複数のURLをクロールする", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールを開始するベースURL" + }, + "prompt": { + "type": "string", + "description": "自然言語からクローラーオプション(以下のすべてのパラメーター)を生成するために使用するプロンプトです。明示的に設定されたパラメーターは、生成された対応する値よりも優先されます。" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールから除外する URL パス名の正規表現パターンです。たとえば、ベース URL が firecrawl.dev の場合に `\"excludePaths\": [\"blog/.*\"]` を設定すると、`https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap` のようにそのパターンにマッチする URL はすべて除外されます。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールに含めるURLを指定するための、URLパスに対する正規表現パターンです。指定したパターンにマッチするパスのみがレスポンスに含まれます。たとえば、ベースURLが firecrawl.dev の場合に \"includePaths\": [\"blog/.*\"] を設定すると、https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap のように、そのパターンにマッチする結果のみが含まれます。" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "検出順序に基づいてクロールする最大深度です。ルートサイトおよびサイトマップに含まれるページの検出深度は 0 です。例えば、これを 1 に設定し、かつ `sitemap: 'skip'` を指定した場合、入力した URL と、そのページからリンクされているすべての URL だけをクロールします。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "クロール時のサイトマップモードです。これを「skip」に設定すると、クローラーはサイトのサイトマップを無視し、指定したURLのみを起点として、そこから発見したページだけをクロールします。", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "同じパスを、クエリパラメータの有無や値を変えて再スクレイプしないでください", + "default": false + }, + "limit": { + "type": "integer", + "description": "クロールするページ数の最大値。デフォルトの上限は 10,000 です。", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "クローラーが子パスだけでなく、同一階層(兄弟)や親の URL への内部リンクもたどれるようにします。\n\nfalse: より深い(子)URL だけをクロールします。\n→ 例: /features/feature-1 → /features/feature-1/tips ✅\n→ /pricing や / には遷移しません ❌\n\ntrue: 同一階層や親階層を含む、あらゆる内部リンクをクロールします。\n→ 例: /features/feature-1 → /pricing、/ など ✅\n\n入れ子になったパスよりも広く内部ページ全体をカバーしたい場合は true を使用します。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "クローラーが外部のウェブサイトへのリンクをたどれるようにします。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "クローラーがメインドメイン配下のサブドメインへのリンクをたどれるようにします。", + "default": false + }, + "delay": { + "type": "number", + "description": "スクレイプ実行間の待機時間(秒)。ウェブサイト側のレート制限を尊重するのに役立ちます。" + }, + "maxConcurrency": { + "type": "integer", + "description": "同時スクレイプ数の上限。このパラメータで、このクロールに対する同時実行数の上限を設定できます。指定しない場合、このクロールはチームに設定されている同時実行数の上限に従います。" + }, + "webhook": { + "type": "object", + "description": "Webhook 仕様オブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook の送信先 URL です。クロールの開始時(crawl.started)、各ページのクロール時(crawl.page)、およびクロール完了または失敗時(crawl.completed または crawl.failed)にトリガーされます。レスポンスは `/scrape` エンドポイントのものと同じです。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信する HTTP ヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールのすべてのウェブフックペイロードに含まれるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類です。(デフォルト: all)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このクロールではデータを一切保持しないゼロデータ保持モードが有効になります。この機能を有効化するには、help@firecrawl.dev までご連絡ください。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/params-preview": { + "post": { + "summary": "自然言語プロンプトから生成されたクロールパラメーターをプレビュー", + "operationId": "crawlParamsPreview", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールするURL" + }, + "prompt": { + "type": "string", + "maxLength": 10000, + "description": "クロールしたい対象を自然言語で記述したプロンプト" + } + }, + "required": [ + "url", + "prompt" + ] + } + } + } + }, + "responses": { + "200": { + "description": "生成されたクロールパラメータを含む成功レスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロール対象のURL" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "含める URL パターン" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "除外対象のURLパターン" + }, + "maxDepth": { + "type": "integer", + "description": "最大クロール深さ" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "最大探索深度" + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "ドメイン全体をクロールするかどうか" + }, + "allowExternalLinks": { + "type": "boolean", + "description": "外部リンクを許可するか" + }, + "allowSubdomains": { + "type": "boolean", + "description": "サブドメインを許可するか" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "サイトマップ処理戦略" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "クエリパラメータを無視するかどうかを指定" + }, + "deduplicateSimilarURLs": { + "type": "boolean", + "description": "類似するURLを重複排除するかどうか" + }, + "delay": { + "type": "number", + "description": "リクエスト間の遅延時間(ミリ秒)" + }, + "limit": { + "type": "integer", + "description": "クロールする最大ページ数" + } + } + } + } + } + } + } + }, + "400": { + "description": "不正なリクエスト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid request parameters" + } + } + } + } + } + }, + "401": { + "description": "認証されていません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Unauthorized" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Failed to process natural language prompt" + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "オプションを指定して複数のURLをマップする", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールの開始地点となるベースURL" + }, + "search": { + "type": "string", + "description": "検索クエリを指定すると、結果が関連度の高い順に並べ替えられます。例: 「blog」を指定すると、URL 内に「blog」を含むものが関連度順に返されます。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "マッピング時のサイトマップモードです。`skip` に設定すると、URL の検出にサイトマップは使用されません。`only` に設定すると、サイトマップ内にある URL だけが返されます。デフォルトの `include` では、サイトマップとその他の手法を併用して URL を検出します。", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "このサイトのサブドメインを含める", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "クエリパラメータ付きのURLを返さない", + "default": true + }, + "limit": { + "type": "integer", + "description": "返すリンクの最大数", + "default": 5000, + "maximum": 100000 + }, + "timeout": { + "type": "integer", + "description": "タイムアウト(ミリ秒単位)。既定ではタイムアウトはありません。" + }, + "location": { + "type": "object", + "description": "リクエストのロケーション設定です。指定すると、利用可能な場合は適切なプロキシを使用し、対応する言語およびタイムゾーン設定をエミュレートします。指定しない場合は、デフォルトで「US」が使用されます。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 の alpha-2 国コード(例: 「US」「AU」「DE」「JP」)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "リクエストに対して優先度順に指定する言語およびロケール。指定された location の言語がデフォルトになります。詳細は https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language を参照してください。", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功したレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "LLM を使ってページから構造化データを抽出", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "データを抽出する対象のURLです。URLはグロブ形式で指定してください。" + } + }, + "prompt": { + "type": "string", + "description": "抽出プロセスをガイドするプロンプト" + }, + "schema": { + "type": "object", + "description": "抽出されたデータの構造を定義するためのスキーマ。[JSON Schema](https://json-schema.org/) に準拠する必要があります。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "true の場合、抽出処理で Web 検索を使用して追加データを取得します", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "true の場合、サイトのスキャン時に sitemap.xml ファイルは無視されます", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "true の場合、指定した URL のサブドメインもスキャンされます", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "true の場合、データ抽出に使用されたソースがレスポンスの `sources` キーに含まれます", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "urls 配列に無効な URL が含まれている場合、それらは無視されます。無効な URL が原因でリクエスト全体が失敗するのではなく、有効な URL のみを使用して抽出が実行され、無効な URL はレスポンスの invalidURLs フィールドで返されます。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "抽出が成功しました", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "不正なリクエストです", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抽出ジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "抽出ジョブの状態を取得する", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "認証済みのチームに対するすべてのアクティブなクロールを取得します", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "クロールを一意に識別するID" + }, + "teamId": { + "type": "string", + "description": "クロールを所有するチームのID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "クロールの起点となる URL" + }, + "options": { + "type": "object", + "description": "このクロールで使用したクローラーオプション", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "認証済みのチームの残りクレジット数を取得する", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "チームの残りクレジット数", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "プランに含まれるクレジット数です。クーポンクレジット、クレジットパック、自動チャージで付与されるクレジットは含まれません。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プランを利用している場合は null となります", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プランの場合は null です", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "クレジット使用状況が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "認証済みチームのクレジット利用履歴を取得します", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのクレジット使用履歴を取得", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "請求期間に使用された API キーの名前。byApiKey が false(デフォルト)の場合は null", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "請求期間中に使用したクレジットの総数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "認証済みのチームの残りトークン数を取得(Extract 専用)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "チームの残りトークン数", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "プランに含まれるトークン数です。クーポン分のトークンは含まれません。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プランを利用している場合は null になります", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プランを利用している場合は null です", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "トークン使用量情報が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "認証済みチームの履歴トークン使用量を取得します(Extract のみ)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのトークン使用量の履歴を取得する", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "課金期間中に使用された API キー名。byApiKey が false(デフォルト)の場合は null。", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "課金期間内に使用されたトークンの総数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "チームのスクレイプキューに関する指標", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "現在キュー内にあるジョブ数" + }, + "activeJobsInQueue": { + "type": "number", + "description": "現在実行中のジョブ数" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "現在待機中のジョブ数" + }, + "maxConcurrency": { + "type": "number", + "description": "ご利用プランごとの同時実行可能なアクティブジョブ数の上限" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "最新の正常終了したジョブのタイムスタンプ", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "検索し、必要に応じて検索結果をスクレイピングする", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "検索クエリ" + }, + "limit": { + "type": "integer", + "description": "返す結果の最大数", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "時間に基づく検索パラメータ。あらかじめ定義された時間範囲(`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`)と、カスタム日付範囲(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)をサポートします。" + }, + "location": { + "type": "string", + "description": "検索結果用の Location パラメータ" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "検索対象のソース。これによってレスポンス内で利用可能な配列が決まります。", + "default": [ + "web" + ] + }, + "categories": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "GitHub", + "properties": { + "type": { + "type": "string", + "enum": [ + "github" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Research", + "properties": { + "type": { + "type": "string", + "enum": [ + "research" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "結果を絞り込むカテゴリ" + }, + "tbs": { + "type": "string", + "description": "時間ベースの検索パラメータです。あらかじめ定義された時間範囲(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)と、カスタム日付範囲(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)をサポートします。" + }, + "location": { + "type": "string", + "description": "検索結果のロケーションを指定するパラメータ(例: `San Francisco,California,United States`)。最適な結果を得るには、このパラメータと `country` パラメータの両方を設定してください。" + }, + "country": { + "type": "string", + "description": "検索結果のジオターゲティングに使用する ISO 国コード(例:`US`)。最適な結果を得るには、これと `location` パラメータの両方を設定してください。", + "default": "US" + }, + "timeout": { + "type": "integer", + "description": "タイムアウト時間(ミリ秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "他の Firecrawl エンドポイントでは無効となる URL を検索結果から除外します。これにより、検索から取得したデータを他の Firecrawl API エンドポイントに渡す際のエラーを減らせます。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "検索結果をスクレイピングする際のオプション", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "検索結果のタイトル" + }, + "description": { + "type": "string", + "description": "検索結果の説明文" + }, + "url": { + "type": "string", + "description": "検索結果のURL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "スクレイピングをリクエストした場合の Markdown コンテンツ" + }, + "html": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の HTML コンテンツ" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の生のHTMLコンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "フォーマットで links を指定した場合に取得されるリンク" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "フォーマットでスクリーンショットが指定されている場合の、スクリーンショットのURLです。スクリーンショットは24時間後に失効し、それ以降はダウンロードできません。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "検索結果のタイトル" + }, + "imageUrl": { + "type": "string", + "description": "画像URL" + }, + "imageWidth": { + "type": "integer", + "description": "画像の幅" + }, + "imageHeight": { + "type": "integer", + "description": "画像の高さ" + }, + "url": { + "type": "string", + "description": "検索結果のURL" + }, + "position": { + "type": "integer", + "description": "検索結果の位置" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "記事タイトル" + }, + "snippet": { + "type": "string", + "description": "記事からの抜粋" + }, + "url": { + "type": "string", + "description": "記事のURL" + }, + "date": { + "type": "string", + "description": "記事の公開日" + }, + "imageUrl": { + "type": "string", + "description": "記事画像のURL" + }, + "position": { + "type": "integer", + "description": "記事の位置" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "スクレイピングをリクエストした場合の Markdown コンテンツ" + }, + "html": { + "type": "string", + "nullable": true, + "description": "フォーマットとしてリクエストされた場合のHTMLコンテンツ" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "フォーマットでのリクエスト時に検出されたリンク" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "フォーマットでスクリーンショットが要求された場合のスクリーンショットURL。スクリーンショットは24時間後に有効期限が切れ、それ以降はダウンロードできません。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "検索結果。利用可能な配列は、リクエストで指定したソースに応じて変わります。デフォルトでは `web` 配列が返されます。" + }, + "warning": { + "type": "string", + "nullable": true, + "description": "何らかの問題が発生した場合の警告メッセージ" + } + } + } + } + } + }, + "408": { + "description": "リクエストのタイムアウト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "ページ全体のスクリーンショットを取得するか、現在のビューポートに限定するかを指定します。", + "default": false + }, + "quality": { + "type": "integer", + "description": "スクリーンショットの画質を1〜100で指定します。100が最高画質です。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "ビューポートの幅(ピクセル単位)" + }, + "height": { + "type": "integer", + "description": "ビューポートの高さ(ピクセル単位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "JSON出力用のスキーマ。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "prompt": { + "type": "string", + "description": "JSON出力用プロンプト" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "変更追跡に使用するモードです。'git-diff' は詳細な差分を表示し、'json' は抽出した JSON データを比較します。" + }, + "schema": { + "type": "object", + "description": "「json」モードでのJSON抽出用スキーマです。抽出および比較するデータの構造を定義します。[JSON Schema](https://json-schema.org/) に準拠する必要があります。" + }, + "prompt": { + "type": "string", + "description": "json モードで変更追跡を行う際に使用するプロンプトです。指定しない場合はデフォルトのプロンプトが使用されます。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "変更追跡に使用するタグ。タグを使うことで、変更追跡の履歴を個別の「ブランチ」に分割できます。特定のタグを指定した場合、そのタグに対する変更追跡は、同じタグで実行されたスクレイプとのみ比較されます。指定しない場合は、デフォルトタグ(null)が使用されます。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Branding", + "properties": { + "type": { + "type": "string", + "enum": [ + "branding" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "レスポンスに含める出力フォーマットを指定します。1つ以上のフォーマットを、文字列(例: `'markdown'`)または追加オプションを含むオブジェクト(例: `{ type: 'json', schema: {...} }`)として指定できます。一部のフォーマットでは、特定のオプションの設定が必須です。例: `['markdown', { type: 'json', schema: {...} }]`。", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダーやナビゲーション、フッターなどを除外し、ページのメインコンテンツのみを返します。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力に含めるタグ。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力結果から除外するタグ。" + }, + "maxAge": { + "type": "integer", + "description": "ページのキャッシュが、この値(ミリ秒)で指定した有効期間より新しい場合は、そのキャッシュ版を返します。キャッシュがこの値より古い場合は、新たにページのスクレイピングを行います。極めて最新のデータが不要であれば、これを有効にすることでスクレイピングを最大500%高速化できます。デフォルトは2日です。", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "リクエストに含めるヘッダー。Cookie や User-Agent などを送信するために使用できます。" + }, + "waitFor": { + "type": "integer", + "description": "コンテンツを取得する前に待機する時間をミリ秒単位で指定します。ページが十分に読み込まれるまでの時間を確保するための遅延です。この待機時間は、Firecrawl のスマート待機機能に加えて発生します。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "モバイル端末からのスクレイピングをエミュレートしたい場合は、true に設定します。レスポンシブページのテストやモバイル向けスクリーンショットの取得に便利です。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "リクエスト時に TLS 証明書の検証をスキップする", + "default": true + }, + "timeout": { + "type": "integer", + "description": "リクエストのタイムアウト時間(ミリ秒)。" + }, + "parsers": { + "type": "array", + "description": "スクレイピング時にファイルをどのように処理するかを制御します。\"pdf\" が含まれている場合(デフォルト)、PDF の内容が抽出されて markdown 形式に変換され、課金はページ数に基づきます(1ページあたり1クレジット)。空の配列が渡された場合は、PDF ファイルが base64 エンコードされた状態で返され、合計1クレジットの定額で課金されます。", + "items": { + "oneOf": [ + { + "type": "string", + "enum": [ + "pdf" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "maxPages": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "description": "PDF から解析する最大ページ数です。1〜10000 の正の整数で指定する必要があります。" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "コンテンツを取得する前にページに対して実行するアクション", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "指定したミリ秒間待機します" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "待機する時間(ミリ秒)" + }, + "selector": { + "type": "string", + "description": "要素を特定するためのクエリセレクター", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "スクリーンショットを撮影します。リンクはレスポンスの `actions.screenshots` 配列内に含まれます。" + }, + "fullPage": { + "type": "boolean", + "description": "ページ全体のスクリーンショットを取得するか、現在の表示領域のみに制限するかを指定します。", + "default": false + }, + "quality": { + "type": "integer", + "description": "スクリーンショットの画質を1〜100で指定します。100が最高画質です。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "ビューポートの幅(ピクセル単位)" + }, + "height": { + "type": "integer", + "description": "ビューポートの高さ(ピクセル単位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "要素をクリック" + }, + "selector": { + "type": "string", + "description": "要素を検索するためのクエリセレクタ", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "セレクターに一致したすべての要素をクリックし、最初の要素だけを対象とするわけではありません。セレクターに一致する要素が存在しない場合でも、エラーは発生しません。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "入力フィールド、テキストエリア、または contenteditable 要素にテキストを書き込みます。注意: テキストを書き込む前に、必ず 'click' アクションでその要素にフォーカスしてください。テキストはキーボード入力をシミュレートするため、1文字ずつタイプされます。" + }, + "text": { + "type": "string", + "description": "入力テキスト", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "このページでキーを押してください。キーコードについては https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html を参照してください。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "このページでキーを押してください" + }, + "key": { + "type": "string", + "description": "押すキー", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "ページまたは特定の要素をスクロールする" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "スクロール方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "スクロールする要素を指定するクエリセレクター", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "現在のページのコンテンツを取得し、URL と HTML を返します。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "ページ上でJavaScriptコードを実行する" + }, + "script": { + "type": "string", + "description": "実行する JavaScript コード", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "現在のページのPDFを生成します。生成されたPDFは、レスポンスの `actions.pdfs` 配列内で返されます。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "出力されるPDFのページサイズ", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "PDF を横向きで生成するかどうかを指定します", + "default": false + }, + "scale": { + "type": "number", + "description": "生成されるPDFの拡大縮小倍率", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "リクエストのロケーション設定です。指定すると、利用可能な場合は適切なプロキシが使用され、対応する言語およびタイムゾーン設定がエミュレートされます。指定されていない場合は、デフォルトで「US」が使用されます。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 国コード(例:'US'、'AU'、'DE'、'JP')", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "リクエストに対して優先順で指定する言語とロケール。デフォルトは、指定された location の言語になります。詳しくは https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language を参照してください。", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "出力からすべての Base64 画像を削除します。これらは非常に長くなる場合があります。画像の alt テキストは出力内に残りますが、URL はプレースホルダーに置き換えられます。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "広告およびCookie同意ポップアップのブロックを有効化します。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "使用するプロキシの種類を指定します。\n\n - **basic**: ボット対策機能がない、または基本的なボット対策のみを行っているサイト向けのプロキシです。高速で、通常は問題なく動作します。\n - **stealth**: 高度なボット対策を行っているサイト向けのステルスプロキシです。basic より遅くなりますが、特定のサイトではより信頼性があります。1 リクエストあたり最大 5 クレジットを消費します。\n - **auto**: basic プロキシでのスクレイピングに失敗した場合、Firecrawl が自動的に stealth プロキシでリトライします。stealth でのリトライが成功した場合、そのスクレイピングには 5 クレジットが課金されます。最初の basic での試行が成功した場合は、通常料金のみが課金されます。\n\nプロキシを指定しない場合、Firecrawl はデフォルトで auto を使用します。", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "true の場合、そのページは Firecrawl のインデックスおよびキャッシュに保存されます。スクレイピングにおいてデータ保護上の懸念がある場合は、これを false に設定するのが有用です。機微情報を扱うスクレイピングに関連する一部のパラメーター(アクションやヘッダーなど)を使用すると、このパラメーターは強制的に false になります。", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "`formats` に `summary` が含まれている場合のページ要約" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`formats` に `html` が含まれている場合のページコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`formats` に `rawHtml` が含まれている場合のページの生のHTMLコンテンツ" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`formats` に `screenshot` が含まれている場合、そのページのスクリーンショット。スクリーンショットは 24 時間後に期限切れとなり、それ以降はダウンロードできません。" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`links` が `formats` に含まれている場合のページ上のリンク一覧" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` パラメーターで指定されたアクションの結果です。`actions` パラメーターがリクエストで指定されている場合にのみ含まれます", + "properties": { + "screenshots": { + "type": "array", + "description": "提供されたスクリーンショットアクションと同じ順序で並んだスクリーンショットのURL。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "指定されたスクレイプアクションの順序どおりにコンテンツをスクレイピングします。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "指定された executeJavascript アクションと同じ順序の JavaScript の戻り値。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "生成されたPDF。指定したPDFアクションと同じ順序で出力されます。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列になります" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列配列のいずれかになります" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "ページから抽出された言語。値は文字列または文字列の配列です。" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたキーワード。文字列または文字列の配列です" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "このページの別ロケール" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "HTML から抽出されたその他のメタデータ。文字列または文字列配列です" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "LLM Extraction を使用している場合に表示されることがあります。警告メッセージによって、抽出処理で発生した問題が通知されます。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "`formats` に `changeTracking` が含まれる場合の変更追跡情報。`changeTracking` フォーマットがリクエストされた場合にのみ返されます。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "現在のページの比較対象となる前回のスクレイプのタイムスタンプ。以前のスクレイプが存在しない場合は null になります。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "2つのページバージョンを比較した結果です。`new` はこのページが以前は存在していなかったこと、`same` はコンテンツに変更がないこと、`changed` はコンテンツに変更があったこと、`removed` はページが削除されたことを意味します。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "現在のページ/URL の可視性を表します。`visible` は、その URL がリンクやサイトマップといった自然な経路から検出されたことを意味し、`hidden` は、その URL が過去のクロール時の内部メモリから検出されたことを意味します。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "'git-diff' モード使用時の、変更内容の Git スタイルの差分。モードが 'git-diff' に設定されている場合にのみ出力されます。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "「json」モード使用時のJSON比較結果。「mode」が「json」に設定されている場合にのみ出力されます。`schema` で定義された型に基づき、`previous` と `current` のスクレイピング結果から取得したすべてのキーとその値の一覧を出力します。例は[こちら](/features/change-tracking)を参照してください。" + } + } + }, + "branding": { + "type": "object", + "nullable": true, + "description": "`branding` が `formats` に含まれている場合、ページから抽出されるブランディング情報です。色、フォント、タイポグラフィ、余白、コンポーネントなどが含まれます。" + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "クロールの現在の状態です。`scraping`、`completed`、`failed` のいずれかです。" + }, + "total": { + "type": "integer", + "description": "クロールを試行したページ数の合計。" + }, + "completed": { + "type": "integer", + "description": "クロールに成功したページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "このクロールで消費されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "クロールの有効期限となる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の 10MB 分のデータを取得するための URL。クロールが完了していない場合、またはレスポンスが 10MB を超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "クロールデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合のページコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合に含まれるページの生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合のページ上のリンクの一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合のページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列です" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列の配列です" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "ページから抽出された言語。文字列または文字列配列である場合があります" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたキーワード。文字列または文字列の配列です" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "このページの別ロケール" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "エラーが発生したスクレイピングジョブとエラーの詳細", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失敗時の ISO タイムスタンプ" + }, + "url": { + "type": "string", + "description": "スクレイピング済みURL" + }, + "error": { + "type": "string", + "description": "エラーメッセージ" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "スクレイピングを試行したが、robots.txt によってブロックされた URL の一覧", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "バッチスクレイプの現在のステータスです。`scraping`、`completed`、`failed` のいずれかです。" + }, + "total": { + "type": "integer", + "description": "スクレイピングを試みたページ数の合計。" + }, + "completed": { + "type": "integer", + "description": "正常にスクレイピングされたページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "バッチスクレイプに使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "バッチスクレイピングの有効期限が切れる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の 10MB のデータを取得するための URL。バッチスクレイピングが完了していない場合、または応答が 10MB を超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "バッチスクレイピングのデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合に返されるページコンテンツの HTML バージョン" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合に取得されるページの生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合のページ上のリンク一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合のページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたタイトル。文字列または文字列の配列を取ることがあります" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出された説明。文字列または文字列の配列になり得ます" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "ページから抽出された言語。文字列または文字列の配列のいずれかです" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "ページから抽出されたキーワード。文字列または文字列の配列となる場合があります" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ページの他のロケール" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、このフィールドは、リクエスト内で指定された無効な URL を含む配列になります。無効な URL がなかった場合、この配列は空になります。ignoreInvalidURLs が false の場合、このフィールドは undefined になります。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string", + "description": "(存在する場合の)ページのタイトル。" + }, + "description": { + "type": "string", + "description": "ページの説明(あれば)" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、このフィールドはリクエストで指定された無効な URL を含む配列です。無効な URL がない場合、この配列は空になります。ignoreInvalidURLs が false の場合、このフィールドは undefined になります。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "抽出ジョブの現在の状態" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "抽出ジョブで使用されたトークン数。ジョブが完了している場合にのみ取得できます。" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/ja/contributing/guide.mdx b/ja/contributing/guide.mdx index c483ce00..7b4ab037 100644 --- a/ja/contributing/guide.mdx +++ b/ja/contributing/guide.mdx @@ -77,7 +77,6 @@ POSTHOG_HOST= # ジョブログなどの PostHog イベントを送信したい ``` -
### 依存関係のインストール
@@ -89,7 +88,6 @@ POSTHOG_HOST= # ジョブログなどの PostHog イベントを送信したい pnpm install # pnpm のバージョンが 9 以上であることを確認! ``` -
### プロジェクトの実行
@@ -106,7 +104,6 @@ pnpm install # pnpm のバージョンが 9 以上であることを確認! redis-server ``` -
### ターミナル 2 - サービスのセットアップ
@@ -120,7 +117,6 @@ pnpm start クロールジョブの処理を担当するワーカーが起動します。 -
### ターミナル3 - 最初のリクエストを送る
@@ -143,7 +139,6 @@ curl -X POST http://localhost:3002/v1/crawl \ }' ``` -
### 代替案: Docker Compose を使用
@@ -160,7 +155,6 @@ docker compose up これにより、Redis、APIサーバー、ワーカーが適切な構成で自動的に起動します。 -
## テスト:
diff --git a/ja/contributing/self-host.mdx b/ja/contributing/self-host.mdx index 65a5ec05..3f953847 100644 --- a/ja/contributing/self-host.mdx +++ b/ja/contributing/self-host.mdx @@ -175,7 +175,6 @@ BULL_AUTH_KEY=CHANGEME `http://localhost:3002/admin/@/queues` で Bull Queue Manager の UI を確認できます。 - 5. (任意)API をテストする crawl エンドポイントを試すには、次を実行してください: @@ -188,7 +187,6 @@ crawl エンドポイントを試すには、次を実行してください: }' ``` -
## トラブルシューティング
@@ -209,7 +207,6 @@ crawl エンドポイントを試すには、次を実行してください: **説明:** このエラーは、Supabase クライアントのセットアップが完了していないために発生します。スクレイプやクロールは問題なく実行できるはずです。現在、セルフホスト環境では Supabase の設定はできません。 -
### 認証を迂回しています
@@ -223,7 +220,6 @@ crawl エンドポイントを試すには、次を実行してください: **説明:** このエラーは、Supabase クライアントのセットアップが完了していないために発生します。スクレイピングやクロールは問題なく実行できるはずです。現在、セルフホスト環境では Supabase の設定は行えません。 -
### Docker コンテナが起動しない
@@ -241,7 +237,6 @@ docker logs [コンテナ名] * .env ファイルで必要な環境変数がすべて正しく設定されていることを確認してください。 * docker-compose.yml に定義された Docker サービスが正しく設定され、必要なイメージが利用可能であることを確認してください。 -
### Redis への接続問題
diff --git a/ja/developer-guides/advanced-guides/authenticated-scraping.mdx b/ja/developer-guides/advanced-guides/authenticated-scraping.mdx index 11a48491..dbcd95fe 100644 --- a/ja/developer-guides/advanced-guides/authenticated-scraping.mdx +++ b/ja/developer-guides/advanced-guides/authenticated-scraping.mdx @@ -108,7 +108,6 @@ auth-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJleGFtcGxlLXVzZXIt **重要:** Cookie は機密性の高い認証情報です。公開したり、バージョン管理にコミットしたりしないでください。パスワード同様に扱ってください。 -
### 手順 2:Firecrawl で Cookie を利用する
@@ -131,7 +130,6 @@ const result = await app.scrape("https://firecrawl-auth.vercel.app/dashboard", { console.log("=== Markdown ===\n" + result.markdown + "\n\n=== Screenshot URL ===\n" + result.screenshot); ``` -
## ベストプラクティス
diff --git a/ja/developer-guides/common-sites/amazon.mdx b/ja/developer-guides/common-sites/amazon.mdx index 0fdd0c26..476ad1ee 100644 --- a/ja/developer-guides/common-sites/amazon.mdx +++ b/ja/developer-guides/common-sites/amazon.mdx @@ -15,7 +15,6 @@ Amazonは最もスクレイピング対象となるECサイトの一つです。 npm install @mendable/firecrawl-js zod ``` -
## 概要
@@ -64,7 +63,6 @@ console.log('✅ 検証済み商品データ:'); console.log(validated); ``` - @@ -87,7 +85,6 @@ const searchResult = await firecrawl.search('gaming laptop site:amazon.com', { console.log(searchResult); ``` -
## Scrape
@@ -107,7 +104,6 @@ const result = await firecrawl.scrape('https://www.amazon.com/ASUS-ROG-Strix-Gam console.log(result); ``` -
## Map
@@ -125,7 +121,6 @@ console.log(mapResult.links); // コンテンツを含まないURL配列を返す ``` -
## クローラー
@@ -147,7 +142,6 @@ const crawlResult = await firecrawl.crawl('https://www.amazon.com/s?k=mechanical console.log(crawlResult.data); ``` -
## バッチスクレイプ
diff --git a/ja/developer-guides/common-sites/etsy.mdx b/ja/developer-guides/common-sites/etsy.mdx index e32d64fa..7042536c 100644 --- a/ja/developer-guides/common-sites/etsy.mdx +++ b/ja/developer-guides/common-sites/etsy.mdx @@ -15,7 +15,6 @@ Etsyは、ユニークでクリエイティブな商品のグローバルマー npm install @mendable/firecrawl-js zod ``` -
## 概要
@@ -63,7 +62,6 @@ console.log('✅ 検証済みリスティングデータ:'); console.log(validated); ``` - @@ -86,7 +84,6 @@ const searchResult = await firecrawl.search('handmade jewelry site:etsy.com', { console.log(searchResult); ``` -
## スクレイプ
@@ -106,7 +103,6 @@ const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/h console.log(result); ``` -
## Map
@@ -124,7 +120,6 @@ console.log(mapResult.links); // コンテンツなしでURLの配列を返す ``` -
## クロール
@@ -146,7 +141,6 @@ const crawlResult = await firecrawl.crawl('https://www.etsy.com/c/jewelry', { console.log(crawlResult.data); ``` -
## バッチスクレイプ
diff --git a/ja/developer-guides/common-sites/github.mdx b/ja/developer-guides/common-sites/github.mdx index 41eed680..17b8bf65 100644 --- a/ja/developer-guides/common-sites/github.mdx +++ b/ja/developer-guides/common-sites/github.mdx @@ -13,7 +13,6 @@ Firecrawlのコア機能を使って、GitHubのリポジトリ、Issue、ドキ npm install @mendable/firecrawl-js zod ``` -
## JSONモードでスクレイピング
@@ -43,7 +42,6 @@ const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', console.log(result.json); ``` - @@ -66,7 +64,6 @@ const searchResult = await firecrawl.search('machine learning site:github.com', console.log(searchResult); ``` -
## スクレイプ
@@ -85,7 +82,6 @@ const result = await firecrawl.scrape('https://github.com/mendableai/firecrawl', console.log(result); ``` -
## Map
@@ -103,7 +99,6 @@ console.log(mapResult.links); // コンテンツなしでURLの配列を返す ``` -
## クロール
@@ -125,7 +120,6 @@ const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wik console.log(crawlResult.data); ``` -
## バッチスクレイプ
@@ -157,7 +151,6 @@ console.log(job.status, job.completed, job.total); console.log(job); ``` -
## JSONモードでのバッチスクレイプ
diff --git a/ja/developer-guides/common-sites/wikipedia.mdx b/ja/developer-guides/common-sites/wikipedia.mdx index 5db81d1d..5a3ede95 100644 --- a/ja/developer-guides/common-sites/wikipedia.mdx +++ b/ja/developer-guides/common-sites/wikipedia.mdx @@ -13,7 +13,6 @@ description: "Wikipediaから記事やインフォボックスを抽出し、ナ npm install @mendable/firecrawl-js zod ``` -
## ユースケース
@@ -52,7 +51,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/JavaScript' console.log(result.json); ``` - @@ -75,7 +73,6 @@ const searchResult = await firecrawl.search('quantum computing site:en.wikipedia console.log(searchResult); ``` -
## スクレイピング
@@ -95,7 +92,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/Artificial_ console.log(result); ``` -
## Map
@@ -113,7 +109,6 @@ console.log(mapResult.links); // コンテンツなしでURLの配列を返す ``` -
## クローリング
@@ -135,7 +130,6 @@ const crawlResult = await firecrawl.crawl('https://en.wikipedia.org/wiki/Portal: console.log(crawlResult.data); ``` -
## バッチスクレイピング
diff --git a/ja/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx b/ja/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx index 0fec60c8..f2bd5b6c 100644 --- a/ja/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx +++ b/ja/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx @@ -740,7 +740,6 @@ const result = streamText({ AI SDK は同一の API で 20 以上のプロバイダに対応しています。詳しくは次をご覧ください: [ai-sdk.dev/docs/foundations/providers-and-models](https://ai-sdk.dev/docs/foundations/providers-and-models)。 -
### UI をカスタマイズする
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/anthropic.mdx b/ja/developer-guides/llm-sdks-and-frameworks/anthropic.mdx index c42785f2..9484816c 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/anthropic.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/anthropic.mdx @@ -22,7 +22,6 @@ ANTHROPIC_API_KEY=your_anthropic_key > **注意:** Node < 20 を使用している場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 -
## スクレイプ + 要約
@@ -53,7 +52,6 @@ const message = await anthropic.messages.create({ console.log('レスポンス:', message); ``` -
## ツールの利用
@@ -108,7 +106,6 @@ if (toolUse && toolUse.type === 'tool_use') { } ``` -
## 構造化抽出
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/gemini.mdx b/ja/developer-guides/llm-sdks-and-frameworks/gemini.mdx index bbfd99e7..afd3f4f2 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/gemini.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/gemini.mdx @@ -22,7 +22,6 @@ GEMINI_API_KEY=your_gemini_key > **注意:** Node < 20 を使用している場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 -
## スクレイプ + 要約
@@ -50,7 +49,6 @@ const response = await ai.models.generateContent({ console.log('要約:', response.text); ``` -
## コンテンツ分析
@@ -87,7 +85,6 @@ const result2 = await chat.sendMessage({ console.log('4番目と5番目の記事:', result2.text); ``` -
## 構造化抽出
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/google-adk.mdx b/ja/developer-guides/llm-sdks-and-frameworks/google-adk.mdx index db6cff3d..d62c5cfa 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/google-adk.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/google-adk.mdx @@ -174,7 +174,6 @@ response = research_agent.run("Python 3.13の最新機能は何ですか?") print(response) ``` -
## ベストプラクティス
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/langchain.mdx b/ja/developer-guides/llm-sdks-and-frameworks/langchain.mdx index 4e160a56..3703a5d1 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/langchain.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/langchain.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注記:** Node 20 未満を使用している場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 -
## スクレイプ + チャット
@@ -53,7 +52,6 @@ const response = await chat.invoke([ console.log('要約:', response.content); ``` -
## チェーン
@@ -94,7 +92,6 @@ const result = await chain.invoke({ console.log('チェーンの結果:', result); ``` -
## ツール呼び出し
@@ -137,7 +134,6 @@ console.log('レスポンス:', response.content); console.log('ツール呼び出し:', response.tool_calls); ``` -
## 構造化データの抽出
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/langgraph.mdx b/ja/developer-guides/llm-sdks-and-frameworks/langgraph.mdx index 489a2352..18dfcb23 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/langgraph.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/langgraph.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注:** Node 20 未満を使用している場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 -
## 基本的なワークフロー
@@ -81,7 +80,6 @@ const result = await app.invoke({ console.log(JSON.stringify(result, null, 2)); ``` -
## マルチステップワークフロー
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx b/ja/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx index 4d2d6b2e..61bf02a9 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注意:** Node < 20 を使用する場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 - diff --git a/ja/developer-guides/llm-sdks-and-frameworks/mastra.mdx b/ja/developer-guides/llm-sdks-and-frameworks/mastra.mdx index cee2af7e..28135bd5 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/mastra.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/mastra.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注:** Node < 20 を使用している場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 -
## マルチステップ ワークフロー
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/openai.mdx b/ja/developer-guides/llm-sdks-and-frameworks/openai.mdx index b770d6b2..ecbc50cd 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/openai.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/openai.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注:** Node < 20 を使用している場合は、`dotenv` をインストールし、コードに `import 'dotenv/config'` を追加してください。 -
## スクレイピング + 要約
@@ -54,7 +53,6 @@ const completion = await openai.chat.completions.create({ console.log('要約:', completion.choices[0]?.message.content); ``` -
## 関数呼び出し
@@ -130,7 +128,6 @@ if (message?.tool_calls && message.tool_calls.length > 0) { } ``` -
## 構造化データ抽出
@@ -185,7 +182,6 @@ const companyInfo = content ? CompanyInfoSchema.parse(JSON.parse(content)) : nul console.log('検証済み企業情報:', companyInfo); ``` -
## 検索 + 分析
@@ -220,7 +216,6 @@ const analysis = await openai.chat.completions.create({ console.log('分析:', analysis.choices[0]?.message?.content); ``` -
## MCP での Responses API
diff --git a/ja/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx b/ja/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx index 20c54ffa..51f532de 100644 --- a/ja/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx +++ b/ja/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx @@ -24,7 +24,6 @@ OPENAI_API_KEY=sk-your-key これらの例では OpenAI を使用していますが、Firecrawl のツールは Anthropic、Google、Mistral などを含む、すべての Vercel AI SDK プロバイダーで動作します。サポートされているプロバイダーの[完全な一覧](https://ai-sdk.dev/providers/ai-sdk-providers)を参照してください。 -
## クイックスタート
@@ -41,7 +40,6 @@ const { text } = await generateText({ }); ``` -
## 利用可能なツール
@@ -60,7 +58,6 @@ import { } from 'firecrawl-aisdk'; ``` -
## 使用例
@@ -83,7 +80,6 @@ const { text } = await generateText({ console.log(text); ``` - @@ -102,7 +98,6 @@ const { text } = await generateText({ console.log(text); ``` -
### マップ
@@ -121,7 +116,6 @@ const { text } = await generateText({ console.log(text); ``` -
### クロール
@@ -142,7 +136,6 @@ const { text } = await generateText({ console.log(text); ``` -
### バッチスクレイピング
@@ -163,7 +156,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 抽出
@@ -184,7 +176,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 検索 + スクレイピング
@@ -203,7 +194,6 @@ const { text } = await generateText({ console.log(text); ``` -
### ストリーム
diff --git a/ja/developer-guides/mcp-setup-guides/chatgpt.mdx b/ja/developer-guides/mcp-setup-guides/chatgpt.mdx new file mode 100644 index 00000000..e9255244 --- /dev/null +++ b/ja/developer-guides/mcp-setup-guides/chatgpt.mdx @@ -0,0 +1,124 @@ +--- +title: "ChatGPT での MCP Web 検索とスクレイピング" +description: "2 分で ChatGPT に Web スクレイピングと検索機能を追加" +--- + + +ChatGPT における MCP サポートは現在ベータ版機能です。OpenAI による開発が進むにつれて、インターフェースや提供状況が変更される可能性があります。 + + + +**提供状況:** MCP コネクタ付きの Developer モードは Free プランでは利用できず、有料の ChatGPT サブスクリプションが必要です。提供状況と機能はプランや地域によって異なります。最新の提供状況とセットアップ手順については、[OpenAI による Developer Mode のドキュメント](https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta) を参照してください。 + + +Firecrawl MCP を使って、ChatGPT に Web スクレイピングと検索機能を追加しましょう。 + +
+ ## かんたんセットアップ +
+ +
+ ### 1. APIキーを取得する +
+ +[firecrawl.dev/app/api-keys](https://www.firecrawl.dev/app/api-keys) にサインアップして、APIキーをコピーします。 + +
+ ### 2. 開発者モードを有効にする +
+ +画面左下のユーザー名をクリックして ChatGPT の設定を開くか、[chatgpt.com/#settings](https://chatgpt.com/#settings) に直接アクセスします。 + +設定画面で一番下までスクロールし、**Advanced Settings** を選択します。**Developer mode** をオンに切り替えます。 + + + ChatGPT の設定画面で Advanced Settings と Developer mode のトグルが表示されている様子 + + +
+ ### 3. コネクタを作成する +
+ +Developer mode を有効にした状態で、同じ設定モーダル内の **Apps & Connectors** タブに移動します。 + +右上の **Create** ボタンをクリックします。 + + + Create ボタンが強調表示された Apps & Connectors タブ + + +コネクタの詳細を入力します: + +- **Name:** `Firecrawl MCP` +- **Description:** `Web scraping, crawling, search, and content extraction`(任意) +- **MCP Server URL:** `https://mcp.firecrawl.dev/YOUR_API_KEY_HERE/v2/mcp` +- **Authentication:** `None` + +URL 中の `YOUR_API_KEY_HERE` を、実際の [Firecrawl API key](https://www.firecrawl.dev/app/api-keys) に置き換えてください。 + + + Firecrawl MCP の詳細が入力された新規コネクタフォーム + + +**"I understand and want to continue"** チェックボックスをオンにしてから、**Create** をクリックします。 + +
+ ### 4. セットアップを確認する +
+ +ChatGPT のメイン画面に戻ってください。**Developer mode** と表示されていれば、MCP コネクタが有効になっています。 + +Developer mode が表示されない場合は、ページを再読み込みしてください。それでも表示されない場合は、もう一度設定を開き、Advanced Settings で Developer mode がオンになっていることを確認してください。 + +
+ ### 5. Firecrawl ツールにアクセスする +
+ +会話で Firecrawl を使用するには、チャット入力欄の **+** ボタンをクリックし、**More** を選択してから **Firecrawl MCP** をクリックします。 + + + ChatGPT のチャット入力欄で + メニューが展開され、More サブメニューと Firecrawl MCP オプションが表示されている画面 + + +
+ ## クイックデモ +
+ +Firecrawl MCP を選択した状態で、次のプロンプトを試してみてください: + +**Search:** + +``` +Search for the latest React Server Components updates +``` + +**スクレイピング:** + +``` +Scrape firecrawl.dev and tell me what it does +``` + +**ドキュメントを取得:** + +``` +Vercelのエッジ関数のドキュメントをスクレイピングして要約する +``` + + +
+ ## ツールの確認 +
+ +ChatGPT が Firecrawl MCP ツールを使用する際、承認を求める確認プロンプトが表示されます。 + + + Firecrawl MCP リクエストを示す ChatGPT のツール確認ダイアログ + + +同じチャットセッション中に毎回確認が表示されないようにするには、**"Remember for this conversation"** にチェックを入れます。これは、MCP ツールが意図しないアクションを実行しないようにするために OpenAI によって実装されているセキュリティ対策です。 + +承認すると、ChatGPT がリクエストを実行し、結果を返します。 + + + ChatGPT に表示された Firecrawl の検索結果の例 + \ No newline at end of file diff --git a/ja/developer-guides/mcp-setup-guides/claude-code.mdx b/ja/developer-guides/mcp-setup-guides/claude-code.mdx index 1a11d8f8..73c40c33 100644 --- a/ja/developer-guides/mcp-setup-guides/claude-code.mdx +++ b/ja/developer-guides/mcp-setup-guides/claude-code.mdx @@ -27,7 +27,6 @@ claude mcp add firecrawl -e FIRECRAWL_API_KEY=your-api-key -- npx -y firecrawl-m 完了です!これで Claude Code からウェブを検索・スクレイピングできます。 -
## クイックデモ
diff --git a/ja/developer-guides/mcp-setup-guides/cursor.mdx b/ja/developer-guides/mcp-setup-guides/cursor.mdx index 423698e8..1a834dec 100644 --- a/ja/developer-guides/mcp-setup-guides/cursor.mdx +++ b/ja/developer-guides/mcp-setup-guides/cursor.mdx @@ -37,7 +37,6 @@ Firecrawl の MCP を使って、Cursor にウェブスクレイピングと検 `your_api_key_here` を実際の Firecrawl API キーに置き換えてください。 -
### 3. Cursor を再起動
diff --git a/ja/developer-guides/mcp-setup-guides/factory-ai.mdx b/ja/developer-guides/mcp-setup-guides/factory-ai.mdx index 78f6ec11..882313a7 100644 --- a/ja/developer-guides/mcp-setup-guides/factory-ai.mdx +++ b/ja/developer-guides/mcp-setup-guides/factory-ai.mdx @@ -33,7 +33,6 @@ curl -fsSL https://app.factory.ai/cli | sh iwr https://app.factory.ai/cli/install.ps1 -useb | iex ``` -
### 3. Firecrawl MCP サーバーを追加
@@ -46,7 +45,6 @@ Factory Droid の CLI で、`/mcp add` コマンドを使って Firecrawl を追 `your-api-key-here` を実際の Firecrawl API キーに置き換えてください。 -
### 4. 完了!
diff --git a/ja/developer-guides/mcp-setup-guides/windsurf.mdx b/ja/developer-guides/mcp-setup-guides/windsurf.mdx index d659c9db..e435294f 100644 --- a/ja/developer-guides/mcp-setup-guides/windsurf.mdx +++ b/ja/developer-guides/mcp-setup-guides/windsurf.mdx @@ -37,7 +37,6 @@ Firecrawl MCP を使って、Windsurf に Web スクレイピングと検索機 `YOUR_API_KEY` を実際の Firecrawl API キーに置き換えてください。 -
### 3. Windsurf を再起動
diff --git a/ja/features/alpha/llmstxt-npx.mdx b/ja/features/alpha/llmstxt-npx.mdx index b8682923..9902521f 100644 --- a/ja/features/alpha/llmstxt-npx.mdx +++ b/ja/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Firecrawl API を使用して CLI 上で LLMs.txt ファイルを生成するシ npx generate-llmstxt --api-key YOUR_FIRECRAWL_API_KEY ``` -
### 2. 環境変数の使用
@@ -47,7 +46,6 @@ FIRECRAWL_API_KEY=ここにあなたのAPIキー npx generate-llmstxt ``` -
### オプション
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## 必要条件
diff --git a/ja/features/change-tracking.mdx b/ja/features/change-tracking.mdx index 902af958..44355ece 100644 --- a/ja/features/change-tracking.mdx +++ b/ja/features/change-tracking.mdx @@ -82,7 +82,6 @@ changeTracking を使うには、URL をスクレイピングするときにフ } ``` -
### 高度なオプション
@@ -170,7 +169,6 @@ if 'json' in result.change_tracking: ... ``` -
### JSON 比較結果の例:
@@ -184,7 +182,6 @@ if 'json' in result.change_tracking: } ``` -
### データモデル
@@ -278,7 +275,6 @@ class ChangeTrackingData(BaseModel): * `chunks`: ファイル内の変更セクション * `changes`: 各行の変更とその種別(add、delete、normal) -
### JSONモード
@@ -302,7 +298,6 @@ class ChangeTrackingData(BaseModel): JSONモードを使用するには、抽出および比較するフィールドを定義したスキーマを指定する必要があります。 -
## 重要なポイント
@@ -353,7 +348,6 @@ changeTracking 機能を使用する際に知っておくべき重要事項は } ``` -
### クロール例
@@ -368,7 +362,6 @@ changeTracking 機能を使用する際に知っておくべき重要事項は } ``` -
### 製品価格の変更を追跡する
diff --git a/ja/features/extract.mdx b/ja/features/extract.mdx index a5e44b52..95c9278a 100644 --- a/ja/features/extract.mdx +++ b/ja/features/extract.mdx @@ -32,7 +32,6 @@ import ExtractWithoutURLsCURL from "/snippets/ja/v2/extract/base/curl.mdx"; 課金体系を簡素化し、Extract でも他のエンドポイントと同様にクレジット制を採用しました。各クレジットは 15 トークンに相当します。 -
## `/extract` の使用
diff --git a/ja/features/search-v0.mdx b/ja/features/search-v0.mdx index cd443f55..4725faa9 100644 --- a/ja/features/search-v0.mdx +++ b/ja/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Python SDK を使用する
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### クエリを検索
@@ -94,7 +92,6 @@ result = app.search(query="Firecrawl とは?") レスポンスは、上の curl コマンドで示したものと同様になります。 -
### JavaScript SDK を使う場合
@@ -107,7 +104,6 @@ result = app.search(query="Firecrawl とは?") npm install @mendable/firecrawl-js ``` -
#### クエリを検索
@@ -124,7 +120,6 @@ const result = await app.search('Firecrawl とは?'); 上の curl コマンドで示したものと同様のレスポンスが返ります。 -
### Go SDK の使用
@@ -137,7 +132,6 @@ const result = await app.search('Firecrawl とは?'); go get github.com/mendableai/firecrawl-go ``` -
#### クエリを検索
@@ -165,7 +159,6 @@ func main() { } ``` -
### Rust SDK を使う
@@ -188,7 +181,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### クエリを検索
diff --git a/ja/integrations/camelai.mdx b/ja/integrations/camelai.mdx index e31318cb..032ed3d3 100644 --- a/ja/integrations/camelai.mdx +++ b/ja/integrations/camelai.mdx @@ -14,7 +14,6 @@ pip install camel-ai ``` -
## 使い方
@@ -36,7 +35,6 @@ mock_app.crawl_url.return_value = respons result = firecrawl.markdown_crawl(url) ``` -
### Firecrawlで単一ページを取得する
diff --git a/ja/integrations/crewai.mdx b/ja/integrations/crewai.mdx index b889ecc1..97cc46da 100644 --- a/ja/integrations/crewai.mdx +++ b/ja/integrations/crewai.mdx @@ -22,7 +22,6 @@ Firecrawl は、[AI エージェントをオーケストレーションするフ pip install firecrawl-py 'crewai[tools]' ``` -
## ツール
@@ -43,7 +42,6 @@ from crewai_tools import FirecrawlCrawlWebsiteTool tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev') ``` -
#### 引数
@@ -79,7 +77,6 @@ from crewai_tools import FirecrawlScrapeWebsiteTool tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev') ``` -
#### 引数
@@ -111,7 +108,6 @@ from crewai_tools import FirecrawlSearchTool tool = FirecrawlSearchTool(query='Firecrawl とは?') ``` -
#### 引数
diff --git a/ja/mcp-server.mdx b/ja/mcp-server.mdx index e16a6255..def22319 100644 --- a/ja/mcp-server.mdx +++ b/ja/mcp-server.mdx @@ -32,7 +32,6 @@ sidebarTitle: 'MCP Server' https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp ``` -
### npxで実行する
@@ -41,7 +40,6 @@ https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp ``` -
### 手動でのインストール
@@ -50,7 +48,6 @@ env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp npm install -g firecrawl-mcp ``` -
### Cursor で実行
@@ -126,7 +123,6 @@ Cursor **v0.45.6** で Firecrawl MCP を構成するには } ``` -
### ストリーミング対応 HTTP モードでの実行
@@ -139,7 +135,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecra 次のURLを使用してください: http://localhost:3000/v2/mcp または https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp -
### Smithery(レガシー)経由でのインストール
@@ -150,7 +145,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecra npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude ``` -
### VS Code での実行
@@ -217,7 +211,6 @@ npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude MCP サーバーは他の拡張機能経由で呼び出した場合は問題なく動作しますが、MCP サーバー一覧に直接登録した場合に限り問題が発生します。VS Code がスキーマ検証を更新し次第、ガイダンスを追加する予定です。 -
### Claude Desktop での実行
@@ -237,7 +230,6 @@ Claude の設定ファイルに次を追加してください: } ``` -
### Claude Code での実行
@@ -248,7 +240,6 @@ Claude Code CLI を使って、Firecrawl の Model Context Protocol(MCP)サ claude mcp add firecrawl -e FIRECRAWL_API_KEY=your-api-key -- npx -y firecrawl-mcp ``` -
### n8n での実行
@@ -280,7 +271,6 @@ env HTTP_STREAMABLE_SERVER=true \ これによりサーバーが `http://localhost:3000/v2/mcp` で起動し、n8n のワークフローでエンドポイントとして使用できます。n8n は HTTP トランスポートを必要とするため、`HTTP_STREAMABLE_SERVER=true` の環境変数が必須です。 -
## 構成
@@ -355,7 +345,6 @@ export FIRECRAWL_RETRY_MAX_ATTEMPTS=10 export FIRECRAWL_RETRY_INITIAL_DELAY=500 # より短い間隔からリトライ開始 ``` -
### Claude Desktop のカスタム設定
@@ -384,7 +373,6 @@ export FIRECRAWL_RETRY_INITIAL_DELAY=500 # より短い間隔からリトラ } ``` -
### システム構成
@@ -425,7 +413,6 @@ const CONFIG = { * 残り1000クレジットで警告 * 残り100クレジットで重大アラート -
### レート制限とバッチ処理
@@ -464,7 +451,6 @@ const CONFIG = { } ``` -
### 2. バッチスクレイプツール (`firecrawl_batch_scrape`)
@@ -498,7 +484,6 @@ const CONFIG = { } ``` -
### 3. バッチのステータスを確認する (`firecrawl_check_batch_status`)
@@ -514,7 +499,6 @@ const CONFIG = { } ``` -
### 4. Map Tool (`firecrawl_map`)
@@ -535,7 +519,6 @@ const CONFIG = { } ``` -
#### Map ツールのオプション:
@@ -572,7 +555,6 @@ const CONFIG = { } ``` -
### 6. Crawl Tool (`firecrawl_crawl`)
@@ -592,7 +574,6 @@ const CONFIG = { } ``` -
### 7. クロールの状態を確認する (`firecrawl_check_crawl_status`)
@@ -610,7 +591,6 @@ const CONFIG = { **戻り値:** クローリングジョブのステータスと進捗。利用可能な場合は結果も含まれます。 -
### 8. Extract Tool (`firecrawl_extract`)
@@ -658,7 +638,6 @@ LLM の機能を使って、ウェブページから構造化データを抽出 } ``` -
#### 抽出ツールのオプション:
@@ -695,7 +674,6 @@ LLM の機能を使って、ウェブページから構造化データを抽出 [ERROR] レート制限を超過しました。2秒後に再試行します… ``` -
## エラーハンドリング
@@ -722,7 +700,6 @@ LLM の機能を使って、ウェブページから構造化データを抽出 } ``` -
## 開発
@@ -738,7 +715,6 @@ npm run build npm test ``` -
### コントリビューション
diff --git a/ja/v0/advanced-scraping-guide.mdx b/ja/v0/advanced-scraping-guide.mdx index 6f7ff041..bd46ae66 100644 --- a/ja/v0/advanced-scraping-guide.mdx +++ b/ja/v0/advanced-scraping-guide.mdx @@ -167,7 +167,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ APIリファレンスはこちら: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Extractor Options
@@ -258,7 +257,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ } ``` -
## タイムアウトの調整
@@ -278,7 +276,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ }' ``` -
## 複数ページのクロール
@@ -300,7 +297,6 @@ jobId を返す { "jobId": "1234-5678-9101" } ``` -
### クロールジョブの確認
@@ -313,7 +309,6 @@ curl -X GET https://api.firecrawl.dev/v0/crawl/status/1234-5678-9101 \ -H 'Authorization: Bearer YOUR_API_KEY' ``` -
### クローラーのオプション
@@ -397,7 +392,6 @@ curl -X POST https://api.firecrawl.dev/v0/crawl \ * 高速クロールモードを使用します。 * 最大 1000 ページをクロールします。 -
## Page Options + Crawler Options
@@ -438,7 +432,6 @@ curl -X POST https://api.firecrawl.dev/v0/crawl \ * 最大深さ 2 までクロールします。 * 高速クロールモードを使用します。 -
## Extractor のオプション + Crawler のオプション
diff --git a/ja/v0/api-reference/endpoint/crawl-cancel.mdx b/ja/v0/api-reference/endpoint/crawl-cancel.mdx index ea06f99e..54065311 100644 --- a/ja/v0/api-reference/endpoint/crawl-cancel.mdx +++ b/ja/v0/api-reference/endpoint/crawl-cancel.mdx @@ -1,4 +1,4 @@ --- title: "クロールジョブのキャンセル" -openapi: 'v0-openapi DELETE /crawl/cancel/{jobId}' +openapi: '/ja/api-reference/v1-openapi.json V0-OPENAPI DELETE /crawl/cancel/{jobId}' --- \ No newline at end of file diff --git a/ja/v0/api-reference/endpoint/crawl.mdx b/ja/v0/api-reference/endpoint/crawl.mdx index 7ef746cb..54065787 100644 --- a/ja/v0/api-reference/endpoint/crawl.mdx +++ b/ja/v0/api-reference/endpoint/crawl.mdx @@ -1,4 +1,4 @@ --- title: "クロール" -openapi: 'v0-openapi POST /crawl' +openapi: '/ja/api-reference/v1-openapi.json V0-OPENAPI POST /crawl' --- \ No newline at end of file diff --git a/ja/v0/api-reference/endpoint/scrape.mdx b/ja/v0/api-reference/endpoint/scrape.mdx index ef22654f..415fcf1c 100644 --- a/ja/v0/api-reference/endpoint/scrape.mdx +++ b/ja/v0/api-reference/endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: 'スクレイピング' -openapi: 'v0-openapi POST /scrape' +openapi: '/ja/api-reference/v1-openapi.json V0-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/ja/v0/api-reference/endpoint/search.mdx b/ja/v0/api-reference/endpoint/search.mdx index 8c1aa3bb..40e98680 100644 --- a/ja/v0/api-reference/endpoint/search.mdx +++ b/ja/v0/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Search(ベータ)" -openapi: 'v0-openapi POST /search' +openapi: '/ja/api-reference/v1-openapi.json V0-OPENAPI POST /search' --- /search エンドポイントは、検索APIにFirecrawlの機能を組み合わせ、あらゆるクエリに対して強力な検索体験を提供します。 diff --git a/ja/v0/api-reference/endpoint/status.mdx b/ja/v0/api-reference/endpoint/status.mdx index 100ff427..eee0ecdf 100644 --- a/ja/v0/api-reference/endpoint/status.mdx +++ b/ja/v0/api-reference/endpoint/status.mdx @@ -1,6 +1,6 @@ --- title: "クロールステータスの取得" -openapi: 'v0-openapi GET /crawl/status/{jobId}' +openapi: '/ja/api-reference/v1-openapi.json V0-OPENAPI GET /crawl/status/{jobId}' --- このエンドポイントは、クロールジョブのステータスを取得します。ジョブが未完了の場合、レスポンスの `partial_data` にコンテンツが含まれます。完了後は、コンテンツは `data` に格納されます。 diff --git a/ja/v0/api-reference/introduction.mdx b/ja/v0/api-reference/introduction.mdx index c4450099..dc3b8486 100644 --- a/ja/v0/api-reference/introduction.mdx +++ b/ja/v0/api-reference/introduction.mdx @@ -13,7 +13,6 @@ description: "Firecrawl API リファレンス" https://api.firecrawl.dev ``` -
## 認証
@@ -26,7 +25,6 @@ Authorization: Bearer fc_123456789 ​ -
## レスポンスコード
diff --git a/ja/v0/api-reference/v0-openapi.json b/ja/v0/api-reference/v0-openapi.json new file mode 100644 index 00000000..5a6525f2 --- /dev/null +++ b/ja/v0/api-reference/v0-openapi.json @@ -0,0 +1,947 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v0", + "description": "Webスクレイピングやクロール処理を行うためのFirecrawlサービス向けAPIです。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v0" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "単一のURLをスクレイピングし、必要に応じてLLMで情報を抽出します", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "スクレイピング対象のURL" + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "リクエストに付与するヘッダー。Cookie や User-Agent などを送信する際に使用します。" + }, + "includeHtml": { + "type": "boolean", + "description": "ページ内コンテンツの HTML バージョンを含めます。レスポンスに html キーが追加されます。", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "ページの生の HTML コンテンツを含めます。レスポンスに rawHtml キーが含まれます。", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "最終的な出力には、ページ内に存在するタグ・クラス・id のみを含めてください。値はカンマ区切りで指定します。例: 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダー、ナビゲーション、フッターなどを除いたページのメインコンテンツのみを返します。", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ページから削除するタグ、クラス、ID を指定します。カンマ区切りの値で入力してください。例: 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "画像やリンクの相対パスをすべて絶対パスに置き換える", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "スクレイピング対象のページの先頭部分のスクリーンショットを含めてください。", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "スクレイピングしているページの全体が写ったスクリーンショットを含めてください。", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "コンテンツを取得する前に、ページの読み込みのために x ミリ秒待機します", + "default": 0 + } + } + }, + "extractorOptions": { + "type": "object", + "description": "ページ内容から構造化情報を抽出するためのオプションです。注意:LLM ベースの抽出はデフォルトでは行われず、明示的に設定された場合にのみ実行されます。`markdown` モードはスクレイピングした Markdown を単に返すだけのモードであり、スクレイピング時のデフォルトモードです。", + "default": {}, + "properties": { + "mode": { + "type": "string", + "enum": [ + "markdown", + "llm-extraction", + "llm-extraction-from-raw-html", + "llm-extraction-from-markdown" + ], + "description": "使用する抽出モードです。`markdown`:スクレイピングしたMarkdownコンテンツをそのまま返し、LLMによる抽出は行いません。`llm-extraction`:クリーニングおよび解析済みコンテンツから、LLMを用いて情報を抽出します。`llm-extraction-from-raw-html`:生のHTMLから直接、LLMを用いて情報を抽出します。`llm-extraction-from-markdown`:Markdownコンテンツから、LLMを用いて情報を抽出します。" + }, + "extractionPrompt": { + "type": "string", + "description": "ページからどのような情報を抽出するかを指定するプロンプト。LLM 抽出モードで使用されます。" + }, + "extractionSchema": { + "type": "object", + "additionalProperties": true, + "description": "抽出するデータのスキーマ。LLM 抽出モードの場合にのみ必須です。", + "required": [ + "company_mission", + "supports_sso", + "is_open_source" + ] + } + } + }, + "timeout": { + "type": "integer", + "description": "リクエストのタイムアウト時間(ミリ秒)", + "default": 30000 + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "オプションに応じて複数のURLをクロールする", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールの開始地点となるベースURL" + }, + "crawlerOptions": { + "type": "object", + "properties": { + "includes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "含める URL パターン" + }, + "excludes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "除外対象のURLパターン" + }, + "generateImgAltText": { + "type": "boolean", + "description": "LLM を使って画像の代替テキストを生成(有料プランが必要)", + "default": false + }, + "returnOnlyUrls": { + "type": "boolean", + "description": "true の場合、クロールステータスでは URL のみをリストとして返します。注意:レスポンスは data 内の URL のリストであり、ドキュメントのリストではありません。", + "default": false + }, + "maxDepth": { + "type": "integer", + "description": "入力したURLを基準としてクロールする最大の階層深さです。maxDepth が 0 の場合は、入力したURLのみをスクレイピングします。maxDepth が 1 の場合は、入力したURLと、その1階層下にあるすべてのページをスクレイピングします。maxDepth が 2 の場合は、入力したURLと、その2階層下までのすべてのページをスクレイピングします。より大きな値でも同様のルールで動作します。" + }, + "mode": { + "type": "string", + "enum": [ + "default", + "fast" + ], + "description": "使用するクロールモードです。Fast モードはサイトマップがないウェブサイトを通常の 4 倍の速度でクロールできますが、精度が低くなる可能性があり、JavaScript によるレンダリングに大きく依存するウェブサイトでは使用しないでください。", + "default": "default" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "クロール時にサイトマップを無視する", + "default": false + }, + "limit": { + "type": "integer", + "description": "クロールするページの最大数", + "default": 10000 + }, + "allowBackwardCrawling": { + "type": "boolean", + "description": "クローラーが特定のURLから、そこに至るまでにリンクで辿ってきたページへ戻れるようにします。例えば、`example.com/product/123` から `example.com/product` へ戻るといった動作を可能にします。", + "default": false + }, + "allowExternalContentLinks": { + "type": "boolean", + "description": "クローラーが外部のウェブサイトへのリンクをたどれるようにします。", + "default": false + } + } + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "リクエストに付与するヘッダー。クッキーや User-Agent などを送信するために使用できます。" + }, + "includeHtml": { + "type": "boolean", + "description": "ページ内コンテンツの HTML バージョンを含めます。レスポンスには html キーが含まれます。", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "ページの生の HTML コンテンツを含めます。レスポンスには rawHtml キーが含まれます。", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "最終出力には、そのページ内に存在するタグ・クラス・ID のみを含めてください。値はカンマ区切りで指定します。例: 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダーやナビゲーション、フッターなどを除いたページのメインコンテンツのみを返します。", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ページから削除するタグ、クラス、ID を指定します。カンマ区切りの値で入力してください。例: 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "画像およびリンクの相対パスをすべて絶対パスに置き換えます", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "スクレイピングしているページの上部のスクリーンショットを含めてください。", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "スクレイピング対象ページの全体が映ったスクリーンショットを含めてください。", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "ページ読み込みのために x ミリ秒待機してからコンテンツを取得します", + "default": 0 + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Googleでキーワードを検索し、各ページのMarkdown形式コンテンツを含む上位ページの結果を返します", + "operationId": "searchGoogle", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "format": "uri", + "description": "検索するクエリ文字列" + }, + "pageOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダーやナビゲーション、フッターなどを除き、ページのメインコンテンツのみを返してください。", + "default": false + }, + "fetchPageContent": { + "type": "boolean", + "description": "各ページのコンテンツを取得します。false の場合は、高速な基本 SERP API をデフォルトで使用します。", + "default": true + }, + "includeHtml": { + "type": "boolean", + "description": "ページ内コンテンツの HTML 版を含めます。レスポンスには html キーが含まれます。", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "ページの生の HTML コンテンツをレスポンスに含めます。レスポンスには rawHtml キーが含まれます。", + "default": false + } + } + }, + "searchOptions": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "結果の最大件数。ベータ期間中は最大 20 件です。" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/status/{jobId}": { + "get": { + "tags": [ + "Crawl" + ], + "summary": "クロールジョブのステータスを取得する", + "operationId": "getCrawlStatus", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "ジョブのステータス(completed/active/failed/paused)" + }, + "current": { + "type": "integer", + "description": "現在のページ番号" + }, + "total": { + "type": "integer", + "description": "総ページ数" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "ジョブから返されるデータ(実行中は null)" + }, + "partial_data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "クロール中のドキュメントは部分的に返されます(ストリーミング)。**この機能は現在アルファ版のため、破壊的な変更が発生する可能性があります。** ページの処理が完了すると、そのページが partial_data 配列に追加されるため、サイト全体のクロール完了を待つ必要はありません。クロールが完了すると、partial_data は空になり、結果は `data` に格納されます。レスポンスの配列内の項目数は最大 50 件です。配列に新しい項目が追加されると、最も古い項目(配列の先頭)が削除されます。" + } + } + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト回数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/cancel/{jobId}": { + "delete": { + "tags": [ + "Crawl" + ], + "summary": "クロールジョブをキャンセルする", + "operationId": "cancelCrawlJob", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "成功したレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "キャンセルを返します。" + } + } + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合、そのページのコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合のページの生の HTML コンテンツ" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "ページのHTTPステータスコード" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "LLM Extraction 使用時に表示されます。定義したスキーマに従ってページから抽出されたデータです。", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "LLM Extraction の使用時に表示されます。抽出に問題がある場合は、警告メッセージで通知されます。" + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合、そのページの内容の HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合のページの生の HTML コンテンツ" + }, + "index": { + "type": "integer", + "description": "クロールされたページの番号です。`partial_data` を利用する際に、データがどのページ由来かを特定するのに役立ちます。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + }, + "SearchResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/ja/v0/features/crawl.mdx b/ja/v0/features/crawl.mdx index 10bb163b..35e414e3 100644 --- a/ja/v0/features/crawl.mdx +++ b/ja/v0/features/crawl.mdx @@ -173,7 +173,6 @@ cURLでは、/crawl は常に `jobId` を返し、それを使ってクロール { "jobId": "1234-5678-9101" } ``` -
### クロールジョブの確認
diff --git a/ja/v0/features/extract.mdx b/ja/v0/features/extract.mdx index 635140e9..63e59210 100644 --- a/ja/v0/features/extract.mdx +++ b/ja/v0/features/extract.mdx @@ -98,7 +98,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ ``` -
### Python SDKの使用
@@ -130,7 +129,6 @@ data = app.scrape_url('https://news.ycombinator.com', { print(data["llm_extraction"]) ``` -
### JavaScript SDK を使用する
@@ -166,7 +164,6 @@ const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", { console.log(scrapeResult.data["llm_extraction"]); ``` -
### Go SDK を使う
@@ -222,7 +219,6 @@ func main() { } ``` -
### Rust SDK を使う
diff --git a/ja/v1/advanced-scraping-guide.mdx b/ja/v1/advanced-scraping-guide.mdx index 5e295a9b..f756b6b8 100644 --- a/ja/v1/advanced-scraping-guide.mdx +++ b/ja/v1/advanced-scraping-guide.mdx @@ -193,7 +193,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ こちらがAPIリファレンスです: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## 抽出オプション
@@ -294,7 +293,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ } ``` -
## アクション
@@ -487,7 +485,6 @@ IDを返します { "id": "1234-5678-9101" } ``` -
### クロールジョブの確認
@@ -500,7 +497,6 @@ curl -X GET https://api.firecrawl.dev/v1/crawl/1234-5678-9101 \ -H 'Authorization: Bearer YOUR_API_KEY' ``` -
#### ページネーション/次のURL
@@ -620,7 +616,6 @@ curl -X POST https://api.firecrawl.dev/v1/crawl \ * 最大深さは 2 です。 * 最大 1000 ページまでクロールします。 - @@ -644,7 +639,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ これは、URLにコンテキスト的に関連するリンクを含むJSONオブジェクトを返します。 -
### 例のレスポンス
@@ -666,7 +660,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ } ``` -
### マップのオプション
diff --git a/ja/v1/api-reference/endpoint/batch-scrape-delete.mdx b/ja/v1/api-reference/endpoint/batch-scrape-delete.mdx index 5b96b41b..2356ed00 100644 --- a/ja/v1/api-reference/endpoint/batch-scrape-delete.mdx +++ b/ja/v1/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのキャンセル' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > 注: 機能とパフォーマンスが向上したこのAPIの[v2版](/ja/api-reference/endpoint/batch-scrape-delete)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/batch-scrape-get-errors.mdx b/ja/v1/api-reference/endpoint/batch-scrape-get-errors.mdx index ec688007..73298cb8 100644 --- a/ja/v1/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/ja/v1/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのエラーを取得' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > 注: エラー報告とデバッグ機能が強化された新しい[v2版のAPI](/ja/api-reference/endpoint/batch-scrape-get-errors)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/batch-scrape-get.mdx b/ja/v1/api-reference/endpoint/batch-scrape-get.mdx index c0eb9799..a4210d2e 100644 --- a/ja/v1/api-reference/endpoint/batch-scrape-get.mdx +++ b/ja/v1/api-reference/endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのステータスを取得' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > 注記: ステータス追跡と監視機能が強化された [この API の v2 版](/ja/api-reference/endpoint/batch-scrape-get)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/batch-scrape.mdx b/ja/v1/api-reference/endpoint/batch-scrape.mdx index 2a556802..d6f907ef 100644 --- a/ja/v1/api-reference/endpoint/batch-scrape.mdx +++ b/ja/v1/api-reference/endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプ' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > 注記: バッチ処理のパフォーマンスと信頼性が向上したこのAPIの新しい[v2版](/ja/api-reference/endpoint/batch-scrape)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/crawl-active.mdx b/ja/v1/api-reference/endpoint/crawl-active.mdx index bee00e2e..eacfd5ac 100644 --- a/ja/v1/api-reference/endpoint/crawl-active.mdx +++ b/ja/v1/api-reference/endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: '進行中のクロールを取得' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > 注意: 機能とパフォーマンスが向上したこのAPIの新しい[v2版](/ja/api-reference/endpoint/crawl-active)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/crawl-delete.mdx b/ja/v1/api-reference/endpoint/crawl-delete.mdx index cf5f57b9..a0691b12 100644 --- a/ja/v1/api-reference/endpoint/crawl-delete.mdx +++ b/ja/v1/api-reference/endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'クロールのキャンセル' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > 注記: 機能とパフォーマンスが向上した [本APIの v2 版](/ja/api-reference/endpoint/crawl-delete) が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/crawl-get-errors.mdx b/ja/v1/api-reference/endpoint/crawl-get-errors.mdx index 48b553d9..ca50f71f 100644 --- a/ja/v1/api-reference/endpoint/crawl-get-errors.mdx +++ b/ja/v1/api-reference/endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'クロールエラーの取得' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > 注: 機能とパフォーマンスが向上した新しい[v2版のAPI](/ja/api-reference/endpoint/crawl-get-errors)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/crawl-get.mdx b/ja/v1/api-reference/endpoint/crawl-get.mdx index 3a8c93c0..feabadac 100644 --- a/ja/v1/api-reference/endpoint/crawl-get.mdx +++ b/ja/v1/api-reference/endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'クロールステータスの取得' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > 注記: 機能とパフォーマンスが向上した [v2 版の API](/ja/api-reference/endpoint/crawl-get) が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/crawl-post.mdx b/ja/v1/api-reference/endpoint/crawl-post.mdx index 567d2050..e085a1b8 100644 --- a/ja/v1/api-reference/endpoint/crawl-post.mdx +++ b/ja/v1/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > 注意: 機能とパフォーマンスが向上した、新しいこのAPIの[v2版](/ja/api-reference/endpoint/crawl-post)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/credit-usage-historical.mdx b/ja/v1/api-reference/endpoint/credit-usage-historical.mdx index cf4297c7..8b531e4f 100644 --- a/ja/v1/api-reference/endpoint/credit-usage-historical.mdx +++ b/ja/v1/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "クレジット利用履歴" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- 月ごとのクレジット利用履歴を返します。必要に応じて、API キー別の内訳も取得できます。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/credit-usage.mdx b/ja/v1/api-reference/endpoint/credit-usage.mdx index 5d97ca19..97c03cfe 100644 --- a/ja/v1/api-reference/endpoint/credit-usage.mdx +++ b/ja/v1/api-reference/endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'クレジット使用量' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > 注記: 機能とパフォーマンスが向上した新しい[v2 版のこの API](/ja/api-reference/endpoint/credit-usage)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/deep-research-get.mdx b/ja/v1/api-reference/endpoint/deep-research-get.mdx index 27dddcff..c3ed8ae3 100644 --- a/ja/v1/api-reference/endpoint/deep-research-get.mdx +++ b/ja/v1/api-reference/endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: 'Deep Research' -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/deep-research.mdx b/ja/v1/api-reference/endpoint/deep-research.mdx index 591c794b..bb6ec73d 100644 --- a/ja/v1/api-reference/endpoint/deep-research.mdx +++ b/ja/v1/api-reference/endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: 'Deep Research' -openapi: 'v1-openapi POST /deep-research' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- Deep Research エンドポイントは、あらゆるテーマに対して AI を用いた高度な調査と分析を行います。調査クエリを入力するだけで、Firecrawl が自律的にウェブを探索して関連情報を収集し、網羅的な洞察にまとめ上げます。 diff --git a/ja/v1/api-reference/endpoint/extract-get.mdx b/ja/v1/api-reference/endpoint/extract-get.mdx index 2b22990c..3a1c4d4e 100644 --- a/ja/v1/api-reference/endpoint/extract-get.mdx +++ b/ja/v1/api-reference/endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Extract のステータスを取得' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > 注記: 機能とパフォーマンスが向上した[v2 版のこの API](/ja/api-reference/endpoint/extract-get)が新たに利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/extract.mdx b/ja/v1/api-reference/endpoint/extract.mdx index b09ee2f1..d1aa7274 100644 --- a/ja/v1/api-reference/endpoint/extract.mdx +++ b/ja/v1/api-reference/endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > 注意: 機能とパフォーマンスが向上した [この API の v2 版](/ja/api-reference/endpoint/extract) が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/llmstxt-get.mdx b/ja/v1/api-reference/endpoint/llmstxt-get.mdx index 1b967651..32e185e5 100644 --- a/ja/v1/api-reference/endpoint/llmstxt-get.mdx +++ b/ja/v1/api-reference/endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt のステータス" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/ja/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- LLMs.txt の生成ジョブのステータスと結果を取得します。このエンドポイントでは、生成の完了状況を確認し、生成されたコンテンツを取得できます。 @@ -69,7 +69,6 @@ LLMs.txt の生成ジョブのステータスと結果を取得します。こ } ``` -
### ポーリングの推奨事項
diff --git a/ja/v1/api-reference/endpoint/llmstxt.mdx b/ja/v1/api-reference/endpoint/llmstxt.mdx index 4666d7de..4b35190b 100644 --- a/ja/v1/api-reference/endpoint/llmstxt.mdx +++ b/ja/v1/api-reference/endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt を生成する" -openapi: "v1-openapi POST /llmstxt" +openapi: "/ja/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- LLMs.txt 生成エンドポイントは、任意のウェブサイトに対して LLMs.txt と LLMs-full.txt を作成します。これらのファイルはサイトのコンテンツを構造化し、LLM に扱いやすい形式で提供することで、言語モデルによる理解と処理を容易にします。 diff --git a/ja/v1/api-reference/endpoint/map.mdx b/ja/v1/api-reference/endpoint/map.mdx index 08613c78..6b837695 100644 --- a/ja/v1/api-reference/endpoint/map.mdx +++ b/ja/v1/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > 注意: 機能とパフォーマンスが向上した新しい[v2版のこのAPI](/ja/api-reference/endpoint/map)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/scrape.mdx b/ja/v1/api-reference/endpoint/scrape.mdx index a68fff2f..242cd011 100644 --- a/ja/v1/api-reference/endpoint/scrape.mdx +++ b/ja/v1/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > 注記: 機能とパフォーマンスが向上した [この API の新しい v2 版](/ja/api-reference/endpoint/scrape) が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/search.mdx b/ja/v1/api-reference/endpoint/search.mdx index fddeb4aa..0b6bd60f 100644 --- a/ja/v1/api-reference/endpoint/search.mdx +++ b/ja/v1/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > 注: 機能とパフォーマンスが向上した[この API の新しい v2 版](/ja/api-reference/endpoint/search)が利用可能です。 diff --git a/ja/v1/api-reference/endpoint/token-usage-historical.mdx b/ja/v1/api-reference/endpoint/token-usage-historical.mdx index d3d9a5b1..92230ca5 100644 --- a/ja/v1/api-reference/endpoint/token-usage-historical.mdx +++ b/ja/v1/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "過去のトークン使用状況" -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- 月別の過去のトークン使用状況を返します。必要に応じて、API キーごとの内訳も取得できます。 \ No newline at end of file diff --git a/ja/v1/api-reference/endpoint/token-usage.mdx b/ja/v1/api-reference/endpoint/token-usage.mdx index a84f306d..2794c381 100644 --- a/ja/v1/api-reference/endpoint/token-usage.mdx +++ b/ja/v1/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'トークン使用量' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > 注意: 機能とパフォーマンスが向上した、このAPIの新しい[v2版](/ja/api-reference/endpoint/token-usage)が利用可能です。 \ No newline at end of file diff --git a/ja/v1/api-reference/v1-openapi.json b/ja/v1/api-reference/v1-openapi.json new file mode 100644 index 00000000..fe98eead --- /dev/null +++ b/ja/v1/api-reference/v1-openapi.json @@ -0,0 +1,3387 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "Firecrawl のサービスと連携し、ウェブスクレイピングやクローリング処理を実行するための API です。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "1つのURLをスクレイピングし、必要に応じてLLMを用いて情報を抽出する", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "スクレイピングするURL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true にすると、このスクレイピングではデータを一切保存しないゼロデータ保持モードが有効になります。この機能を有効化するには、help@firecrawl.dev までお問い合わせください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "複数のURLをスクレイピングし、必要に応じてLLMを使って情報を抽出する", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "スクレイプ対象のURL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook の仕様を表すオブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook を送信する URL。バッチスクレイピングの開始時(batch_scrape.started)、各ページのスクレイピング完了時(batch_scrape.page)、およびバッチスクレイピング完了時(batch_scrape.completed または batch_scrape.failed)にトリガーされます。レスポンスは `/scrape` エンドポイントと同じになります。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信するリクエストヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールのすべての webhook ペイロードに含めるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類。(デフォルト:all)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "同時スクレイプ数の上限。このパラメータで、このバッチスクレイプに対する同時実行数の上限を設定できます。指定しない場合、バッチスクレイプはチームに設定されている同時実行数の上限に従います。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "urls 配列に無効な URL が指定されている場合、それらは無視されます。無効な URL が原因でリクエスト全体が失敗するのではなく、有効な URL のみを用いてバッチスクレイプが作成され、無効な URL はレスポンスの invalidURLs フィールドで返されます。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このバッチスクレイプではゼロデータ保持が有効になり、データは一切保存されません。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイプジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブのステータスを取得する", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "バッチスクレイピングジョブをキャンセルする", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルが完了しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "バッチスクレイピングジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイピングジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブのエラーを取得する", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブの状態を取得する", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "クロールジョブをキャンセルする", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルが完了しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "クロールジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブのエラーを取得する", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "オプションに応じて複数のURLをクロールする", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールの開始地点となるベースURL" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールから除外するURLパス名を指定するための正規表現パターンです。たとえば、ベースURLを firecrawl.dev として \"excludePaths\": [\"blog/.*\"] を設定すると、https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap のようにそのパターンにマッチする結果はすべてクロール対象から除外されます。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールに含めるURLを指定するためのURLパス名の正規表現パターンです。指定したパターンに一致するパスのみがレスポンスに含まれます。たとえば、ベースURLを firecrawl.dev とし、\"includePaths\": [\"blog/.*\"] を設定した場合、そのパターンに一致する結果のみが含まれます(例: https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap)。" + }, + "maxDepth": { + "type": "integer", + "description": "入力されたURLを基点としてクロールできる最大の絶対深度です。基本的には、スクレイピング対象のURLのパス名に含めることができるスラッシュの最大数を意味します。", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "検出順に基づいてクロールする最大深度です。ルートサイトとサイトマップで見つかったページの検出深度は 0 です。たとえば、この値を 1 に設定し、かつ ignoreSitemap を有効にした場合、入力した URL と、そのページ上からリンクされているすべての URL のみをクロールします。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "クロール時にサイトマップを無視する", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "同じパスに対して、クエリパラメータを変えたり(または付けずに)再度スクレイピングしないでください", + "default": false + }, + "limit": { + "type": "integer", + "description": "クロールするページ数の上限です。デフォルトでは 10,000 ページに設定されています。", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ 非推奨: 代わりに 'crawlEntireDomain' を使用してください。クローラーが子パスだけでなく、同一ドメイン内の親URLや同階層のURLへの内部リンクもたどれるようにします。", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "クローラーが子パスだけでなく、同一階層(兄弟)や親URLへの内部リンクもたどれるようにします。\n\nfalse: より深い(子)URL だけをクロールします。\n→ 例: /features/feature-1 → /features/feature-1/tips ✅\n→ /pricing や / には移動しません ❌\n\ntrue: 兄弟や親を含む、あらゆる内部リンクをクロールします。\n→ 例: /features/feature-1 → /pricing, / など ✅\n\nネストされたパス以外も含めて、より広くサイト内をクロールしたい場合は true を使用してください。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "クローラーが外部のウェブサイトへのリンクをたどることを許可します。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "クローラーがメインドメイン配下のサブドメインへのリンクもたどれるようにします。", + "default": false + }, + "delay": { + "type": "number", + "description": "スクレイプ間の遅延時間(秒)。ウェブサイトのレート制限を尊重するための設定です。" + }, + "maxConcurrency": { + "type": "integer", + "description": "同時スクレイプ数の上限。このパラメータで、このクロールに対する同時実行数の上限を設定できます。指定しない場合、クロールはチームに設定されている同時実行数の上限に従います。" + }, + "webhook": { + "type": "object", + "description": "Webhook 仕様オブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook の送信先となる URL です。クロール開始時 (crawl.started)、各ページのクロール時 (crawl.page)、およびクロールが完了したとき (crawl.completed または crawl.failed) にトリガーされます。レスポンスは `/scrape` エンドポイントと同じです。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信するヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールのすべての Webhook ペイロードに含まれるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "webhook URL に送信するイベントの種類(デフォルト: all)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true に設定すると、このクロールではデータが一切保存されません(ゼロデータ保持)。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "オプションに基づいて複数のURLをマップする", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールを開始するためのベースURL" + }, + "search": { + "type": "string", + "description": "マッピングに使用する検索クエリです。Alpha フェーズ中は、検索機能の「スマート」な部分は検索結果 500 件までに制限されます。ただし、map によってそれ以上の結果が見つかった場合でも、その件数には上限はありません。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "クロール時にサイトマップを無視します。", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "ウェブサイトのサイトマップ内にあるリンクのみを返します", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "このサイトのサブドメインを含める", + "default": true + }, + "limit": { + "type": "integer", + "description": "返されるリンクの最大数", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "ミリ秒単位のタイムアウト。デフォルトではタイムアウトはありません。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト回数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "LLMを使ってページから構造化データを抽出", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "データを抽出する対象のURLです。URLはglob形式で指定してください。" + } + }, + "prompt": { + "type": "string", + "description": "抽出プロセスを指示するプロンプト" + }, + "schema": { + "type": "object", + "description": "抽出されたデータの構造を定義するスキーマ。[JSON Schema](https://json-schema.org/) に準拠する必要があります。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "true にすると、抽出時に Web 検索を使用して追加データを取得します", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "true の場合、ウェブサイトのスキャン時に sitemap.xml ファイルは無視されます。", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "true の場合は、指定した URL のサブドメインもスキャンされます", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "true の場合、データ抽出に使用されたソースが、レスポンス内の `sources` キーに含まれます", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "urls 配列内に無効な URL が指定されている場合、それらは無視されます。無効な URL を原因としてリクエスト全体が失敗することはなく、有効な URL のみを使って抽出処理が実行され、無効な URL はレスポンスの invalidURLs フィールドで返されます。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "抽出が成功しました", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "無効なリクエスト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抽出ジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "抽出ジョブのステータスを確認する", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "認証済みチームのアクティブなクロールをすべて取得します", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "正常なレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "クロールの一意な識別子" + }, + "teamId": { + "type": "string", + "description": "このクロールを所有するチームのID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "クロールの起点となるURL" + }, + "options": { + "type": "object", + "description": "このクロールで使用したクローラーのオプション", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "クエリに対する詳細な調査を開始する", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "調査対象のクエリ" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "調査反復の最大深度" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "制限時間(秒)" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "解析対象URLの最大数" + }, + "analysisPrompt": { + "type": "string", + "description": "最終分析で使用するプロンプトです。最終分析のMarkdownを特定の形式で整形するのに役立ちます。" + }, + "systemPrompt": { + "type": "string", + "description": "リサーチエージェント向けのシステムプロンプトです。リサーチエージェントの挙動を特定の方向に調整するのに使用します。" + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "JSON 出力のオプション", + "properties": { + "schema": { + "type": "object", + "description": "JSON出力に使用するスキーマ。 [JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "systemPrompt": { + "type": "string", + "description": "JSON出力用のシステムプロンプト" + }, + "prompt": { + "type": "string", + "description": "JSON出力用のプロンプト" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "リサーチジョブの開始に成功しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "リサーチジョブの ID" + } + } + } + } + } + }, + "400": { + "description": "リクエストパラメーターが不正です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "リサーチジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "ディープリサーチ処理の状態と結果を取得する", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "JSON 形式のときに表示されます", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "Research ジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "認証済みのチームの残りのクレジット数を取得", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "チームの残りクレジット", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "プランに含まれるクレジット数です。クーポンクレジット、クレジットパック、自動チャージによるクレジットは含まれません。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プランを利用している場合は null です", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プランを利用している場合は null です", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "クレジットの利用状況が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "認証済みのチームの過去のクレジット使用量を取得します", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのクレジット使用履歴を取得", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "請求期間に使用された API キー名。byApiKey が false(デフォルト)の場合は null です", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "請求期間中に使用したクレジットの合計", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "認証済みチームの残りトークン数を取得(Extract 専用)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "チームの残りトークン数", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "プランに含まれるトークン数です。クーポンで付与されたトークンは含まれません。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プラン利用時は null です", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プラン利用時は null です", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "トークン使用状況の情報が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "認証済みのチームのトークン使用履歴を取得(Extract のみ)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキー別のトークン使用履歴を取得", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "請求期間中に使用された API キーの名前。byApiKey が false(デフォルト)の場合は null。", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "請求期間内に使用されたトークンの合計数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "検索し、必要に応じて検索結果をスクレイピングします", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "検索クエリ" + }, + "limit": { + "type": "integer", + "description": "返される結果の最大件数", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "時間を基準とした検索パラメータ。事前定義された時間範囲(`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`)と、カスタム日付範囲(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)をサポートします。" + }, + "location": { + "type": "string", + "description": "検索結果用の location パラメータ" + }, + "timeout": { + "type": "integer", + "description": "タイムアウト時間(ミリ秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "他の Firecrawl エンドポイントで無効となる URL を検索結果から除外します。検索結果のデータを他の Firecrawl API エンドポイントへ渡して利用する場合のエラーを減らすのに役立ちます。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "検索結果スクレイピングのオプション", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "検索結果のタイトル" + }, + "description": { + "type": "string", + "description": "検索結果の説明" + }, + "url": { + "type": "string", + "description": "検索結果のURL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "スクレイピングがリクエストされた場合の Markdown コンテンツ" + }, + "html": { + "type": "string", + "nullable": true, + "description": "フォーマットでリクエストされた場合の HTML コンテンツ" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "フォーマットで要求された場合の生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "フォーマットを指定してリクエストした場合に検出されるリンク" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "フォーマットで要求された場合のスクリーンショットのURL" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "問題発生時の警告メッセージ" + } + } + } + } + } + }, + "408": { + "description": "リクエストタイムアウト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "ウェブサイト向けの LLMs.txt を生成する", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "LLMs.txt を生成する URL" + }, + "maxUrls": { + "type": "integer", + "description": "解析する URL の最大数", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "レスポンスにテキストの全文を含める", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "LLMs.txt の生成ジョブが正常に開始されました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "LLMs.txt 生成ジョブの ID" + } + } + } + } + } + }, + "400": { + "description": "リクエストパラメータが不正です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "LLMs.txt生成ジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "LLMs.txt 生成ジョブのステータスと結果を取得", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "生成された LLMs.txt ファイルの内容" + }, + "llmsfulltxt": { + "type": "string", + "description": "showFullText が true の場合の全文テキストコンテンツ" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "生成されたコンテンツが失効するタイミング" + } + } + } + } + } + }, + "404": { + "description": "LLMs.txt の生成ジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダーやナビゲーション、フッターなどを除き、ページのメインコンテンツのみを返します。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力に含めるタグ。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力結果から除外するタグ。" + }, + "maxAge": { + "type": "integer", + "description": "ページのキャッシュがこの値(ミリ秒)より新しい場合は、そのキャッシュ済みページを返します。キャッシュ済みページがこの値より古い場合は、ページを再スクレイピングします。常に最新のデータを必要としない場合は、これを有効にすることでスクレイピングを最大 5 倍高速化できます。デフォルトは 0 で、この場合キャッシュは無効になります。", + "default": 0 + }, + "headers": { + "type": "object", + "description": "リクエストに付与するヘッダー。Cookie や User-Agent などを送信するために使用できます。" + }, + "waitFor": { + "type": "integer", + "description": "ページが十分に読み込まれるまでの待機時間を、コンテンツ取得前にミリ秒単位で指定します。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "モバイル端末からのスクレイピングをエミュレートしたい場合は、true に設定します。レスポンシブページのテストやモバイル向けスクリーンショットの取得に便利です。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "リクエスト送信時に TLS 証明書の検証をスキップする", + "default": false + }, + "timeout": { + "type": "integer", + "description": "リクエストのタイムアウト(ミリ秒単位)", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "スクレイピング時に PDF ファイルをどのように処理するかを制御します。true の場合、PDF の内容が抽出されて Markdown 形式に変換され、ページ数に応じて課金されます(1 ページあたり 1 クレジット)。false の場合、PDF ファイルは Base64 エンコードされた状態で返され、合計 1 クレジットの固定料金となります。", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "JSON オプションオブジェクト", + "properties": { + "schema": { + "type": "object", + "description": "抽出に使用するスキーマ(任意)。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "systemPrompt": { + "type": "string", + "description": "抽出時に使用するシステムプロンプト(任意)" + }, + "prompt": { + "type": "string", + "description": "スキーマを使用しない抽出で使うプロンプト(任意)" + } + } + }, + "actions": { + "type": "array", + "description": "コンテンツを取得する前にページで実行するアクション", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "指定したミリ秒間待機します" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "待機時間(ミリ秒)" + }, + "selector": { + "type": "string", + "description": "要素を検索するためのクエリセレクタ", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "スクリーンショットを撮影します。リンクはレスポンスの `actions.screenshots` 配列に格納されます。" + }, + "fullPage": { + "type": "boolean", + "description": "ページ全体のスクリーンショットを取得するか、現在のビューポートのみに限定するかを指定します。", + "default": false + }, + "quality": { + "type": "integer", + "description": "スクリーンショットの画質を1〜100で指定します。100が最高画質です。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "要素をクリック" + }, + "selector": { + "type": "string", + "description": "要素を取得するためのクエリセレクター", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "セレクターに一致した最初の要素だけでなく、すべての要素をクリックします。セレクターに一致する要素が存在しない場合でも、エラーはスローされません。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "入力フィールド、テキストエリア、または contenteditable 要素にテキストを入力します。注意: テキストを入力する前に、必ず「click」アクションでその要素にフォーカスを当ててください。テキストはキーボード入力をシミュレートするため、1文字ずつ入力されます。" + }, + "text": { + "type": "string", + "description": "入力テキスト", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "このページ上でキーボードのキーを押してください。キーコードについては https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html を参照してください。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "ページ上のキーを押してください" + }, + "key": { + "type": "string", + "description": "押下キー", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "ページまたは特定の要素をスクロールする" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "スクロール方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "スクロールする要素を指定するクエリセレクター", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "現在のページのコンテンツをスクレイピングして、URL と HTML を返します。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "ページ上でJavaScriptコードを実行する" + }, + "script": { + "type": "string", + "description": "実行するJavaScriptコード", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "現在のページのPDFを生成します。生成されたPDFは、レスポンス内の `actions.pdfs` 配列で返されます。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "生成されるPDFのページサイズ", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "PDF を横向きで生成するかどうか", + "default": false + }, + "scale": { + "type": "number", + "description": "生成されるPDFの倍率", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "リクエストのロケーション設定です。指定した場合、利用可能であれば適切なプロキシを使用し、対応する言語およびタイムゾーン設定をエミュレートします。指定がない場合は、デフォルトで「US」が使用されます。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 形式の国コード(例: 「US」「AU」「DE」「JP」)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "このリクエストに対して優先される言語およびロケールを、優先度の高い順に指定します。デフォルトは、指定された location に対応する言語になります。詳細は https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language を参照してください。", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "出力から、非常に長大になり得るすべての base64 画像を削除します。画像の alt テキストは出力内に残りますが、URL はプレースホルダーに置き換えられます。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "広告ブロックとクッキー同意ポップアップのブロックを有効にします。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "使用するプロキシの種類を指定します。\n\n - **basic**: ボット対策がない、または基本的なボット対策のみが導入されているサイト向けのプロキシです。高速で、通常は問題なく動作します。\n - **stealth**: 高度なボット対策が導入されているサイト向けのステルスプロキシです。basic より遅くなりますが、特定のサイトではより安定して動作します。1 リクエストあたり最大 5 クレジットかかります。\n - **auto**: basic プロキシでスクレイピングに失敗した場合、Firecrawl が自動的にステルスプロキシで再試行します。ステルスでの再試行が成功した場合、そのスクレイピングには 5 クレジットが請求されます。最初の basic での試行が成功した場合は、通常のコストのみが請求されます。\n\nプロキシを指定しない場合、Firecrawl は basic をデフォルトで使用します。" + }, + "storeInCache": { + "type": "boolean", + "description": "true の場合、そのページは Firecrawl のインデックスとキャッシュに保存されます。スクレイピングによってデータ保護上の懸念が生じる可能性がある場合は、これを false に設定すると有用です。機微なスクレイピングに関連する一部のパラメータ(アクション、ヘッダー)を使用すると、このパラメータは強制的に false に設定されます。", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "出力に含めるフォーマットを指定します。", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "changeTracking 用のオプション(ベータ版)。フォーマットに 'changeTracking' が含まれている場合にのみ適用されます。changeTracking を使用する際は、'markdown' フォーマットも必ず指定する必要があります。", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "変更追跡に使用するモードです。`git-diff` は詳細な差分を提供し、`json` は抽出された JSON データを比較します。" + }, + "schema": { + "type": "object", + "description": "「json」モードで JSON 抽出を行う際のスキーマです。抽出および比較するデータ構造を定義します。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "prompt": { + "type": "string", + "description": "json モードで変更追跡を行う際に使用するプロンプトです。指定しない場合は、デフォルトのプロンプトが使用されます。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "変更追跡に使用するタグです。タグによって変更追跡履歴を別々の「ブランチ」に分割でき、特定のタグでの変更追跡は同じタグで実行されたスクレイプのみを比較対象とします。指定しない場合は、デフォルトタグ(null)が使用されます。" + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`formats` に `html` が含まれている場合のページコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`formats` に `rawHtml` が含まれている場合の、そのページの生の HTML コンテンツ" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`formats` に `screenshot` が含まれている場合のページのスクリーンショット" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`formats` に `links` が含まれている場合の、そのページ上のリンクの一覧" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` パラメータで指定されたアクションの結果。リクエストで `actions` パラメータが指定されている場合にのみ含まれます", + "properties": { + "screenshots": { + "type": "array", + "description": "スクリーンショットのURL。指定したスクリーンショットアクションと同じ順序です。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "提供されたスクレイプアクションと同じ順序でコンテンツをスクレイピングします。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "JavaScript の戻り値。指定された executeJavascript アクションの順序どおりに並びます。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "生成されたPDF。指定されたpdfアクションと同じ順序で生成されます。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "LLM Extraction 使用時に表示されます。定義されたスキーマに従ってページから抽出されたデータが表示されます。", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "LLM Extraction の使用時に表示されることがあります。警告メッセージによって、抽出処理に関する問題がある場合は通知されます。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "`formats` に `changeTracking` が含まれている場合の変更追跡情報です。`changeTracking` フォーマットがリクエストされた場合にのみ含まれます。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "現在のページと比較される前回のスクレイプのタイムスタンプ。前回のスクレイプが存在しない場合は null になります。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "2つのページバージョン間の比較結果です。'new' はこのページが以前は存在しなかったこと、'same' はコンテンツに変更がないこと、'changed' はコンテンツが変更されたこと、'removed' はページが削除されたことを表します。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "現在のページ/URL の可視性を示します。'visible' は、その URL がリンクやサイトマップなどのオーガニックな経路によって発見されたことを意味し、'hidden' は、その URL が過去のクロール結果として保存されたメモリから発見されたことを意味します。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "「git-diff」モード使用時の Git 形式の差分。モードが「git-diff」に設定されている場合にのみ表示されます。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "「json」モード使用時の JSON 比較結果。モードが「json」に設定されている場合にのみ表示されます。`schema` で定義された型に基づき、`previous` と `current` のスクレイプ結果から取得したすべてのキーとその値のリストを返します。例は[こちら](/features/change-tracking)を参照してください。" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "クロールの現在の状態です。`scraping`、`completed`、`failed` のいずれかです。" + }, + "total": { + "type": "integer", + "description": "クロールを試みたページの総数。" + }, + "completed": { + "type": "integer", + "description": "正常にクロールできたページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "クロールに使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "クロールが有効期限を迎える日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の 10MB 分のデータを取得するための URL。クロールが完了していない場合、またはレスポンスが 10MB を超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "クロール結果のデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合のページコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合の、ページの生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合、そのページ内のリンク一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true のときのページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "エラーが発生したスクレイピングジョブとエラー詳細", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失敗時のISOタイムスタンプ" + }, + "url": { + "type": "string", + "description": "スクレイプしたURL" + }, + "error": { + "type": "string", + "description": "エラーメッセージ" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "スクレイピングを試行したが robots.txt によってブロックされた URL のリスト", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "バッチスクレイプの現在の状態です。`scraping`、`completed`、`failed` のいずれかです。" + }, + "total": { + "type": "integer", + "description": "スクレイピングを試みたページ数の合計です。" + }, + "completed": { + "type": "integer", + "description": "正常にスクレイピングできたページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "バッチスクレイプに使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "バッチスクレイプの有効期限となる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の10MB分のデータを取得するためのURL。バッチスクレイピングが完了していない場合、またはレスポンスサイズが10MBを超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "バッチスクレイプのデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合、そのページのコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合に返されるページの生の HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合に含まれる、ページ上のリンクの一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合に取得されるページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、これはリクエストで指定された無効な URL を含む配列です。無効な URL が存在しない場合、この配列は空になります。ignoreInvalidURLs が false の場合、このフィールドは未定義(undefined)になります。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、ここにはリクエストで指定された無効な URL を含む配列が格納されます。無効な URL がなかった場合、この配列は空になります。ignoreInvalidURLs が false の場合、このフィールドは undefined になります。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "抽出ジョブの現在の状態" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/ja/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx b/ja/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx index 0a98aaf2..a06f77c8 100644 --- a/ja/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx +++ b/ja/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "バッチスクレイプをキャンセル" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' ---
diff --git a/ja/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx b/ja/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx index a365c990..0a140457 100644 --- a/ja/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx +++ b/ja/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのエラー取得' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' ---
diff --git a/ja/v1/api-reference/v2-endpoint/batch-scrape-get.mdx b/ja/v1/api-reference/v2-endpoint/batch-scrape-get.mdx index 080fe32a..845779b1 100644 --- a/ja/v1/api-reference/v2-endpoint/batch-scrape-get.mdx +++ b/ja/v1/api-reference/v2-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'バッチスクレイプのステータス取得' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' ---
diff --git a/ja/v1/api-reference/v2-endpoint/batch-scrape.mdx b/ja/v1/api-reference/v2-endpoint/batch-scrape.mdx index 84572018..26d07e79 100644 --- a/ja/v1/api-reference/v2-endpoint/batch-scrape.mdx +++ b/ja/v1/api-reference/v2-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: "バッチスクレープ" -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' ---
diff --git a/ja/v1/api-reference/v2-endpoint/crawl-active.mdx b/ja/v1/api-reference/v2-endpoint/crawl-active.mdx index 742239ad..33d0cf29 100644 --- a/ja/v1/api-reference/v2-endpoint/crawl-active.mdx +++ b/ja/v1/api-reference/v2-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: "アクティブなクロールを取得" -openapi: "v2-openapi GET /crawl/active" +openapi: "/ja/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active" ---
diff --git a/ja/v1/api-reference/v2-endpoint/crawl-delete.mdx b/ja/v1/api-reference/v2-endpoint/crawl-delete.mdx index 29a7803d..6eb28c12 100644 --- a/ja/v1/api-reference/v2-endpoint/crawl-delete.mdx +++ b/ja/v1/api-reference/v2-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "クロールをキャンセル" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' ---
diff --git a/ja/v1/api-reference/v2-endpoint/crawl-get-errors.mdx b/ja/v1/api-reference/v2-endpoint/crawl-get-errors.mdx index a8383eb1..f9e55d06 100644 --- a/ja/v1/api-reference/v2-endpoint/crawl-get-errors.mdx +++ b/ja/v1/api-reference/v2-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'クロールのエラーを取得' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' ---
diff --git a/ja/v1/api-reference/v2-endpoint/crawl-get.mdx b/ja/v1/api-reference/v2-endpoint/crawl-get.mdx index 60db2338..40c7a5e8 100644 --- a/ja/v1/api-reference/v2-endpoint/crawl-get.mdx +++ b/ja/v1/api-reference/v2-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: "クロール状況の取得" -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' ---
diff --git a/ja/v1/api-reference/v2-endpoint/crawl-post.mdx b/ja/v1/api-reference/v2-endpoint/crawl-post.mdx index 9798bf19..c5d287e8 100644 --- a/ja/v1/api-reference/v2-endpoint/crawl-post.mdx +++ b/ja/v1/api-reference/v2-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "クロール" -openapi: 'v2-openapi POST /crawl' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -20,7 +20,6 @@ openapi: 'v2-openapi POST /crawl' } ``` -
### サイトマップ制御の強化
diff --git a/ja/v1/api-reference/v2-endpoint/credit-usage-historical.mdx b/ja/v1/api-reference/v2-endpoint/credit-usage-historical.mdx index e69dd91a..f8b01e89 100644 --- a/ja/v1/api-reference/v2-endpoint/credit-usage-historical.mdx +++ b/ja/v1/api-reference/v2-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "クレジット使用履歴" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- 月ごとのクレジット使用履歴を返します。必要に応じて、API キーごとの内訳も提供します。 \ No newline at end of file diff --git a/ja/v1/api-reference/v2-endpoint/credit-usage.mdx b/ja/v1/api-reference/v2-endpoint/credit-usage.mdx index e1067e42..4ea9763a 100644 --- a/ja/v1/api-reference/v2-endpoint/credit-usage.mdx +++ b/ja/v1/api-reference/v2-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: "クレジット利用状況" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' ---
diff --git a/ja/v1/api-reference/v2-endpoint/extract-get.mdx b/ja/v1/api-reference/v2-endpoint/extract-get.mdx index c3b3a108..b9568ec1 100644 --- a/ja/v1/api-reference/v2-endpoint/extract-get.mdx +++ b/ja/v1/api-reference/v2-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: '抽出ステータスの取得' -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' ---
diff --git a/ja/v1/api-reference/v2-endpoint/extract.mdx b/ja/v1/api-reference/v2-endpoint/extract.mdx index 94b6f1c1..b55e59d4 100644 --- a/ja/v1/api-reference/v2-endpoint/extract.mdx +++ b/ja/v1/api-reference/v2-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: "Extract" -openapi: 'v2-openapi POST /extract' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /extract' ---
diff --git a/ja/v1/api-reference/v2-endpoint/map.mdx b/ja/v1/api-reference/v2-endpoint/map.mdx index 1153a7a5..69931d4b 100644 --- a/ja/v1/api-reference/v2-endpoint/map.mdx +++ b/ja/v1/api-reference/v2-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "/map エンドポイント" -openapi: 'v2-openapi POST /map' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ openapi: 'v2-openapi POST /map' } ``` -
### よりスマートなURL検出
diff --git a/ja/v1/api-reference/v2-endpoint/scrape.mdx b/ja/v1/api-reference/v2-endpoint/scrape.mdx index a36ad8b0..2fb2726e 100644 --- a/ja/v1/api-reference/v2-endpoint/scrape.mdx +++ b/ja/v1/api-reference/v2-endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: "スクレイピング" -openapi: "v2-openapi POST /scrape" +openapi: "/ja/api-reference/v1-openapi.json V2-OPENAPI POST /scrape" --- \ No newline at end of file diff --git a/ja/v1/api-reference/v2-endpoint/search.mdx b/ja/v1/api-reference/v2-endpoint/search.mdx index fefed36d..6fbe172b 100644 --- a/ja/v1/api-reference/v2-endpoint/search.mdx +++ b/ja/v1/api-reference/v2-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "検索" -openapi: "v2-openapi POST /search" +openapi: "/ja/api-reference/v1-openapi.json V2-OPENAPI POST /search" ---
@@ -24,7 +24,6 @@ openapi: "v2-openapi POST /search" } ``` -
### レスポンス形式の変更
@@ -42,7 +41,6 @@ v1:結果はフラットなリスト。v2:ソースタイプ別に整理。 } ``` -
### 新機能
diff --git a/ja/v1/api-reference/v2-endpoint/token-usage-historical.mdx b/ja/v1/api-reference/v2-endpoint/token-usage-historical.mdx index ce554a0b..1a0b0317 100644 --- a/ja/v1/api-reference/v2-endpoint/token-usage-historical.mdx +++ b/ja/v1/api-reference/v2-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "トークン使用量の履歴" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- 月ごとのトークン使用量の履歴を返します。必要に応じて、APIキー別の内訳も取得できます。 \ No newline at end of file diff --git a/ja/v1/api-reference/v2-endpoint/token-usage.mdx b/ja/v1/api-reference/v2-endpoint/token-usage.mdx index 020b05be..b1ab456c 100644 --- a/ja/v1/api-reference/v2-endpoint/token-usage.mdx +++ b/ja/v1/api-reference/v2-endpoint/token-usage.mdx @@ -1,4 +1,4 @@ --- title: "トークン利用状況" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/ja/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- \ No newline at end of file diff --git a/ja/v1/api-reference/v2-openapi.json b/ja/v1/api-reference/v2-openapi.json new file mode 100644 index 00000000..024a5795 --- /dev/null +++ b/ja/v1/api-reference/v2-openapi.json @@ -0,0 +1,3261 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "Firecrawl のサービスと連携し、Webスクレイピングやクローリングを行うための API です。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "1つのURLをスクレイピングし、必要に応じてLLMで情報を抽出する", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "スクレイプするURL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true に設定した場合、このスクレイプに対してデータを一切保持しない(ゼロデータ保持)モードが有効になります。この機能を有効化するには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "複数のURLをスクレイピングし、必要に応じてLLMで情報を抽出する", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "スクレイピング対象のURL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook の仕様を表すオブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook の送信先となる URL。バッチスクレイプの開始時(batch_scrape.started)、各ページのスクレイプ時(batch_scrape.page)、およびバッチスクレイプの完了時(batch_scrape.completed または batch_scrape.failed)にトリガーされます。レスポンスは `/scrape` エンドポイントと同じです。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信する HTTP ヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールに対するすべてのウェブフックペイロードに含められるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類。(既定値: all)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "同時スクレイプ数の上限。このパラメータで、このバッチスクレイプにおける同時実行数の上限を設定できます。指定しない場合、バッチスクレイプはチームに設定されている同時実行数の上限に従います。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "urls 配列内に無効な URL が指定されていた場合、それらは無視されます。リクエスト全体が失敗するのではなく、残りの有効な URL を使ってバッチスクレイピングが作成され、無効な URL はレスポンスの invalidURLs フィールドで返されます。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このバッチスクレイプではデータを一切保持しない設定が有効になります。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイピングジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブのステータスを取得", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "バッチスクレイピングジョブをキャンセルする", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルに成功しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "バッチスクレイピングジョブが見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "バッチスクレイピングジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "バッチスクレイピングジョブのエラーを取得", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます。", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブの状態を取得する", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "クロールジョブをキャンセルする", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "キャンセルが完了しました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "クロールジョブが見つかりませんでした", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "クロールジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "クロールジョブのエラーを取得", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "オプションに応じて複数のURLをクロールする", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロールを開始するためのベースURL" + }, + "prompt": { + "type": "string", + "description": "自然言語からクローラーオプション(以下のすべてのパラメータ)を生成するために使用するプロンプトです。明示的に設定されたパラメータは、生成された値よりも優先されます。" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールから除外するURLパス名の正規表現パターンです。たとえば、ベースURLが firecrawl.dev の場合に \"excludePaths\": [\"blog/.*\"] を設定すると、https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap のようにそのパターンに一致するURLは、すべてクロール対象から除外されます。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "クロールに含めるURLを指定するためのURLパス名の正規表現パターンです。指定したパターンにマッチするパスのみがレスポンスに含まれます。たとえば、ベースURLが firecrawl.dev の場合に \"includePaths\": [\"blog/.*\"] を設定すると、そのパターンにマッチする結果のみがレスポンスに含まれます(例: https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap)。" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "発見順序に基づいてクロールする最大深度です。ルートサイトおよびサイトマップで指定されたページの発見深度は 0 です。たとえば、この値を 1 に設定し、かつ ignoreSitemap を有効にした場合、入力した URL と、そのページからリンクされているすべての URL だけをクロールします。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "クロール時のサイトマップモードです。「skip」に設定すると、クローラーはウェブサイトのサイトマップを参照せず、指定したURLを起点として、そこから辿って発見したページのみをクロールします。", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "同じパスを、クエリパラメータを変えて(または付けずに)再度スクレイピングしないでください", + "default": false + }, + "limit": { + "type": "integer", + "description": "クロールするページ数の上限です。デフォルトの上限値は 10,000 です。", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "クローラーが、子パスだけでなく、同階層や親の URL などの内部リンクもたどれるようにします。\n\nfalse: より深い(子)URL のみをクロールします。\n→ 例: /features/feature-1 → /features/feature-1/tips ✅\n→ /pricing や / には進みません ❌\n\ntrue: 同階層や親を含む、あらゆる内部リンクをクロールします。\n→ 例: /features/feature-1 → /pricing、/ など ✅\n\nネストされたパス以外もクロール対象に含めて、内部リンクの範囲を広げたい場合は true を使用します。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "クローラーが外部サイトへのリンクをたどることを許可します。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "クローラーがメインドメイン配下のサブドメインへのリンクもたどれるようにします。", + "default": false + }, + "delay": { + "type": "number", + "description": "スクレイピングの実行間隔(秒)。ウェブサイトのレート制限を順守するのに役立ちます。" + }, + "maxConcurrency": { + "type": "integer", + "description": "スクレイプの同時実行数の上限。このパラメータで、このクロールにおける同時実行数の制限を設定できます。指定しない場合、クロールはチームの同時実行数の上限に従います。" + }, + "webhook": { + "type": "object", + "description": "Webhook 仕様オブジェクト。", + "properties": { + "url": { + "type": "string", + "description": "Webhook の送信先となる URL です。クロールの開始時(crawl.started)、各ページのクロール時(crawl.page)、およびクロールが完了したとき(crawl.completed または crawl.failed)に送信されます。レスポンスは `/scrape` エンドポイントと同一です。" + }, + "headers": { + "type": "object", + "description": "Webhook URL に送信する HTTP ヘッダー。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "このクロールのすべてのWebhookペイロードに含まれるカスタムメタデータ", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Webhook URL に送信するイベントの種類。(デフォルト: all)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "true の場合、このクロールではデータが一切保持されなくなります。この機能を有効にするには、help@firecrawl.dev までご連絡ください。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "オプションに応じて複数のURLをマッピングする", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "クロール開始時の起点となるベースURL" + }, + "search": { + "type": "string", + "description": "マッピングに使用する検索クエリです。Alpha フェーズ中は、検索機能の「スマート」な部分による検索結果は最大500件に制限されます。ただし、map によってそれ以上の結果が見つかった場合でも、そちらには上限は適用されません。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "マッピング時に使用するサイトマップモードです。`skip` に設定すると、URL の取得にサイトマップは使用されません。`only` に設定すると、サイトマップに含まれる URL のみが返されます。デフォルトの `include` では、サイトマップとその他の手法を組み合わせて URL を取得します。", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "サイトのサブドメインを含める", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "クエリパラメーター付きのURLは返さないでください", + "default": true + }, + "limit": { + "type": "integer", + "description": "返却するリンク数の上限", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "タイムアウト時間(ミリ秒単位)。デフォルトではタイムアウトはありません。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエスト数が多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "LLM を使ってページから構造化データを抽出", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "データ抽出対象のURLです。URLはグロブ形式で指定してください。" + } + }, + "prompt": { + "type": "string", + "description": "抽出プロセスを指示するプロンプト" + }, + "schema": { + "type": "object", + "description": "抽出されたデータの構造を定義するスキーマ。[JSON Schema](https://json-schema.org/) に準拠する必要があります。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "true の場合、抽出はウェブ検索を利用して追加データを取得します", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "true の場合、ウェブサイトのスキャン時に sitemap.xml ファイルを無視します", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "true の場合、指定した URL のサブドメインもスキャン対象になります", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "true の場合、データ抽出に使用されたソースが、レスポンス内の `sources` キーに含まれます", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "urls 配列内に無効な URL が指定されている場合、それらは無視されます。リクエスト全体を失敗させるのではなく、残りの有効な URL のみを使って抽出処理が実行され、無効な URL はレスポンスの invalidURLs フィールドに含めて返されます。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "抽出に成功しました", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "無効なリクエスト", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抽出ジョブのID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "抽出ジョブのステータスを取得する", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "認証済みチームのすべての実行中のクロールを取得する", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "クロールの一意の識別子" + }, + "teamId": { + "type": "string", + "description": "このクロールを所有するチームのID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "クロールの起点となるURL" + }, + "options": { + "type": "object", + "description": "このクロールで使用したクローラーのオプション", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "お支払いが必要です", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "リクエストが多すぎます", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "認証済みチームの残りのクレジット数を取得する", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "チームの残りクレジット数", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "プランに含まれるクレジット数です。クーポンによるクレジット、クレジットパック、または自動チャージによるクレジットは含まれません。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プランを利用している場合は null です", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プラン利用時は null になります", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "クレジット利用情報が見つかりません", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "認証中のチームのクレジット利用履歴を取得する", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのクレジット利用履歴を取得する", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功レスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "課金期間中に使用された API キーの名前。byApiKey が false(デフォルト)の場合は null になります", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "請求期間中に使用されたクレジットの合計", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "認証済みチームの残りトークン数を取得(Extract 専用)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "チームで利用可能な残りトークン数", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "プランに含まれるトークン数。クーポンによるトークンは含まれません。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日。無料プラン利用時は null になります", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日。無料プランを利用している場合は null になります", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "トークン使用状況の情報が見つかりませんでした", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "認証済みチームのトークン使用履歴を取得します(Extract のみ)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "APIキーごとのトークン使用履歴を取得する", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の開始日", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "請求期間の終了日", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "請求期間に使用する API キーの名前。byApiKey が false(デフォルト)の場合は null です", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "請求期間内に使用されたトークンの総数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "検索を行い、オプションで検索結果をスクレイピングする", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "検索クエリ" + }, + "limit": { + "type": "integer", + "description": "返す結果の最大件数", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "時間ベースの検索パラメータ。あらかじめ定義された期間指定(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)と、任意の日付範囲指定(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)をサポートします。" + }, + "location": { + "type": "string", + "description": "検索結果用の location パラメータ" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "検索対象とするソースです。レスポンスに含まれる配列を決定します。", + "default": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "時間ベースの検索パラメータ。事前定義された時間範囲(`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`)と、カスタムの日付範囲(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)をサポートします" + }, + "location": { + "type": "string", + "description": "検索結果の location パラメーター" + }, + "timeout": { + "type": "integer", + "description": "タイムアウト(ミリ秒単位)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "他の Firecrawl エンドポイントで無効となる URL を検索結果から除外します。検索結果のデータをそのまま他の Firecrawl API エンドポイントに渡す場合のエラー削減に役立ちます。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "検索結果スクレイピングのオプション", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功時のレスポンス", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "検索結果のタイトル" + }, + "description": { + "type": "string", + "description": "検索結果の説明" + }, + "url": { + "type": "string", + "description": "検索結果のURL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "スクレイピングをリクエストした場合のMarkdownコンテンツ" + }, + "html": { + "type": "string", + "nullable": true, + "description": "フォーマットでリクエストされた場合の HTML コンテンツ" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の生のHTMLコンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "links フォーマットを指定した場合に返されるリンク" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "フォーマットでスクリーンショットが要求された場合のスクリーンショットURL" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "検索結果のタイトル" + }, + "imageUrl": { + "type": "string", + "description": "画像のURL" + }, + "imageWidth": { + "type": "integer", + "description": "画像の幅" + }, + "imageHeight": { + "type": "integer", + "description": "画像の高さ" + }, + "url": { + "type": "string", + "description": "検索結果のURL" + }, + "position": { + "type": "integer", + "description": "検索結果の位置" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "記事のタイトル" + }, + "snippet": { + "type": "string", + "description": "記事の抜粋" + }, + "url": { + "type": "string", + "description": "記事のURL" + }, + "date": { + "type": "string", + "description": "記事の公開日" + }, + "imageUrl": { + "type": "string", + "description": "記事の画像URL" + }, + "position": { + "type": "integer", + "description": "記事の掲載位置" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "スクレイピングがリクエストされた場合のMarkdownコンテンツ" + }, + "html": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合のHTMLコンテンツ" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "フォーマットで指定された場合の生のHTMLコンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "フォーマットでリクエストされた場合に取得されるリンク" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "フォーマットでスクリーンショットが要求されている場合のURL" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "検索結果です。利用可能な配列は、リクエストで指定したソースによって異なります。デフォルトでは `web` 配列が返されます。" + }, + "warning": { + "type": "string", + "nullable": true, + "description": "何らかの問題が発生した場合に表示される警告メッセージ" + } + } + } + } + } + }, + "408": { + "description": "リクエストがタイムアウトしました", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "サーバーエラー", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "ページ全体のスクリーンショットを取得するか、現在のビューポートのみを取得するかを指定します。", + "default": false + }, + "quality": { + "type": "integer", + "description": "スクリーンショットの画質を1〜100で指定します。100が最高画質です。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "ビューポートの幅(ピクセル数)" + }, + "height": { + "type": "integer", + "description": "ビューポートの高さ(ピクセル単位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "JSON出力用のスキーマ。[JSON Schema](https://json-schema.org/) に準拠している必要があります。" + }, + "prompt": { + "type": "string", + "description": "JSON出力用のプロンプト" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "変更追跡に使用するモードです。`git-diff` は詳細な差分を提供し、`json` は抽出された JSON データを比較します。" + }, + "schema": { + "type": "object", + "description": "「json」モードで JSON 抽出を行う際に使用するスキーマです。抽出および比較するデータの構造を定義します。[JSON Schema](https://json-schema.org/) に準拠する必要があります。" + }, + "prompt": { + "type": "string", + "description": "「json」モードで変更追跡を行う際に使用するプロンプト。指定しない場合はデフォルトのプロンプトが使用されます。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "変更トラッキングに使用するタグです。タグによって変更トラッキング履歴を別々の「ブランチ」に分割でき、特定のタグの変更トラッキングでは同じタグで実行されたスクレイプのみが比較対象になります。指定しない場合は、デフォルトのタグ(null)が使用されます。" + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "レスポンスに含める出力フォーマットを指定します。1つ以上のフォーマットを、文字列(例:`'markdown'`)または追加オプションを持つオブジェクト(例:`{ type: 'json', schema: {...} }`)として指定できます。一部のフォーマットでは、特定のオプションを設定する必要があります。例:`['markdown', { type: 'json', schema: {...} }]`。", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "ヘッダーやナビゲーション、フッターなどを除き、ページのメインコンテンツのみを返します。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力に含めるタグ" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "出力に含めないタグ。" + }, + "maxAge": { + "type": "integer", + "description": "ページのキャッシュがこの値(ミリ秒)以内のものであれば、そのキャッシュ済みバージョンを返します。ページのキャッシュがこの値より古い場合は、新たにスクレイピングを行います。極めて新鮮なデータが不要な場合は、これを有効にすることでスクレイピングを最大5倍高速化できます。デフォルトは2日です。", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "リクエストに付与するヘッダー。Cookie や User-Agent などを送信するために使用できます。" + }, + "waitFor": { + "type": "integer", + "description": "コンテンツを取得する前に待機する時間をミリ秒単位で指定します。これにより、ページが十分に読み込まれるための時間を確保できます。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "モバイル端末でのスクレイピングをエミュレートしたい場合は true に設定します。レスポンシブページのテストやモバイル向けスクリーンショットの取得に便利です。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "リクエスト時に TLS 証明書検証をスキップする", + "default": true + }, + "timeout": { + "type": "integer", + "description": "リクエストのタイムアウトまでの時間(ミリ秒単位)。" + }, + "parsers": { + "type": "array", + "description": "スクレイピング時のファイルの処理方法を制御します。\"pdf\" が含まれている場合(デフォルト)、PDF の内容が抽出されて Markdown 形式に変換され、ページ数に応じて課金されます(1 ページあたり 1 クレジット)。空の配列が渡された場合、PDF ファイルは base64 でエンコードされた状態で返され、合計 1 クレジットの一律料金となります。", + "items": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "コンテンツを取得する前にページで実行するアクション", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "指定したミリ秒数だけ待機します" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "待機時間(ミリ秒)" + }, + "selector": { + "type": "string", + "description": "要素を検索するためのクエリセレクタ", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "スクリーンショットを撮影します。リンクはレスポンスの `actions.screenshots` 配列に格納されます。" + }, + "fullPage": { + "type": "boolean", + "description": "ページ全体のスクリーンショットを取得するか、現在の表示領域に限定するかを指定します。", + "default": false + }, + "quality": { + "type": "integer", + "description": "スクリーンショットの画質を1〜100で指定します。100が最高画質です。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "ビューポートの幅(ピクセル単位)" + }, + "height": { + "type": "integer", + "description": "ビューポートの高さ(ピクセル単位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "要素をクリック" + }, + "selector": { + "type": "string", + "description": "要素を検索するためのクエリセレクター", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "セレクターに一致した要素を最初の1つだけでなくすべてクリックします。セレクターに一致する要素が存在しない場合でも、エラーはスローされません。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "入力フィールド、テキストエリア、または contenteditable 属性を持つ要素にテキストを入力します。注意: テキストを入力する前に、必ず「click」アクションでその要素へフォーカスを移してください。テキストはキーボード入力をシミュレートするため、1文字ずつ入力されます。" + }, + "text": { + "type": "string", + "description": "入力テキスト", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "ページ上でキーを押してください。キーコードについては https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html を参照してください。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "ページ上で任意のキーを押してください" + }, + "key": { + "type": "string", + "description": "押下キー", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "ページ全体または特定の要素をスクロールする" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "スクロール方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "スクロールさせる要素のクエリセレクター", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "現在のページのコンテンツをスクレイピングし、URL と HTML を返します。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "ページ上で JavaScript コードを実行する" + }, + "script": { + "type": "string", + "description": "実行する JavaScript コード", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "現在のページのPDFを生成します。生成されたPDFは、レスポンスの `actions.pdfs` 配列として返されます。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "生成される PDF のページサイズ", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "PDFを横向きで生成するかどうか", + "default": false + }, + "scale": { + "type": "number", + "description": "生成されるPDFの拡大縮小倍率", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "リクエストのロケーション設定。指定された場合、利用可能であれば適切なプロキシを使用し、対応する言語およびタイムゾーン設定をエミュレートします。未指定の場合はデフォルトで「US」が使用されます。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 形式の国コード(例: 「US」「AU」「DE」「JP」)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "リクエストに対して優先度順に指定する言語およびロケール。指定しない場合は、指定された location の言語がデフォルトになります。https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language を参照してください。", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "出力からすべての base64 画像を削除します。base64 画像は出力を極端に長くしてしまう可能性があります。画像の alt テキストは出力内に残りますが、URL はプレースホルダーに置き換えられます。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "広告ブロックとクッキー同意ポップアップのブロックを有効にします。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "使用するプロキシの種類を指定します。\n\n - **basic**: ボット対策がない、またはごく基本的なボット対策のみを行っているサイト向けのプロキシです。高速で、通常は問題なく動作します。\n - **stealth**: 高度なボット対策を行っているサイト向けのステルスプロキシです。速度は遅くなりますが、特定のサイトではより信頼性があります。1リクエストあたり最大 5 クレジット消費されます。\n - **auto**: basic プロキシが失敗した場合、Firecrawl が自動的にステルスプロキシでスクレイピングをリトライします。ステルスでのリトライが成功した場合、そのスクレイピングには 5 クレジットが請求されます。最初の basic での試行が成功した場合は、通常のコストのみが請求されます。\n\nプロキシを指定しない場合、Firecrawl のデフォルトは auto になります。", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "true にすると、そのページは Firecrawl のインデックスおよびキャッシュに保存されます。スクレイピング処理においてデータ保護上の懸念がある場合は、これを false に設定しておくと有用です。機密性の高いスクレイピングに関連する一部のパラメーター(アクション、ヘッダー)を使用すると、このパラメーターは自動的に false に設定されます。", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "`formats` に `summary` が含まれている場合のページ要約" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`formats` に `html` が含まれている場合の、そのページのコンテンツの HTML バージョン" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`formats` に `rawHtml` が含まれている場合の、そのページの生の HTML コンテンツ" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`formats` に `screenshot` が含まれている場合のページのスクリーンショット画像" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`formats` に `links` が含まれている場合、そのページ内のリンクの一覧" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` パラメーターで指定されたアクションの結果です。リクエストで `actions` パラメーターが指定されている場合にのみ返されます", + "properties": { + "screenshots": { + "type": "array", + "description": "提供されたスクリーンショットアクションと同じ順序で並んだスクリーンショットURL。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "指定されたアクションの順序どおりにコンテンツをスクレイピングします。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "指定した executeJavascript アクションと同じ順序の JavaScript の戻り値です。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "指定した pdf アクションと同じ順序で生成される PDF。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラー メッセージ" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "LLM Extraction を使用しているときに表示されることがあります。警告メッセージによって、抽出に関する問題が通知されます。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "`formats` に `changeTracking` が含まれている場合の変更追跡情報です。`changeTracking` フォーマットがリクエストされた場合にのみ含まれます。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "現在のページと比較対象となる前回スクレイプのタイムスタンプ。前回のスクレイプが存在しない場合は null。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "2 つのページバージョン間の比較結果です。'new' はこのページが以前は存在していなかったこと、'same' はコンテンツが変更されていないこと、'changed' はコンテンツが変更されたこと、'removed' はページが削除されたことを意味します。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "現在のページ/URL の可視性を示します。'visible' は、その URL がリンクやサイトマップなどのオーガニックな経路で検出されたことを意味し、'hidden' は、その URL が過去のクロールからのメモリ(記録)に基づいて検出されたことを意味します。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "'git-diff' モード使用時の、変更内容の Git スタイルの差分。モードが 'git-diff' に設定されている場合にのみ出力されます。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "「json」モード使用時のJSON比較結果。モードが「json」に設定されている場合にのみ出力されます。`schema` 内で定義された型に基づき、`previous` と `current` のスクレイピング結果から抽出したすべてのキーとその値の一覧を出力します。例は [こちら](/features/change-tracking) を参照してください。" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "現在のクロールのステータスです。`scraping`、`completed`、`failed` のいずれかになります。" + }, + "total": { + "type": "integer", + "description": "クロールを試みたページの総数。" + }, + "completed": { + "type": "integer", + "description": "正常にクロールできたページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "クロールに使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "クロールが期限切れになる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の 10MB のデータを取得するための URL。クロールが完了していない場合、またはレスポンスが 10MB を超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "クロールデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合に含まれる、そのページのコンテンツの HTML バージョン" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合に含まれるページの生 HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合のページ内リンク一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合に取得されるページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "エラーが発生したスクレイプジョブとエラー詳細", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失敗発生時のISOタイムスタンプ" + }, + "url": { + "type": "string", + "description": "スクレイピングしたURL" + }, + "error": { + "type": "string", + "description": "エラーメッセージ" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "スクレイピング試行時に robots.txt によってブロックされた URL の一覧", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "バッチスクレイプの現在の状態です。値は `scraping`、`completed`、`failed` のいずれかです。" + }, + "total": { + "type": "integer", + "description": "スクレイピングを試みたページの総数。" + }, + "completed": { + "type": "integer", + "description": "正常にスクレイピングされたページ数。" + }, + "creditsUsed": { + "type": "integer", + "description": "バッチスクレイピングで使用されたクレジット数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "バッチスクレイプの有効期限が切れる日時。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "次の10MB分のデータを取得するためのURL。バッチスクレイプが完了していない場合、またはレスポンスが10MBを超える場合に返されます。" + }, + "data": { + "type": "array", + "description": "バッチスクレイピングのデータ。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` が true の場合の、そのページコンテンツの HTML 版" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "`includeRawHtml` が true の場合のページの生 HTML コンテンツ" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` が true の場合の、ページ上のリンク一覧" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` が true の場合に取得されるページのスクリーンショット" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "ページのステータスコード" + }, + "error": { + "type": "string", + "nullable": true, + "description": "ページのエラーメッセージ" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true の場合、このフィールドには、リクエスト内で指定された無効な URL を含む配列が入ります。無効な URL がなかった場合は、空の配列になります。ignoreInvalidURLs が false の場合、このフィールドは undefined になります。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "ignoreInvalidURLs が true のとき、ここにはリクエストで指定された無効な URL を含む配列が入ります。無効な URL が存在しない場合、この配列は空になります。ignoreInvalidURLs が false のとき、このフィールドは undefined になります。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "抽出ジョブの現在の状態" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "抽出ジョブで使用されたトークン数。ジョブが完了している場合にのみ利用可能です。" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/ja/v1/features/alpha/llmstxt-npx.mdx b/ja/v1/features/alpha/llmstxt-npx.mdx index c7cac513..e4df762d 100644 --- a/ja/v1/features/alpha/llmstxt-npx.mdx +++ b/ja/v1/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Firecrawl API を使用して CLI で LLMs.txt ファイルを生成するシン npx generate-llmstxt --api-key YOUR_FIRECRAWL_API_KEY ``` -
### 2. 環境変数を使用する
@@ -47,7 +46,6 @@ FIRECRAWL_API_KEY=ここにあなたのAPIキー npx generate-llmstxt ``` -
### オプション
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## 必要条件
diff --git a/ja/v1/features/change-tracking.mdx b/ja/v1/features/change-tracking.mdx index 59542fc9..3e274078 100644 --- a/ja/v1/features/change-tracking.mdx +++ b/ja/v1/features/change-tracking.mdx @@ -69,7 +69,6 @@ console.log(result.changeTracking.previousScrapeAt); // 前回スクレイプ日 } ``` - ### 詳細オプション 変更追跡は追加のオプションで設定できます: @@ -104,7 +103,6 @@ if (result.changeTracking.json) { } ``` -
### Git diff の結果例:
@@ -118,7 +116,6 @@ if (result.changeTracking.json) { ... ``` -
### JSON 比較結果の例
@@ -132,7 +129,6 @@ if (result.changeTracking.json) { } ``` -
### TypeScript インターフェイス
@@ -181,7 +177,6 @@ interface ScrapeParams { } ``` -
## Python SDK
@@ -206,7 +201,6 @@ print("可視状態:", result.changeTracking.visibility) # 'visible' または print("前回のスクレイプ時刻:", result.changeTracking.previousScrapeAt) # 前回スクレイプのISOタイムスタンプ ``` -
### 高度なオプション
@@ -241,7 +235,6 @@ if 'json' in result.changeTracking: print(result.changeTracking.json.title.current) # 現在のタイトル ``` -
### Pythonデータモデル
@@ -260,7 +253,6 @@ class ChangeTrackingData(pydantic.BaseModel): json: Optional[Any] = None ``` -
## 変更追跡モード
@@ -287,7 +279,6 @@ class ChangeTrackingData(pydantic.BaseModel): * `chunks`: ファイル内の変更セクション * `changes`: 種別(add、delete、normal)付きの個々の行変更 -
### JSONモード
@@ -311,7 +302,6 @@ class ChangeTrackingData(pydantic.BaseModel): JSONモードを使用するには、抽出と比較の対象となるフィールドを定義したスキーマを用意する必要があります。 -
## 重要なポイント
@@ -362,7 +352,6 @@ change tracking 機能を使用する際に知っておくべき重要事項は } ``` -
### クロール例
@@ -377,7 +366,6 @@ change tracking 機能を使用する際に知っておくべき重要事項は } ``` -
### 商品価格の変動を追跡
@@ -423,7 +411,6 @@ if result.changeTracking.changeStatus == 'changed': print(f"価格が {result.changeTracking.json.price.previous} から {result.changeTracking.json.price.current} に変わりました") ``` -
### Git diff を使ったコンテンツ変更の監視
@@ -457,7 +444,6 @@ if result.changeTracking.changeStatus == 'changed': print(result.changeTracking.diff.text) ``` -
## 請求
diff --git a/ja/v1/features/extract.mdx b/ja/v1/features/extract.mdx index ebf9f3c7..1e34b63a 100644 --- a/ja/v1/features/extract.mdx +++ b/ja/v1/features/extract.mdx @@ -33,7 +33,6 @@ import ExtractWithoutURLsCURL from "/snippets/ja/v1/extract/base/curl.mdx"; 課金を簡素化し、Extract も他のエンドポイントと同様にクレジット制になりました。1 クレジットは 15 トークンに相当します。 -
## `/extract` の使用
diff --git a/ja/v1/features/search-v0.mdx b/ja/v1/features/search-v0.mdx index a9ee12ea..f359aaa0 100644 --- a/ja/v1/features/search-v0.mdx +++ b/ja/v1/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Python SDK を使用する
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### クエリを検索
@@ -94,7 +92,6 @@ result = app.search(query="Firecrawlとは何ですか?") 上の curl コマンドにある例と同様のレスポンスが返されます。 -
### JavaScript SDK を使用する場合
@@ -107,7 +104,6 @@ result = app.search(query="Firecrawlとは何ですか?") npm install @mendable/firecrawl-js ``` -
#### クエリを検索
@@ -124,7 +120,6 @@ const result = await app.search('Firecrawl とは?'); レスポンスは、上の curl コマンドで示したものと同様の内容になります。 -
### Go SDK で
@@ -137,7 +132,6 @@ const result = await app.search('Firecrawl とは?'); go get github.com/mendableai/firecrawl-go ``` -
#### クエリを検索
@@ -165,7 +159,6 @@ func main() { } ``` -
### Rust SDK の使用
@@ -188,7 +181,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### クエリを検索
diff --git a/ja/webhooks/events.mdx b/ja/webhooks/events.mdx index 84653351..10b712f2 100644 --- a/ja/webhooks/events.mdx +++ b/ja/webhooks/events.mdx @@ -24,7 +24,6 @@ icon: 'bolt' } ``` -
### 共通フィールド
@@ -60,7 +59,6 @@ icon: 'bolt' } ``` -
### `crawl.page`
@@ -98,7 +96,6 @@ icon: 'bolt' これはクロール中に最も頻繁に発生するイベントです。スクレイプに成功した各ページごとに、`crawl.page` イベントを1件受け取ります。 -
### `crawl.completed`
@@ -115,7 +112,6 @@ icon: 'bolt' } ``` -
## バッチスクレイプイベント
@@ -138,7 +134,6 @@ icon: 'bolt' } ``` -
### `batch_scrape.page`
@@ -177,7 +172,6 @@ icon: 'bolt' `batch_scrape.page` イベントが1件届きます。 -
### `batch_scrape.completed`
@@ -194,7 +188,6 @@ icon: 'bolt' } ``` -
## 抽出イベント
@@ -217,7 +210,6 @@ LLM を用いたデータ抽出処理。 } ``` -
### `extract.completed`
@@ -246,7 +238,6 @@ LLM を用いたデータ抽出処理。 } ``` -
### `extract.failed`
@@ -264,7 +255,6 @@ LLM を用いたデータ抽出処理。 } ``` -
## イベントのフィルタリング
diff --git a/ja/webhooks/testing.mdx b/ja/webhooks/testing.mdx index 9d696b63..49e067a9 100644 --- a/ja/webhooks/testing.mdx +++ b/ja/webhooks/testing.mdx @@ -43,7 +43,6 @@ Webhook の設定で、提供された URL を使用してください: } ``` -
## よくある問題のデバッグ
diff --git a/ja/x402/search.mdx b/ja/x402/search.mdx index a9e64737..4a1b0a0d 100644 --- a/ja/x402/search.mdx +++ b/ja/x402/search.mdx @@ -1,6 +1,6 @@ --- title: "オンデマンド検索" -openapi: 'v1-openapi POST /x402/search' +openapi: '/ja/api-reference/v1-openapi.json V1-OPENAPI POST /x402/search' --- diff --git a/pt-BR/_essentials/code.mdx b/pt-BR/_essentials/code.mdx index a31ca881..d5ec66e0 100644 --- a/pt-BR/_essentials/code.mdx +++ b/pt-BR/_essentials/code.mdx @@ -18,7 +18,6 @@ Para indicar uma `palavra` ou `frase` como código, envolva-a com crases (`). Para indicar uma `palavra` ou `frase` como código, coloque-a entre crases (`). ``` -
### Bloco de código
diff --git a/pt-BR/_essentials/markdown.mdx b/pt-BR/_essentials/markdown.mdx index 9f87e6f7..9282834b 100644 --- a/pt-BR/_essentials/markdown.mdx +++ b/pt-BR/_essentials/markdown.mdx @@ -17,7 +17,6 @@ Mais indicado para cabeçalhos de seção. ``` -
### Subtítulos
@@ -32,7 +31,6 @@ Melhor usados para cabeçalhos de subseções. Cada **título** e **subtítulo** cria uma âncora e também aparece no sumário à direita. -
## Formatação de texto
@@ -80,7 +78,6 @@ Para criar uma citação em bloco, adicione um `>` antes de um parágrafo. > Dorothy a seguiu por muitos dos belos cômodos do seu castelo. ``` -
### Multilinha
@@ -95,7 +92,6 @@ Para criar uma citação em bloco, adicione um `>` antes de um parágrafo. > A Bruxa mandou que ela lavasse as panelas e chaleiras, varresse o chão e mantivesse o fogo alimentado com lenha. ``` -
### LaTeX
diff --git a/pt-BR/_essentials/navigation.mdx b/pt-BR/_essentials/navigation.mdx index 3cfd0990..08423a03 100644 --- a/pt-BR/_essentials/navigation.mdx +++ b/pt-BR/_essentials/navigation.mdx @@ -63,7 +63,6 @@ Por exemplo, para ter uma página em `https://yoursite.com/your-folder/your-page ] ``` -
## Páginas ocultas
diff --git a/pt-BR/advanced-scraping-guide.mdx b/pt-BR/advanced-scraping-guide.mdx index 80704555..a34419bd 100644 --- a/pt-BR/advanced-scraping-guide.mdx +++ b/pt-BR/advanced-scraping-guide.mdx @@ -242,7 +242,6 @@ Neste exemplo, o scraper vai: Aqui está a referência da API: [Documentação do endpoint /scrape](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Extração em JSON via formatos
@@ -263,7 +262,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ }' ``` -
## Endpoint /extract
@@ -336,7 +334,6 @@ Retorna um ID { "id": "1234-5678-9101" } ``` -
### Verificar job de rastreamento
@@ -349,7 +346,6 @@ curl -X GET https://api.firecrawl.dev/v2/crawl/1234-5678-9101 \ -H 'Authorization: Bearer fc-SUA-API-KEY' ``` -
#### Paginação/Próxima URL
@@ -372,7 +368,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl/params-preview \ }' ``` -
### Opções do crawler
@@ -468,7 +463,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl \ }' ``` - @@ -488,7 +482,6 @@ curl -X POST https://api.firecrawl.dev/v2/map \ }' ``` -
### Opções de mapa
diff --git a/pt-BR/agents/fire-1-extract.mdx b/pt-BR/agents/fire-1-extract.mdx index 2af2b81a..08552353 100644 --- a/pt-BR/agents/fire-1-extract.mdx +++ b/pt-BR/agents/fire-1-extract.mdx @@ -52,7 +52,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ Neste exemplo, o FIRE-1 (Agente) é instruído a navegar pela paginação das listagens de produtos antes que a raspagem final seja executada. -
### Usando o FIRE-1 com o endpoint /extract
@@ -94,7 +93,6 @@ curl -X POST https://api.firecrawl.dev/v1/extract \ Aqui, o agente garante que todos os comentários sejam carregados na página ao clicar no botão "Load More Comments" antes que o processo de extração comece, conforme o esquema e o prompt fornecidos. **Observação:** O agente FIRE-1 oferece recursos avançados, mas pode consumir mais créditos dependendo da complexidade das instruções de navegação e da quantidade de páginas com as quais interagir. -
### Conheça o FIRE-1: navegação e interação inteligentes
@@ -126,7 +124,6 @@ Ativar o FIRE-1 é simples. Basta incluir um objeto `agent` na sua solicitação *Nota:* O campo `prompt` é obrigatório em solicitações ao endpoint /scrape, indicando exatamente ao FIRE-1 como interagir com a página da web. -
## Exemplo de uso com o endpoint /scrape
@@ -149,7 +146,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ Neste cenário, o FIRE-1 navega pela paginação de forma inteligente e coleta todos os produtos. -
## Considerações
diff --git a/pt-BR/agents/fire-1.mdx b/pt-BR/agents/fire-1.mdx index f2663a63..754b151d 100644 --- a/pt-BR/agents/fire-1.mdx +++ b/pt-BR/agents/fire-1.mdx @@ -13,7 +13,6 @@ import ExtractFire1CURL from "/snippets/pt-BR/v1/scrape/agent-f1/python.mdx"; FIRE-1 é um agente de IA que potencializa os recursos de scraping do Firecrawl. Ele pode controlar ações do navegador e navegar por estruturas complexas de sites para possibilitar uma extração de dados mais completa do que os métodos tradicionais de scraping. -
### O que o FIRE-1 pode fazer:
diff --git a/pt-BR/api-reference/endpoint/batch-scrape-delete.mdx b/pt-BR/api-reference/endpoint/batch-scrape-delete.mdx index 6b7a1fd9..c1a82ca7 100644 --- a/pt-BR/api-reference/endpoint/batch-scrape-delete.mdx +++ b/pt-BR/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,4 +1,4 @@ --- title: "Cancelar raspagem em lote" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/batch-scrape-get-errors.mdx b/pt-BR/api-reference/endpoint/batch-scrape-get-errors.mdx index 2b6a3006..24d70c50 100644 --- a/pt-BR/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/pt-BR/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,4 +1,4 @@ --- title: 'Obter erros de scraping em lote' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/batch-scrape-get.mdx b/pt-BR/api-reference/endpoint/batch-scrape-get.mdx index 939f89cb..9bec02c0 100644 --- a/pt-BR/api-reference/endpoint/batch-scrape-get.mdx +++ b/pt-BR/api-reference/endpoint/batch-scrape-get.mdx @@ -1,4 +1,4 @@ --- title: 'Obter status do scrape em lote' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/batch-scrape.mdx b/pt-BR/api-reference/endpoint/batch-scrape.mdx index 7e99adb7..c492431d 100644 --- a/pt-BR/api-reference/endpoint/batch-scrape.mdx +++ b/pt-BR/api-reference/endpoint/batch-scrape.mdx @@ -1,4 +1,4 @@ --- title: 'Raspar em lote' -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/crawl-active.mdx b/pt-BR/api-reference/endpoint/crawl-active.mdx index 053d51b1..e7cf8936 100644 --- a/pt-BR/api-reference/endpoint/crawl-active.mdx +++ b/pt-BR/api-reference/endpoint/crawl-active.mdx @@ -1,4 +1,4 @@ --- title: "Obter rastreamentos ativos" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/crawl-delete.mdx b/pt-BR/api-reference/endpoint/crawl-delete.mdx index 740255e2..6fe8d1d4 100644 --- a/pt-BR/api-reference/endpoint/crawl-delete.mdx +++ b/pt-BR/api-reference/endpoint/crawl-delete.mdx @@ -1,4 +1,4 @@ --- title: "Cancelar crawl" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/crawl-get-errors.mdx b/pt-BR/api-reference/endpoint/crawl-get-errors.mdx index 2e08edd0..a4394ac8 100644 --- a/pt-BR/api-reference/endpoint/crawl-get-errors.mdx +++ b/pt-BR/api-reference/endpoint/crawl-get-errors.mdx @@ -1,4 +1,4 @@ --- title: 'Obter erros do crawl' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/crawl-get.mdx b/pt-BR/api-reference/endpoint/crawl-get.mdx index 8832fda3..f8340afc 100644 --- a/pt-BR/api-reference/endpoint/crawl-get.mdx +++ b/pt-BR/api-reference/endpoint/crawl-get.mdx @@ -1,4 +1,4 @@ --- title: 'Obter status do crawl' -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/crawl-params-preview.mdx b/pt-BR/api-reference/endpoint/crawl-params-preview.mdx index d7b5e131..95dc9bcc 100644 --- a/pt-BR/api-reference/endpoint/crawl-params-preview.mdx +++ b/pt-BR/api-reference/endpoint/crawl-params-preview.mdx @@ -1,6 +1,6 @@ --- title: 'Prévia de Parâmetros de Crawler' -openapi: 'v2-openapi POST /crawl/params-preview' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /crawl/params-preview' ---
@@ -18,7 +18,6 @@ openapi: 'v2-openapi POST /crawl/params-preview' } ``` -
### Resposta
diff --git a/pt-BR/api-reference/endpoint/crawl-post.mdx b/pt-BR/api-reference/endpoint/crawl-post.mdx index 70ec7f7b..5f6eeea9 100644 --- a/pt-BR/api-reference/endpoint/crawl-post.mdx +++ b/pt-BR/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "Crawl" -openapi: 'v2-openapi POST /crawl' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -22,7 +22,6 @@ Descreva o que rastrear em inglês claro: Isso mapeará o prompt para um conjunto de configurações do crawler para executar a varredura. -
### Controle de Sitemap Aprimorado
diff --git a/pt-BR/api-reference/endpoint/credit-usage-historical.mdx b/pt-BR/api-reference/endpoint/credit-usage-historical.mdx index 2094c5ef..906b8e36 100644 --- a/pt-BR/api-reference/endpoint/credit-usage-historical.mdx +++ b/pt-BR/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de créditos' -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- Retorna o uso histórico de créditos mês a mês. O endpoint também pode, opcionalmente, detalhar o uso por chave de API. \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/credit-usage.mdx b/pt-BR/api-reference/endpoint/credit-usage.mdx index 2a05abd0..1e27f215 100644 --- a/pt-BR/api-reference/endpoint/credit-usage.mdx +++ b/pt-BR/api-reference/endpoint/credit-usage.mdx @@ -1,4 +1,4 @@ --- title: 'Uso de créditos' -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/extract-get.mdx b/pt-BR/api-reference/endpoint/extract-get.mdx index ddb841fb..ea5c09a6 100644 --- a/pt-BR/api-reference/endpoint/extract-get.mdx +++ b/pt-BR/api-reference/endpoint/extract-get.mdx @@ -1,4 +1,4 @@ --- title: 'Obter status da extração' -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/extract.mdx b/pt-BR/api-reference/endpoint/extract.mdx index 54a5817a..32e7e33a 100644 --- a/pt-BR/api-reference/endpoint/extract.mdx +++ b/pt-BR/api-reference/endpoint/extract.mdx @@ -1,4 +1,4 @@ --- title: 'Extrair' -openapi: 'v2-openapi POST /extract' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /extract' --- \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/map.mdx b/pt-BR/api-reference/endpoint/map.mdx index 620e4a10..4d88cc87 100644 --- a/pt-BR/api-reference/endpoint/map.mdx +++ b/pt-BR/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map" -openapi: 'v2-openapi POST /map' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ Três formas de lidar com sitemaps: } ``` -
### Formato de resposta atualizado
diff --git a/pt-BR/api-reference/endpoint/queue-status.mdx b/pt-BR/api-reference/endpoint/queue-status.mdx index 4c734f6e..e4a0b557 100644 --- a/pt-BR/api-reference/endpoint/queue-status.mdx +++ b/pt-BR/api-reference/endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "Status da fila" -openapi: 'v2-openapi GET /team/queue-status' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /team/queue-status' --- Métricas sobre a fila de scraping da sua equipe. \ No newline at end of file diff --git a/pt-BR/api-reference/endpoint/scrape.mdx b/pt-BR/api-reference/endpoint/scrape.mdx index 1d3f8dad..90130ca6 100644 --- a/pt-BR/api-reference/endpoint/scrape.mdx +++ b/pt-BR/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Raspar' -openapi: 'v2-openapi POST /scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' ---
diff --git a/pt-BR/api-reference/endpoint/search.mdx b/pt-BR/api-reference/endpoint/search.mdx index 296b00b3..09fee677 100644 --- a/pt-BR/api-reference/endpoint/search.mdx +++ b/pt-BR/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Pesquisa" -openapi: 'v2-openapi POST /search' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -20,7 +20,6 @@ Pesquise na web, em imagens e em notícias ao mesmo tempo: } ``` -
### Formato da resposta alterado
@@ -38,7 +37,6 @@ v1: lista simples de resultados. v2: organizado por tipo de origem: } ``` -
### Novos recursos
@@ -94,7 +92,6 @@ Exemplos: `"US"`, `"DE"`, `"FR"`, `"JP"`, `"UK"`, `"CA"`. } ``` -
## Parâmetro categories
@@ -117,7 +114,6 @@ Filtre os resultados da busca por categorias específicas usando o parâmetro `c } ``` -
### Resposta de categoria
@@ -146,7 +142,6 @@ Cada resultado inclui um campo `category` indicando sua origem: } ``` - diff --git a/pt-BR/api-reference/endpoint/token-usage-historical.mdx b/pt-BR/api-reference/endpoint/token-usage-historical.mdx index f3324005..aa4db1d1 100644 --- a/pt-BR/api-reference/endpoint/token-usage-historical.mdx +++ b/pt-BR/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "Uso Histórico de Tokens" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET + /team/token-usage/historical' --- Retorna o uso histórico de tokens mês a mês. O endpoint também pode, opcionalmente, detalhar o uso por chave de API. diff --git a/pt-BR/api-reference/endpoint/token-usage.mdx b/pt-BR/api-reference/endpoint/token-usage.mdx index 9e5120a4..606a62b2 100644 --- a/pt-BR/api-reference/endpoint/token-usage.mdx +++ b/pt-BR/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "Uso de tokens" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- Simplificamos a cobrança: o Extract agora usa créditos, assim como os demais endpoints. Cada crédito equivale a 15 tokens. A medição de tokens agora inclui o consumo de todos os endpoints. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/batch-scrape-delete.mdx b/pt-BR/api-reference/v1-endpoint/batch-scrape-delete.mdx index 885f9aa5..1d57d8a4 100644 --- a/pt-BR/api-reference/v1-endpoint/batch-scrape-delete.mdx +++ b/pt-BR/api-reference/v1-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar raspagem em lote' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape-delete) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/batch-scrape-get-errors.mdx b/pt-BR/api-reference/v1-endpoint/batch-scrape-get-errors.mdx index efe44ca3..e067a621 100644 --- a/pt-BR/api-reference/v1-endpoint/batch-scrape-get-errors.mdx +++ b/pt-BR/api-reference/v1-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obter erros de raspagem em lote' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape-get-errors) está disponível, com melhorias no relatório de erros e na depuração. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/batch-scrape-get.mdx b/pt-BR/api-reference/v1-endpoint/batch-scrape-get.mdx index f1ecf9c7..35214218 100644 --- a/pt-BR/api-reference/v1-endpoint/batch-scrape-get.mdx +++ b/pt-BR/api-reference/v1-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obter status do batch scrape' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape-get) está disponível, com melhorias no acompanhamento de status e nos recursos de monitoramento. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/batch-scrape.mdx b/pt-BR/api-reference/v1-endpoint/batch-scrape.mdx index 589a3068..6363deb5 100644 --- a/pt-BR/api-reference/v1-endpoint/batch-scrape.mdx +++ b/pt-BR/api-reference/v1-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Raspagem em lote' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape) está disponível, com desempenho e confiabilidade aprimorados no processamento em lote. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/crawl-active.mdx b/pt-BR/api-reference/v1-endpoint/crawl-active.mdx index f62aac36..57c7c3ec 100644 --- a/pt-BR/api-reference/v1-endpoint/crawl-active.mdx +++ b/pt-BR/api-reference/v1-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Rastreamentos ativos' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-active) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/crawl-delete.mdx b/pt-BR/api-reference/v1-endpoint/crawl-delete.mdx index 8756366d..705a97dc 100644 --- a/pt-BR/api-reference/v1-endpoint/crawl-delete.mdx +++ b/pt-BR/api-reference/v1-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar crawl' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-delete) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/crawl-get-errors.mdx b/pt-BR/api-reference/v1-endpoint/crawl-get-errors.mdx index 96eec62c..f500e958 100644 --- a/pt-BR/api-reference/v1-endpoint/crawl-get-errors.mdx +++ b/pt-BR/api-reference/v1-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obter erros de crawl' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-get-errors) está disponível com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/crawl-get.mdx b/pt-BR/api-reference/v1-endpoint/crawl-get.mdx index 7fd6351c..959caf0c 100644 --- a/pt-BR/api-reference/v1-endpoint/crawl-get.mdx +++ b/pt-BR/api-reference/v1-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Ver status do crawl' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-get) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/crawl-post.mdx b/pt-BR/api-reference/v1-endpoint/crawl-post.mdx index 6a96e566..925c90a4 100644 --- a/pt-BR/api-reference/v1-endpoint/crawl-post.mdx +++ b/pt-BR/api-reference/v1-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "Crawl" -openapi: 'v1-openapi POST /crawl' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Nota: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-post) está disponível com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/credit-usage-historical.mdx b/pt-BR/api-reference/v1-endpoint/credit-usage-historical.mdx index 8dc58d0f..d2952268 100644 --- a/pt-BR/api-reference/v1-endpoint/credit-usage-historical.mdx +++ b/pt-BR/api-reference/v1-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso Histórico de Crédititos' -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- Retorna o uso histórico de créditos mês a mês. O endpoint também pode, opcionalmente, detalhar o uso por chave de API. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/credit-usage.mdx b/pt-BR/api-reference/v1-endpoint/credit-usage.mdx index 15f7b703..aabe4afc 100644 --- a/pt-BR/api-reference/v1-endpoint/credit-usage.mdx +++ b/pt-BR/api-reference/v1-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de créditos' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/credit-usage) já está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/deep-research-get.mdx b/pt-BR/api-reference/v1-endpoint/deep-research-get.mdx index 803058d1..f690d2e7 100644 --- a/pt-BR/api-reference/v1-endpoint/deep-research-get.mdx +++ b/pt-BR/api-reference/v1-endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "Pesquisa aprofundada" -openapi: "v1-openapi GET /deep-research/{id}" +openapi: "/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}" --- \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/deep-research.mdx b/pt-BR/api-reference/v1-endpoint/deep-research.mdx index 3dbe3081..d99cb891 100644 --- a/pt-BR/api-reference/v1-endpoint/deep-research.mdx +++ b/pt-BR/api-reference/v1-endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: 'Deep Research' -openapi: 'v1-openapi POST /deep-research' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- O endpoint Deep Research possibilita pesquisa e análise aprofundadas com IA sobre qualquer tema. Basta fornecer uma consulta de pesquisa e o Firecrawl explorará a web de forma autônoma, reunirá informações relevantes e sintetizará os achados em insights abrangentes. diff --git a/pt-BR/api-reference/v1-endpoint/extract-get.mdx b/pt-BR/api-reference/v1-endpoint/extract-get.mdx index 20ad4199..86ec6d30 100644 --- a/pt-BR/api-reference/v1-endpoint/extract-get.mdx +++ b/pt-BR/api-reference/v1-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Verificar status da extração' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/extract-get) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/extract.mdx b/pt-BR/api-reference/v1-endpoint/extract.mdx index 6188d0bc..9cddec8e 100644 --- a/pt-BR/api-reference/v1-endpoint/extract.mdx +++ b/pt-BR/api-reference/v1-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Observação: Uma [nova versão v2 desta API](/pt-BR/api-reference/endpoint/extract) já está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/llmstxt-get.mdx b/pt-BR/api-reference/v1-endpoint/llmstxt-get.mdx index b74b8f22..fc2f9933 100644 --- a/pt-BR/api-reference/v1-endpoint/llmstxt-get.mdx +++ b/pt-BR/api-reference/v1-endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "Status do LLMs.txt" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Obtenha o status e os resultados de uma tarefa de geração do LLMs.txt. Este endpoint permite verificar se a geração foi concluída e recuperar o conteúdo gerado. @@ -69,7 +69,6 @@ Se a tarefa de geração falhar ou não for encontrada, você receberá uma resp } ``` -
### Recomendações de polling
diff --git a/pt-BR/api-reference/v1-endpoint/llmstxt.mdx b/pt-BR/api-reference/v1-endpoint/llmstxt.mdx index 1214f070..38fbb135 100644 --- a/pt-BR/api-reference/v1-endpoint/llmstxt.mdx +++ b/pt-BR/api-reference/v1-endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Gerar LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- O endpoint de geração de LLMs.txt cria os arquivos LLMs.txt e LLMs-full.txt para qualquer site. Esses arquivos fornecem um formato estruturado e compatível com LLMs do conteúdo do site, facilitando que modelos de linguagem entendam e processem as informações. diff --git a/pt-BR/api-reference/v1-endpoint/map.mdx b/pt-BR/api-reference/v1-endpoint/map.mdx index 85c1a83d..11794c83 100644 --- a/pt-BR/api-reference/v1-endpoint/map.mdx +++ b/pt-BR/api-reference/v1-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Observação: Uma nova [versão v2 deste endpoint](/pt-BR/api-reference/endpoint/map) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/queue-status.mdx b/pt-BR/api-reference/v1-endpoint/queue-status.mdx index 5e9ee8a1..b58a8148 100644 --- a/pt-BR/api-reference/v1-endpoint/queue-status.mdx +++ b/pt-BR/api-reference/v1-endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: 'Status da fila' -openapi: 'v1-openapi GET /team/queue-status' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /team/queue-status' --- > Observação: uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/queue-status) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/scrape.mdx b/pt-BR/api-reference/v1-endpoint/scrape.mdx index 34ea3bd6..f4bee6f3 100644 --- a/pt-BR/api-reference/v1-endpoint/scrape.mdx +++ b/pt-BR/api-reference/v1-endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/scrape) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/search.mdx b/pt-BR/api-reference/v1-endpoint/search.mdx index 68a40185..54f0ecd2 100644 --- a/pt-BR/api-reference/v1-endpoint/search.mdx +++ b/pt-BR/api-reference/v1-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/search) está disponível, com recursos e desempenho aprimorados. diff --git a/pt-BR/api-reference/v1-endpoint/token-usage-historical.mdx b/pt-BR/api-reference/v1-endpoint/token-usage-historical.mdx index 5ee17ea8..fb52498d 100644 --- a/pt-BR/api-reference/v1-endpoint/token-usage-historical.mdx +++ b/pt-BR/api-reference/v1-endpoint/token-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de tokens' -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET + /team/token-usage/historical' --- Retorna o uso histórico de tokens mês a mês. Opcionalmente, o endpoint também pode detalhar o uso por chave de API. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-endpoint/token-usage.mdx b/pt-BR/api-reference/v1-endpoint/token-usage.mdx index 3e469792..3a9c25c3 100644 --- a/pt-BR/api-reference/v1-endpoint/token-usage.mdx +++ b/pt-BR/api-reference/v1-endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de tokens' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/token-usage) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/api-reference/v1-openapi.json b/pt-BR/api-reference/v1-openapi.json new file mode 100644 index 00000000..a3bd513c --- /dev/null +++ b/pt-BR/api-reference/v1-openapi.json @@ -0,0 +1,3656 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "API para interagir com os serviços da Firecrawl e realizar tarefas de web scraping e crawling.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Raspar uma única URL e, opcionalmente, extrair informações usando um LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL a ser raspada" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará retenção zero de dados para este scrape. Para ativar esse recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Raspe várias URLs e, opcionalmente, extraia informações usando um LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "A URL a ser coletada" + } + }, + "webhook": { + "type": "object", + "description": "Um objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para onde o webhook será enviado. Ele será acionado quando a raspagem em lote for iniciada (batch_scrape.started), para cada página raspada (batch_scrape.page) e quando a raspagem em lote for concluída (batch_scrape.completed ou batch_scrape.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos que serão enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos a serem enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de raspagens concorrentes. Este parâmetro permite definir um limite de concorrência para esta raspagem em lote. Se não for especificado, a raspagem em lote seguirá o limite de concorrência da sua equipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer com que toda a requisição falhe, será criada uma raspagem em lote usando apenas as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará a não retenção de dados para esta raspagem em lote. Para ativar esse recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenha o status de uma tarefa de raspagem em lote", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar uma tarefa de raspagem em lote", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento concluído com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Job de raspagem em lote não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter erros de um job de raspagem em lote", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de um rastreamento", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar uma tarefa de rastreamento", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento concluído com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tarefa de rastreamento não encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter os erros de uma tarefa de rastreamento", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear várias URLs de acordo com opções", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL base de onde o rastreamento será iniciado" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para o pathname da URL que excluem URLs correspondentes do crawl. Por exemplo, se você definir `\"excludePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, quaisquer resultados que corresponderem a esse padrão serão excluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para o pathname da URL que definem quais URLs serão incluídas no rastreamento. Somente os caminhos que corresponderem aos padrões especificados serão incluídos na resposta. Por exemplo, se você definir `\"includePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, apenas resultados que correspondam a esse padrão serão incluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDepth": { + "type": "integer", + "description": "Profundidade absoluta máxima de rastreamento a partir da base da URL informada. Basicamente, é o número máximo de barras (/) que o pathname de uma URL coletada pode conter.", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidade máxima de rastreamento com base na ordem de descoberta. O site raiz e as páginas do sitemap têm profundidade de descoberta igual a 0. Por exemplo, se você definir como 1 e ativar ignoreSitemap, você só irá rastrear a URL informada e todas as URLs que estiverem linkadas nessa página." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar o sitemap do site durante o rastreamento", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Não reextraia o mesmo path com parâmetros de consulta diferentes (ou sem nenhum)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a serem rastreadas. O limite padrão é 10.000.", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ DESCONTINUADO: Use \"crawlEntireDomain\" em vez disso. Permite que o crawler siga links internos para URLs irmãs ou URL de nível superior, não apenas caminhos filhos.", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que o rastreador siga links internos para URLs no mesmo nível (irmãs) ou URLs pai, não apenas caminhos filhos.\n\nfalse: Somente rastreia URLs mais profundas (filhas).\n→ ex.: /features/feature-1 → /features/feature-1/tips ✅\n→ Não seguirá /pricing ou / ❌\n\ntrue: Rastreia qualquer link interno, incluindo URLs no mesmo nível e URLs pai.\n→ ex.: /features/feature-1 → /pricing, /, etc. ✅\n\nUse true para obter uma cobertura interna mais ampla, além de caminhos aninhados.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que o rastreador siga links para sites externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que o crawler rastreie links que apontam para subdomínios do domínio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalo, em segundos, entre as coletas. Isso ajuda a respeitar os limites de requisições dos sites." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de raspagens simultâneas. Esse parâmetro permite definir um limite de concorrência para este rastreamento. Se não for especificado, o rastreamento usará o limite de concorrência da sua equipe." + }, + "webhook": { + "type": "object", + "description": "Objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para a qual o webhook será enviado. O webhook será acionado quando o crawl for iniciado (crawl.started), a cada página rastreada (crawl.page) e quando o crawl for concluído (crawl.completed ou crawl.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos que serão enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que devem ser enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, não haverá retenção de dados para este crawl. Para habilitar esse recurso, entre em contato pelo e-mail help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear várias URLs de acordo com as opções", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL base de onde iniciar o rastreamento" + }, + "search": { + "type": "string", + "description": "Consulta de pesquisa usada para mapeamento. Durante a fase Alpha, o componente \"inteligente\" da funcionalidade de pesquisa é limitado a 500 resultados. Porém, se o mapeamento encontrar mais resultados, nenhum limite será aplicado." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar o sitemap do site durante o rastreamento.", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "Retorne apenas os links encontrados no sitemap do site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdomínios do site", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de links a retornar", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Tempo limite em milissegundos. Não há tempo limite definido por padrão." + }, + "location": { + "type": "object", + "description": "Configurações de localização da requisição. Quando definidas, será usado um proxy apropriado, se disponível, e serão emuladas as configurações correspondentes de idioma e fuso horário. O padrão é \"US\" se não for especificado.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (por exemplo, \"US\", \"AU\", \"DE\", \"JP\")", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas e localidades preferidos para a requisição, em ordem de prioridade. Por padrão, usa o idioma da localidade especificada. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro de servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraia dados estruturados de páginas com LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "As URLs das quais os dados serão extraídos. As URLs devem estar no formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt para guiar o processo de extração" + }, + "schema": { + "type": "object", + "description": "Esquema que define a estrutura dos dados extraídos. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Quando definido como true, a extração utilizará pesquisa na web para encontrar dados adicionais", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Quando definido como `true`, os arquivos sitemap.xml serão ignorados durante a varredura do site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Quando definido como verdadeiro, os subdomínios das URLs fornecidas também serão rastreados", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Quando definido como `true`, as fontes usadas para extrair os dados serão incluídas na resposta como a chave `sources`", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer com que a requisição inteira falhe, será realizada uma extração usando apenas as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extração concluída com sucesso", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitação inválida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de extração", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de uma tarefa de extração", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Retorna todos os rastreamentos ativos da equipe autenticada", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "O identificador único do rastreamento" + }, + "teamId": { + "type": "string", + "description": "O ID da equipe proprietária do crawl" + }, + "url": { + "type": "string", + "format": "uri", + "description": "URL de origem do rastreamento" + }, + "options": { + "type": "object", + "description": "Opções do crawler utilizadas neste rastreamento", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "Iniciar uma operação de pesquisa aprofundada com base em uma consulta", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Consulta de pesquisa" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "Profundidade máxima de iterações de pesquisa" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "Limite de tempo em segundos" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "Número máximo de URLs para analisar" + }, + "analysisPrompt": { + "type": "string", + "description": "O prompt a ser usado na análise final. Útil para definir o formato do markdown da análise final de uma maneira específica." + }, + "systemPrompt": { + "type": "string", + "description": "O prompt de sistema a ser usado pelo agente de pesquisa. Útil para orientar o agente de pesquisa em uma direção específica." + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "Opções de saída em JSON", + "properties": { + "schema": { + "type": "object", + "description": "O esquema a ser usado para a saída JSON. Deve estar em conformidade com o padrão [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "Prompt de sistema a ser usado para a saída JSON" + }, + "prompt": { + "type": "string", + "description": "O prompt a ser usado para saída em JSON" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Processo de pesquisa iniciado com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID da tarefa de pesquisa" + } + } + } + } + } + }, + "400": { + "description": "Parâmetros da requisição inválidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID do job de pesquisa", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenha o status e os resultados de uma operação de pesquisa aprofundada", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "Exibido ao utilizar o formato JSON", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página; pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página; pode ser uma string ou um array de strings" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "Job de pesquisa não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obter os créditos restantes da equipe autenticada", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "Número de créditos restantes da equipe", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "Número de créditos do plano. Isso não inclui créditos de cupons, pacotes de créditos ou créditos de recarga automática.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento. null se você estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informação sobre uso de créditos não encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtenha o histórico de uso de créditos da equipe autenticada", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtenha o histórico de uso de créditos por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API usada no período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos utilizados no período de faturamento", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obter os tokens restantes para a equipe autenticada (apenas Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "Quantidade de tokens restantes para a equipe", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "Número de tokens incluídos no plano. Não inclui tokens de cupom.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações sobre o uso de tokens não encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obtenha o histórico de uso de tokens da equipe autenticada (somente Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obter uso histórico de tokens por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de encerramento do período de faturamento", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API utilizada durante o período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados no período de faturamento", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "Métricas da fila de scraping da sua equipe", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "Número de jobs atualmente na sua fila" + }, + "activeJobsInQueue": { + "type": "number", + "description": "Número de jobs ativos atualmente" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "Número de jobs aguardando no momento" + }, + "maxConcurrency": { + "type": "number", + "description": "Número máximo de jobs ativos em execução simultânea, de acordo com o seu plano" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "Timestamp do job mais recente bem-sucedido", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Pesquisar e, opcionalmente, raspar os resultados da busca", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "A consulta de pesquisa" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados a retornar", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "Parâmetro de pesquisa baseado em tempo. Suporta períodos de tempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de datas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parâmetro de localização para resultados de pesquisa" + }, + "timeout": { + "type": "integer", + "description": "Tempo limite em milissegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclui dos resultados de pesquisa as URLs que são inválidas para outros endpoints do Firecrawl. Isso ajuda a reduzir erros se você estiver encaminhando dados da pesquisa para outros endpoints da API do Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "Opções para extrair resultados de busca", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do resultado da pesquisa" + }, + "description": { + "type": "string", + "description": "Descrição do resultado da pesquisa" + }, + "url": { + "type": "string", + "description": "URL do resultado da pesquisa" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Conteúdo em Markdown, se a raspagem tiver sido solicitada" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML, quando solicitado nos formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto, se solicitado nos formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Links encontrados, se solicitado nos formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL da captura de tela, caso tenha sido solicitada em formatos. As capturas de tela expiram após 24 horas e deixam de estar disponíveis para download." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página, pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página; pode ser uma string ou um array de strings" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensagem de aviso caso ocorra algum problema" + } + } + } + } + } + }, + "408": { + "description": "Tempo limite da requisição excedido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erro de servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "Gerar o arquivo LLMs.txt para um site", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL usada para gerar o LLMs.txt" + }, + "maxUrls": { + "type": "integer", + "description": "Número máximo de URLs para análise", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "Inclua todo o conteúdo de texto na resposta", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Tarefa de geração de LLMs.txt iniciada com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID da tarefa de geração do arquivo LLMs.txt" + } + } + } + } + } + }, + "400": { + "description": "Parâmetros de requisição inválidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de geração do arquivo LLMs.txt", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status e os resultados de um job de geração do arquivo LLMs.txt", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "O conteúdo gerado do arquivo LLMs.txt" + }, + "llmsfulltxt": { + "type": "string", + "description": "O conteúdo de texto completo quando showFullText é true" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Quando o conteúdo gerado vai expirar" + } + } + } + } + } + }, + "404": { + "description": "Job de geração de LLMs.txt não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Retorne apenas o conteúdo principal da página, excluindo cabeçalhos, áreas de navegação, rodapés etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags para incluir na saída." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags a serem excluídas da saída." + }, + "maxAge": { + "type": "integer", + "description": "Retorna uma versão em cache da página se ela tiver menos que essa idade, em milissegundos. Se a versão em cache da página for mais antiga que esse valor, a página será raspada novamente. Se você não precisar de dados extremamente atualizados, ativar essa opção pode acelerar suas raspagens em até 500%. O padrão é 0, o que desativa o cache.", + "default": 0 + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados com a requisição. Podem ser usados para enviar cookies, user-agent etc." + }, + "waitFor": { + "type": "integer", + "description": "Defina um atraso, em milissegundos, antes de buscar o conteúdo, permitindo que a página tenha tempo suficiente para carregar.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Defina como true para emular a raspagem de dados a partir de um dispositivo móvel. Útil para testar páginas responsivas e gerar capturas de tela da versão mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorar a verificação do certificado TLS ao fazer requisições", + "default": false + }, + "timeout": { + "type": "integer", + "description": "Tempo limite da requisição em milissegundos", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "Controla como os arquivos PDF são processados durante o scraping. Quando definido como true, o conteúdo do PDF é extraído e convertido para o formato Markdown, com cobrança baseada no número de páginas (1 crédito por página). Quando definido como false, o arquivo PDF é retornado codificado em base64, com uma tarifa fixa de 1 crédito no total.", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "Objeto JSON de opções", + "properties": { + "schema": { + "type": "object", + "description": "O schema a ser usado para extração (opcional). Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "O prompt do sistema a ser usado na extração (opcional)" + }, + "prompt": { + "type": "string", + "description": "O prompt a ser usado para extração sem esquema (opcional)" + } + } + }, + "actions": { + "type": "array", + "description": "Ações a serem realizadas na página antes de extrair o conteúdo", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Aguardar por uma quantidade especificada de milissegundos" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milissegundos a esperar" + }, + "selector": { + "type": "string", + "description": "Seletor de consulta (query selector) para localizar o elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Tire uma captura de tela. Os links estarão no array `actions.screenshots` da resposta." + }, + "fullPage": { + "type": "boolean", + "description": "Define se a captura de tela deve ser da página inteira ou apenas da área visível atual (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "A qualidade da captura de tela, de 1 a 100. 100 é a qualidade máxima." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Clique em um elemento" + }, + "selector": { + "type": "string", + "description": "Seletor para localizar o elemento por", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clica em todos os elementos que correspondem ao seletor, não apenas no primeiro. Não gera erro caso nenhum elemento corresponda ao seletor.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Digite um texto em um campo de entrada, área de texto ou elemento com contenteditable. Observação: primeiro é necessário focar o elemento usando uma ação de “click” antes de escrever. O texto será digitado caractere por caractere para simular a entrada via teclado." + }, + "text": { + "type": "string", + "description": "Texto para digitar", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pressione uma tecla na página. Consulte https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para ver os códigos de teclas.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pressione uma tecla nesta página" + }, + "key": { + "type": "string", + "description": "Tecla a ser pressionada", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Rolar a página ou um elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Direção da rolagem", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Seletor de consulta para o elemento a ser rolado", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrai o conteúdo da página atual e retorna a URL e o HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Executar código JavaScript na página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ser executado", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Gere um PDF da página atual. O PDF será retornado no array `actions.pdfs` da resposta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "O tamanho da página do PDF gerado", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Se o PDF deve ser gerado em orientação horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "O fator de escala do PDF resultante", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configurações de localização para a requisição. Quando especificadas, será usado um proxy apropriado, se disponível, e serão emuladas as configurações correspondentes de idioma e fuso horário. O padrão é \"US\" se não for especificado.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (por exemplo, “US”, “AU”, “DE”, “JP”)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas e localidades preferenciais para a requisição, em ordem de prioridade. Por padrão, usa o idioma do local especificado. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Remove todas as imagens em base64 da saída, que podem ser excessivamente longas. O texto alternativo (alt) da imagem permanece na saída, mas a URL é substituída por um espaço reservado.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita o bloqueio de anúncios e de pop-ups de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica o tipo de proxy a ser usado.\n\n - **basic**: Proxies para scraping de sites sem ou com soluções anti-bot básicas. Rápido e geralmente funciona.\n - **stealth**: Proxies stealth para scraping de sites com soluções anti-bot avançadas. Mais lento, mas mais confiável em alguns sites. Custa até 5 créditos por requisição.\n - **auto**: O Firecrawl tentará fazer o scraping novamente automaticamente usando proxies stealth se o proxy basic falhar. Se a nova tentativa com stealth for bem-sucedida, 5 créditos serão cobrados pelo scraping. Se a primeira tentativa com basic for bem-sucedida, apenas o custo normal será cobrado.\n\nSe você não especificar um proxy, o Firecrawl usará basic por padrão." + }, + "storeInCache": { + "type": "boolean", + "description": "Se definido como true, a página será armazenada no índice e no cache do Firecrawl. Definir isso como false é útil se sua atividade de scraping puder levantar preocupações relacionadas à proteção de dados. O uso de alguns parâmetros associados a scraping sensível (ações, headers) fará com que esse parâmetro seja definido como false.", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "Formatos a serem incluídos no resultado.", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "Opções de rastreio de mudanças (Beta). Aplicável somente quando 'changeTracking' estiver incluído em formatos. O formato 'markdown' também deve ser especificado ao usar o rastreio de mudanças.", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "O modo a ser usado para rastreamento de alterações. 'git-diff' fornece um diff detalhado e 'json' compara os dados JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema JSON para extração ao usar o modo `json`. Define a estrutura dos dados que serão extraídos e comparados. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt a ser usado para rastrear alterações ao usar o modo \"json\". Se não for especificado, será usado o prompt padrão." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag a ser usada no rastreamento de alterações. As tags podem separar o histórico de rastreamento em “ramificações” distintas, em que o rastreamento com uma tag específica só será comparado a scrapes feitos com a mesma tag. Se não for fornecida, a tag padrão (null) será usada." + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página se `html` estiver incluído em `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página se `rawHtml` estiver incluído em `formatos`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `screenshot` estiver incluído em `formatos`. As capturas de tela expiram após 24 horas e depois disso não podem mais ser baixadas." + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links da página se `links` estiver incluído em `formatos`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados das ações especificadas no parâmetro `actions`. Somente presente se o parâmetro `actions` tiver sido fornecido na requisição", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs das capturas de tela, na mesma ordem das ações de captura de tela fornecidas. As capturas de tela expiram após 24 horas e não poderão mais ser baixadas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Raspe o conteúdo na mesma ordem das ações de raspagem fornecidas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores retornados em JavaScript, na mesma ordem das ações executeJavascript fornecidas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDFs gerados, na mesma ordem das ações de PDF especificadas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palavras-chave extraídas da página; podem ser uma string única ou um array de strings" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Idiomas alternativos da página" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Exibido ao usar extração com LLM. Dados extraídos da página de acordo com o esquema definido.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Pode ser exibido ao usar a Extração com LLM. A mensagem de aviso informará sobre quaisquer problemas com a extração." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informações de rastreioDeMudanças se `changeTracking` estiver em `formats`. Só estará presente quando o formato `changeTracking` for solicitado.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "O carimbo de data e hora da raspagem anterior com a qual a página atual está sendo comparada. Nulo se não existir raspagem anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "O resultado da comparação entre as duas versões da página. 'new' significa que esta página não existia antes, 'same' significa que o conteúdo não mudou, 'changed' significa que o conteúdo foi alterado e 'removed' significa que a página foi removida." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "A visibilidade da página/URL atual. “visible” significa que a URL foi descoberta por meio de uma rota orgânica (links ou sitemap); “hidden” significa que a URL foi descoberta a partir da memória de rastreios anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff no estilo Git das alterações ao usar o modo 'git-diff'. Só é exibido quando o modo está definido como 'git-diff'." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados da comparação em JSON ao usar o modo `json`. Somente estará presente quando o modo estiver definido como `json`. Irá gerar uma lista de todas as chaves e seus valores das raspagens `previous` e `current`, com base no tipo definido no `schema`. Exemplo [aqui](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual do rastreamento. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que o rastreamento foi tentado." + }, + "completed": { + "type": "integer", + "description": "Número de páginas rastreadas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "Número de créditos utilizados no rastreamento." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Data e hora em que o rastreamento expira." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para recuperar os próximos 10 MB de dados. Retornada se o crawl não tiver sido concluído ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Dados do rastreamento.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página, quando `includeHtml` for true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, caso `includeRawHtml` seja true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links na página se `includeLinks` for verdadeiro" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `includeScreenshot` for verdadeiro" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página, que pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página, pode ser uma string ou um array de strings" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído da página; pode ser uma string ou um array de strings" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palavras-chave extraídas da página; pode ser uma string ou um array de strings" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Configurações de localidade alternativas para a página" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Outros metadados extraídos do HTML podem ser uma string ou um array de strings" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "A mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Jobs de scraping com falha e detalhes do erro", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Carimbo de data/hora ISO da falha" + }, + "url": { + "type": "string", + "description": "URL rastreada" + }, + "error": { + "type": "string", + "description": "Mensagem de erro" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs em que a raspagem foi tentada, mas que foram bloqueadas pelo robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual da raspagem em lote. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que se tentou fazer scraping." + }, + "completed": { + "type": "integer", + "description": "O número de páginas extraídas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "Quantidade de créditos utilizados na raspagem em lote." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Data e hora em que o scraping em lote irá expirar." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para recuperar os próximos 10 MB de dados. É retornada se a raspagem em lote não estiver concluída ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Dados da raspagem em lote.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página quando `includeHtml` for true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, se `includeRawHtml` for true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links na página quando `includeLinks` for true" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `includeScreenshot` estiver definido como true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página; pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página, que pode ser uma string ou um array de strings" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído da página; pode ser uma string ou um array de strings" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palavras-chave extraídas da página, podendo ser uma string ou um array de strings" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Idiomas alternativos da página" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Outros metadados extraídos do HTML; podem ser uma string ou um array de strings" + }, + "statusCode": { + "type": "integer", + "description": "Código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, será um array vazio. Se ignoreInvalidURLs for false, este campo ficará como undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, será um array vazio. Se ignoreInvalidURLs for false, este campo ficará undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "Status atual do processo de extração" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/pt-BR/api-reference/v2-openapi.json b/pt-BR/api-reference/v2-openapi.json new file mode 100644 index 00000000..9ea72b9c --- /dev/null +++ b/pt-BR/api-reference/v2-openapi.json @@ -0,0 +1,3814 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "API para interagir com os serviços do Firecrawl e executar tarefas de web scraping e crawling.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Fazer scraping de uma única URL e, opcionalmente, extrair informações usando um LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL a ser raspada" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará a retenção zero de dados para este scrape. Para habilitar esse recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Raspe várias URLs e, opcionalmente, extraia informações com um LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "URL a ser raspada" + } + }, + "webhook": { + "type": "object", + "description": "Objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para onde o webhook será enviado. Ele será disparado quando a raspagem em lote for iniciada (batch_scrape.started), a cada página raspada (batch_scrape.page) e quando a raspagem em lote for concluída (batch_scrape.completed ou batch_scrape.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipos de eventos que devem ser enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes simultâneos. Este parâmetro permite definir um limite de concorrência para este scrape em lote. Se não for especificado, o scrape em lote seguirá o limite de concorrência da sua equipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer com que toda a requisição falhe, será criada uma raspagem em lote usando apenas as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará a política de não retenção de dados para esta execução de scraping em lote. Para habilitar esse recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID do job de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenha o status de uma tarefa de raspagem em lote", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar um job de raspagem em lote", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento concluído com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Job de raspagem em lote não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter os erros de uma tarefa de raspagem em lote", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de uma tarefa de rastreamento", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar uma tarefa de rastreamento", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento realizado com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tarefa de rastreamento não encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter erros de um job de rastreamento", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro de servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear várias URLs de acordo com opções", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL base para iniciar o rastreamento" + }, + "prompt": { + "type": "string", + "description": "Um prompt em linguagem natural para gerar as opções do crawler (todos os parâmetros abaixo). Parâmetros definidos explicitamente substituem os equivalentes gerados." + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para o pathname da URL que excluem URLs correspondentes do rastreamento. Por exemplo, se você definir `\"excludePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, quaisquer resultados que correspondam a esse padrão serão excluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para caminhos de URL que definem quais URLs serão incluídas no rastreamento. Somente os caminhos que corresponderem aos padrões especificados serão incluídos na resposta. Por exemplo, se você definir `\"includePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, apenas resultados que correspondam a esse padrão serão incluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidade máxima de crawl com base na ordem de descoberta. O site raiz e as páginas do sitemap têm profundidade de descoberta igual a 0. Por exemplo, se você definir para 1 e usar `sitemap: 'skip'`, você só fará o crawl da URL fornecida e de todas as URLs que tiverem links nessa página." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Modo de sitemap ao rastrear. Se você definir como `skip`, o rastreador vai ignorar o sitemap do site e rastrear apenas a URL informada, descobrindo as páginas a partir dela.", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Não faça scraping novamente do mesmo caminho com parâmetros de consulta diferentes (ou sem parâmetros)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a rastrear. O limite padrão é 10.000.", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que o crawler siga links internos para URLs no mesmo nível (irmãs) ou em níveis superiores (pai), não apenas subcaminhos (filhos).\n\nfalse: Só rastreia URLs em níveis inferiores (filhas).\n→ ex.: /features/feature-1 → /features/feature-1/tips ✅\n→ Não seguirá /pricing ou / ❌\n\ntrue: Rastreia quaisquer links internos, incluindo URLs irmãs e pai.\n→ ex.: /features/feature-1 → /pricing, /, etc. ✅\n\nUse true para uma cobertura interna mais ampla, além dos caminhos aninhados.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que o rastreador siga links para sites externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que o rastreador siga links para subdomínios do domínio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalo, em segundos, entre as raspagens. Isso ajuda a respeitar os limites de acesso dos sites." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de raspagens concorrentes. Este parâmetro permite definir um limite de concorrência para este rastreamento. Se não for especificado, o rastreamento seguirá o limite de concorrência da sua equipe." + }, + "webhook": { + "type": "object", + "description": "Objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para a qual o webhook será enviado. Ele será disparado quando o rastreamento for iniciado (crawl.started), para cada página rastreada (crawl.page) e quando o rastreamento for concluído (crawl.completed ou crawl.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos que devem ser enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipos de eventos a serem enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso garantirá que nenhum dado seja retido para este crawl. Para ativar esse recurso, entre em contato com help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/params-preview": { + "post": { + "summary": "Pré-visualizar parâmetros de rastreamento gerados a partir de um prompt em linguagem natural", + "operationId": "crawlParamsPreview", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL a ser rastreada" + }, + "prompt": { + "type": "string", + "maxLength": 10000, + "description": "Prompt em linguagem natural que descreve o que você deseja rastrear" + } + }, + "required": [ + "url", + "prompt" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida com parâmetros de rastreamento gerados", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL que será rastreada" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de URL a serem incluídos" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de URL a serem excluídos" + }, + "maxDepth": { + "type": "integer", + "description": "Profundidade máxima de rastreamento" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidade máxima de descoberta" + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Se deve rastrear todo o domínio" + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Define se links externos serão permitidos" + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permitir subdomínios" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Estratégia de tratamento de sitemaps" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Indica se os parâmetros de consulta devem ser ignorados" + }, + "deduplicateSimilarURLs": { + "type": "boolean", + "description": "Se URLs semelhantes devem ser deduplicadas" + }, + "delay": { + "type": "number", + "description": "Intervalo entre requisições em milissegundos" + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas para rastrear" + } + } + } + } + } + } + } + }, + "400": { + "description": "Solicitação inválida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid request parameters" + } + } + } + } + } + }, + "401": { + "description": "Não autorizado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Unauthorized" + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Failed to process natural language prompt" + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear várias URLs com base em opções", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL base de onde o rastreamento será iniciado" + }, + "search": { + "type": "string", + "description": "Especifique uma consulta de pesquisa para ordenar os resultados por relevância. Exemplo: \"blog\" retornará URLs que contenham a palavra \"blog\" na URL, ordenadas por relevância." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "Modo de uso do sitemap durante o mapeamento. Se você definir como `skip`, o sitemap não será usado para encontrar URLs. Se você definir como `only`, apenas URLs que estiverem no sitemap serão retornadas. Por padrão (`include`), o sitemap e outros métodos serão usados em conjunto para encontrar URLs.", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdomínios do site", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Não retorne URLs com parâmetros de query", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de links retornados", + "default": 5000, + "maximum": 100000 + }, + "timeout": { + "type": "integer", + "description": "Tempo limite, em milissegundos. Não há tempo limite definido por padrão." + }, + "location": { + "type": "object", + "description": "Configurações de localização para a requisição. Quando especificadas, será usado um proxy apropriado, se disponível, e serão emulados o idioma e o fuso horário correspondentes. O padrão é 'US' caso não seja especificado.", + "properties": { + "country": { + "type": "string", + "description": "Código de país alfa-2 da ISO 3166-1 (por exemplo, 'US', 'AU', 'DE', 'JP')", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas e localidades preferenciais da requisição, em ordem de prioridade. Por padrão, usa o idioma da localidade especificada. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraia dados estruturados de páginas da web usando LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "As URLs das quais os dados serão extraídos. As URLs devem estar no formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt para guiar o processo de extração" + }, + "schema": { + "type": "object", + "description": "Esquema que define a estrutura dos dados extraídos. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Quando definido como true, a extração usará busca na web para encontrar dados adicionais", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Quando definido como `true`, arquivos sitemap.xml serão ignorados durante a varredura do site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Quando definido como true, os subdomínios das URLs fornecidas também serão rastreados", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Quando definido como true, as fontes usadas para extrair os dados serão incluídas na resposta sob a chave `sources`", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer com que a requisição inteira falhe, será feita uma extração usando as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extração bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitação inválida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de extração", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de uma tarefa de extração", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta de sucesso", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Recuperar todos os crawls ativos da equipe autenticada", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Identificador único do rastreamento" + }, + "teamId": { + "type": "string", + "description": "O ID da equipe proprietária do rastreamento" + }, + "url": { + "type": "string", + "format": "uri", + "description": "URL de origem do rastreamento" + }, + "options": { + "type": "object", + "description": "Opções do rastreador utilizadas neste rastreamento", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obter créditos restantes da equipe autenticada", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "Número de créditos restantes da equipe", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "Número de créditos do plano. Isso não inclui créditos de cupons, pacotes de crédito ou créditos de recarga automática.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de cobrança. null se você estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações sobre o uso de créditos não encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtém o histórico de uso de créditos da equipe autenticada", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obter histórico de uso de créditos por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de cobrança", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API usada durante o período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos utilizados no período de faturamento", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obter tokens restantes da equipe autenticada (apenas Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "Número de tokens restantes da equipe", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "Quantidade de tokens do plano. Não inclui tokens de cupom.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento. null se você estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de cobrança. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações sobre o uso de tokens não encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obter o uso histórico de tokens da equipe autenticada (somente Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtenha o histórico de uso de tokens por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API usada no período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados no período de cobrança", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "Métricas da fila de raspagem da sua equipe", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "Número de tarefas atualmente na sua fila" + }, + "activeJobsInQueue": { + "type": "number", + "description": "Número de tarefas ativas no momento" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "Número de tarefas atualmente na fila" + }, + "maxConcurrency": { + "type": "number", + "description": "Número máximo de tarefas ativas simultâneas conforme seu plano" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "Timestamp do job mais recente concluído com sucesso", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Pesquise e, opcionalmente, faça scraping dos resultados de busca", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "A consulta de busca" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados a retornar", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Parâmetro de pesquisa temporal. Suporta intervalos de tempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de datas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parâmetro de localização para resultados de pesquisa" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Fontes a serem pesquisadas. Determinam os arrays disponíveis na resposta.", + "default": [ + "web" + ] + }, + "categories": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "GitHub", + "properties": { + "type": { + "type": "string", + "enum": [ + "github" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Research", + "properties": { + "type": { + "type": "string", + "enum": [ + "research" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Categorias para filtrar resultados" + }, + "tbs": { + "type": "string", + "description": "Parâmetro de pesquisa temporal. Suporta intervalos de tempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de datas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Parâmetro de localização para resultados de busca (por exemplo, `San Francisco,California,United States`). Para melhores resultados, defina tanto este quanto o parâmetro `country`." + }, + "country": { + "type": "string", + "description": "Código de país ISO para segmentação geográfica dos resultados de pesquisa (por exemplo, `US`). Para obter melhores resultados, configure este parâmetro e também o parâmetro `location`.", + "default": "US" + }, + "timeout": { + "type": "integer", + "description": "Tempo limite em milissegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclui dos resultados de pesquisa as URLs que são inválidas para outros endpoints do Firecrawl. Isso ajuda a reduzir erros se você estiver direcionando dados da pesquisa para outros endpoints da API do Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "Opções para raspagem de resultados de busca", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do resultado da pesquisa" + }, + "description": { + "type": "string", + "description": "Descrição do resultado da pesquisa" + }, + "url": { + "type": "string", + "description": "URL do resultado de busca" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Conteúdo em Markdown caso a raspagem tenha sido solicitada" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML, se solicitado nos formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto, se solicitado em formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Links encontrados, se solicitado nos formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL da captura de tela, se solicitada em formatos. As capturas de tela expiram após 24 horas e não podem mais ser baixadas." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do resultado da pesquisa" + }, + "imageUrl": { + "type": "string", + "description": "URL da imagem" + }, + "imageWidth": { + "type": "integer", + "description": "Largura da imagem" + }, + "imageHeight": { + "type": "integer", + "description": "Altura da imagem" + }, + "url": { + "type": "string", + "description": "URL do resultado da pesquisa" + }, + "position": { + "type": "integer", + "description": "Posição do resultado de pesquisa" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do artigo" + }, + "snippet": { + "type": "string", + "description": "Trecho do artigo" + }, + "url": { + "type": "string", + "description": "URL do artigo" + }, + "date": { + "type": "string", + "description": "Data do artigo" + }, + "imageUrl": { + "type": "string", + "description": "URL da imagem do artigo" + }, + "position": { + "type": "integer", + "description": "Posição do artigo" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Conteúdo em Markdown, caso a raspagem tenha sido solicitada" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML se solicitado nos formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto, caso seja solicitado em formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Links encontrados, se solicitados, nos formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL da captura de tela, se solicitado nos formatos. As capturas de tela expiram após 24 horas e não podem mais ser baixadas." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "Os resultados da pesquisa. Os arrays disponíveis dependerão das fontes que você especificar na requisição. Por padrão, o array `web` será retornado." + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensagem de aviso caso ocorra algum problema" + } + } + } + } + } + }, + "408": { + "description": "Tempo limite da requisição esgotado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "Define se a captura de tela deve ser da página inteira ou apenas do viewport atual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "Qualidade da captura de tela, de 1 a 100. 100 é a qualidade máxima." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "Largura da viewport em pixels" + }, + "height": { + "type": "integer", + "description": "Altura da viewport em pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "O esquema a ser usado para a saída em JSON. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "O prompt a ser usado para gerar a saída em JSON" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "O modo a ser usado para rastrear alterações. 'git-diff' fornece um diff detalhado e 'json' compara os dados JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema para extração de JSON ao usar o modo `json`. Define a estrutura dos dados a serem extraídos e comparados. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt a ser usado para rastreamento de alterações ao usar o modo \"json\". Caso não seja fornecido, será usado o prompt padrão." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag a ser usada para rastreamento de alterações. Tags podem separar o histórico de rastreamento de alterações em “branches” (ramificações) distintas, em que o rastreamento com uma tag específica só vai comparar com coletas feitas na mesma tag. Se não for fornecida, será usada a tag padrão (null)." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Branding", + "properties": { + "type": { + "type": "string", + "enum": [ + "branding" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Formatos de saída que devem ser incluídos na resposta. Você pode especificar um ou mais formatos, como strings (por exemplo, `'markdown'`) ou como objetos com opções adicionais (por exemplo, `{ type: 'json', schema: {...} }`). Alguns formatos exigem que opções específicas sejam configuradas. Exemplo: `['markdown', { type: 'json', schema: {...} }]`.", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Retorne somente o conteúdo principal da página, excluindo cabeçalhos, elementos de navegação, rodapés etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags a serem incluídas no resultado." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags a serem excluídas da saída." + }, + "maxAge": { + "type": "integer", + "description": "Retorna uma versão em cache da página se ela for mais recente do que essa idade em milissegundos. Se a versão em cache da página for mais antiga do que esse valor, a página será novamente coletada. Se você não precisa de dados extremamente atualizados, ativar isso pode acelerar suas coletas em até 500%. O padrão é 2 dias.", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados na requisição. Podem ser usados para enviar cookies, user-agent etc." + }, + "waitFor": { + "type": "integer", + "description": "Defina um atraso, em milissegundos, antes de buscar o conteúdo, permitindo que a página tenha tempo suficiente para carregar. Esse tempo de espera é somado ao recurso de espera inteligente do Firecrawl.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Defina como true se quiser emular a extração a partir de um dispositivo móvel. Útil para testar páginas responsivas e capturar screenshots da versão mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorar a verificação do certificado TLS ao fazer requisições", + "default": true + }, + "timeout": { + "type": "integer", + "description": "Tempo limite da requisição, em milissegundos." + }, + "parsers": { + "type": "array", + "description": "Controla como os arquivos são processados durante o scraping. Quando \"pdf\" está incluído (padrão), o conteúdo do PDF é extraído e convertido para o formato Markdown, com cobrança baseada no número de páginas (1 crédito por página). Quando um array vazio é passado, o arquivo PDF é retornado em codificação base64, com cobrança em valor fixo de 1 crédito no total.", + "items": { + "oneOf": [ + { + "type": "string", + "enum": [ + "pdf" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "maxPages": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "description": "Número máximo de páginas do PDF a serem processadas. Deve ser um inteiro positivo de até 10.000." + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "Ações a serem executadas na página antes de extrair o conteúdo", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Aguarde por um número específico de milissegundos" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milissegundos de espera" + }, + "selector": { + "type": "string", + "description": "Seletor para encontrar o elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Faça uma captura de tela. Os links estarão no array `actions.screenshots` da resposta." + }, + "fullPage": { + "type": "boolean", + "description": "Define se a captura de tela será da página inteira ou apenas da área visível (viewport) atual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "A qualidade da captura de tela, de 1 a 100, onde 100 é a mais alta qualidade." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "Largura da viewport em pixels" + }, + "height": { + "type": "integer", + "description": "A altura da viewport, em pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Clique em um elemento" + }, + "selector": { + "type": "string", + "description": "Seletor para encontrar o elemento por", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clica em todos os elementos que correspondem ao seletor, não apenas no primeiro. Não lança um erro se nenhum elemento corresponder ao seletor.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Digite o texto em um campo de entrada, área de texto ou elemento com conteúdo editável. Observação: primeiro é preciso colocar o foco no elemento usando uma ação de “clique” antes de escrever. O texto será digitado caractere por caractere para simular a entrada pelo teclado." + }, + "text": { + "type": "string", + "description": "Texto a ser digitado", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pressione qualquer tecla na página. Consulte https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para ver os códigos de tecla.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pressione qualquer tecla na página" + }, + "key": { + "type": "string", + "description": "Tecla para pressionar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Rolar a página ou um elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sentido da rolagem", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Seletor (query selector) do elemento a ser rolado", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Raspa o conteúdo da página atual e retorna a URL e o HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Executar código JavaScript na página" + }, + "script": { + "type": "string", + "description": "Código JavaScript para executar", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Gerar um PDF da página atual. O PDF será retornado no array `actions.pdfs` da resposta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "O tamanho da página do PDF gerado", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Se o PDF deve ser gerado em orientação horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "O fator de escala do PDF gerado", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configurações de localização da requisição. Quando definidas, será usado um proxy apropriado, se disponível, e serão emuladas as configurações correspondentes de idioma e fuso horário. O padrão é \"US\" se não for especificado.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alpha-2 (por exemplo, \"US\", \"AU\", \"DE\", \"JP\")", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas e localidades preferidos para a requisição, em ordem de prioridade. Por padrão, usa o idioma da localização especificada. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Remove todas as imagens em base64 da saída, que podem ser extremamente longas. O texto alternativo da imagem é mantido na saída, mas a URL é substituída por um valor de placeholder.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita o bloqueio de anúncios e de pop-ups de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica o tipo de proxy a ser usado.\n\n - **basic**: Proxies para scraping de sites sem proteção anti-bot ou com soluções anti-bot básicas. Rápido e geralmente funciona.\n - **stealth**: Proxies stealth para scraping de sites com soluções anti-bot avançadas. Mais lento, mas mais confiável em determinados sites. Custa até 5 créditos por requisição.\n - **auto**: O Firecrawl tentará automaticamente refazer o scraping com proxies stealth se o proxy básico falhar. Se a nova tentativa com stealth for bem-sucedida, 5 créditos serão cobrados pelo scraping. Se a primeira tentativa com basic for bem-sucedida, apenas o custo normal será cobrado.\n\nSe você não especificar um proxy, o Firecrawl usará o modo auto por padrão.", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "Se verdadeiro, a página será armazenada no índice e no cache do Firecrawl. Definir isso como falso é útil se sua atividade de scraping puder envolver questões de proteção de dados. O uso de alguns parâmetros associados a scraping sensível (ações, headers) forçará este parâmetro a ser falso.", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "Resumo da página se `summary` constar em `formats`" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão HTML do conteúdo da página, se `html` estiver em `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página se `rawHtml` estiver incluído em `formats`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `screenshot` estiver incluído em `formats`. As capturas de tela expiram após 24 horas e não poderão mais ser baixadas." + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links da página se `links` estiver em `formatos`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados das ações especificadas no parâmetro `actions`. Só estará presente se o parâmetro `actions` tiver sido fornecido na requisição", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs das capturas de tela, na mesma ordem das ações de captura de tela fornecidas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extraia o conteúdo na mesma ordem das ações de scraping fornecidas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores de retorno em JavaScript, na mesma ordem das ações executeJavascript fornecidas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDFs gerados, na mesma ordem das ações de PDF especificadas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página; pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página, que pode ser uma string ou um array de strings" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma detectado na página; pode ser uma string ou um array de strings" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palavras-chave extraídas da página; pode ser uma string ou um array de strings" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Localidades alternativas para a página" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Outros metadados extraídos do HTML. Pode ser uma string ou um array de strings" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Pode ser exibida ao usar Extração com LLM. A mensagem de alerta informará sobre quaisquer problemas na extração." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informações de rastreamento de alterações se `changeTracking` estiver em `formats`. Somente presente quando o formato `changeTracking` for solicitado.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "O timestamp da raspagem anterior em relação à qual a página atual está sendo comparada. Nulo se não houver raspagem anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "O resultado da comparação entre as duas versões da página: 'new' indica que esta página não existia antes, 'same' indica que o conteúdo não mudou, 'changed' indica que o conteúdo foi alterado e 'removed' indica que a página foi removida." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "A visibilidade da página/URL atual. \"visible\" significa que a URL foi descoberta por meio de uma rota orgânica (links ou sitemap); \"hidden\" significa que a URL foi descoberta a partir da memória de rastreamentos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff das alterações no estilo do Git ao usar o modo `git-diff`. Só é retornado quando o modo está definido como `git-diff`." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados da comparação em JSON ao usar o modo `json`. Disponível apenas quando o modo está definido como `json`. Isso gera uma lista de todas as chaves e seus valores das coletas `previous` e `current`, com base no tipo definido no `schema`. Exemplo [aqui](/features/change-tracking)" + } + } + }, + "branding": { + "type": "object", + "nullable": true, + "description": "Informações de branding extraídas da página quando `branding` estiver em `formatos`. Inclui cores, fontes, tipografia, espaçamento, componentes e muito mais." + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual do rastreamento. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas cuja varredura foi tentada." + }, + "completed": { + "type": "integer", + "description": "O número de páginas que foram rastreadas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "O número de créditos utilizados no rastreamento." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Data e hora em que o rastreamento expirará." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL usada para recuperar os próximos 10 MB de dados. Retornada se o processo de crawl não estiver concluído ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Os dados do rastreamento.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página, caso `includeHtml` seja true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, se `includeRawHtml` for true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links na página, se `includeLinks` for true" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `includeScreenshot` estiver definido como true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página; pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página; pode ser uma string ou um array de strings" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído da página, pode ser uma string ou um array de strings" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palavras-chave extraídas da página, podem ser uma string ou um array de strings" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Idiomas alternativos para a página" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Jobs de scraping com falha e detalhes do erro", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Carimbo de data/hora ISO da falha" + }, + "url": { + "type": "string", + "description": "URL coletada" + }, + "error": { + "type": "string", + "description": "Mensagem de erro" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs cuja raspagem foi tentada, mas bloqueada pelo robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual da raspagem em lote. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que se tentou realizar o scraping." + }, + "completed": { + "type": "integer", + "description": "O número de páginas extraídas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "O número de créditos utilizados para a raspagem em lote." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "A data e a hora em que a raspagem em lote expira." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para recuperar os próximos 10 MB de dados. Retornada se a raspagem em lote não estiver concluída ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Os dados da coleta em lote.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página, caso `includeHtml` seja verdadeiro" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, caso `includeRawHtml` seja true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links na página se `includeLinks` for verdadeiro" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `includeScreenshot` estiver definido como `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Título extraído da página, que pode ser uma string ou um array de strings" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Descrição extraída da página, pode ser uma string ou um array de strings" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "Idioma extraído da página, pode ser uma string ou um array de strings" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Palavras-chave extraídas da página; pode ser uma string ou um array de strings" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Idiomas alternativos da página" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "A mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array com as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, será um array vazio. Se ignoreInvalidURLs for false, este campo permanecerá undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string", + "description": "O título da página, se disponível." + }, + "description": { + "type": "string", + "description": "Descrição da página, se disponível." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, será um array vazio. Se ignoreInvalidURLs for false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "Status atual do job de extração" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "O número de tokens utilizados pela tarefa de extração. Disponível apenas se a tarefa tiver sido concluída." + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/pt-BR/contributing/guide.mdx b/pt-BR/contributing/guide.mdx index e43345be..943e2a26 100644 --- a/pt-BR/contributing/guide.mdx +++ b/pt-BR/contributing/guide.mdx @@ -77,7 +77,6 @@ POSTHOG_HOST= # defina se quiser enviar eventos do PostHog, como logs de jobs ``` -
### Instalando dependências
@@ -89,7 +88,6 @@ Primeiro, instale as dependências usando pnpm. pnpm install # certifique-se de estar usando o pnpm na versão 9+! ``` -
### Executando o projeto
@@ -106,7 +104,6 @@ Execute o comando em qualquer lugar no seu projeto redis-server ``` -
### Terminal 2 - configurando o serviço
@@ -120,7 +117,6 @@ pnpm start Isso iniciará os workers responsáveis por processar tarefas de crawl. -
### Terminal 3 - enviando nossa primeira requisição.
@@ -143,7 +139,6 @@ curl -X POST http://localhost:3002/v1/crawl \ }' ``` -
### Alternativa: Usar Docker Compose
@@ -160,7 +155,6 @@ docker compose up Isso vai iniciar o Redis, o servidor de API e os workers automaticamente com a configuração correta. -
## Testes:
diff --git a/pt-BR/contributing/self-host.mdx b/pt-BR/contributing/self-host.mdx index 71a7d1a7..96542180 100644 --- a/pt-BR/contributing/self-host.mdx +++ b/pt-BR/contributing/self-host.mdx @@ -173,7 +173,6 @@ Isso iniciará uma instância local do Firecrawl, acessível em `http://localhos Você deve conseguir ver a interface do Bull Queue Manager em `http://localhost:3002/admin/@/queues`. - 5. *(Opcional)* Teste a API Se quiser testar o endpoint de crawl, execute: @@ -186,7 +185,6 @@ Se quiser testar o endpoint de crawl, execute: }' ``` -
## Solução de problemas
@@ -207,7 +205,6 @@ Esta seção apresenta soluções para problemas comuns que você pode encontrar **Explicação:** Esse erro ocorre porque a configuração do cliente do Supabase não foi concluída. Você deve conseguir executar scraping e crawling sem problemas. No momento, não é possível configurar o Supabase em instâncias auto-hospedadas. -
### Você está ignorando a autenticação
@@ -221,7 +218,6 @@ Esse erro ocorre porque a configuração do cliente do Supabase não foi conclu **Explicação:** Esse erro ocorre porque a configuração do cliente do Supabase não foi concluída. Você deve conseguir fazer scraping e crawling sem problemas. No momento, não é possível configurar o Supabase em instâncias autohospedadas. -
### Contêineres Docker não iniciam
@@ -239,7 +235,6 @@ docker logs [nome_do_container] * Certifique-se de que todas as variáveis de ambiente necessárias estejam definidas corretamente no arquivo .env. * Verifique se todos os serviços do Docker definidos em docker-compose.yml estão configurados corretamente e se as imagens necessárias estão disponíveis. -
### Problemas de conexão com o Redis
diff --git a/pt-BR/developer-guides/advanced-guides/authenticated-scraping.mdx b/pt-BR/developer-guides/advanced-guides/authenticated-scraping.mdx index bbdd2c92..1426c769 100644 --- a/pt-BR/developer-guides/advanced-guides/authenticated-scraping.mdx +++ b/pt-BR/developer-guides/advanced-guides/authenticated-scraping.mdx @@ -108,7 +108,6 @@ auth-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJleGFtcGxlLXVzZXIt **Importante:** Cookies são credenciais sensíveis. Nunca as compartilhe publicamente nem as versione em controle de código. Trate-os como senhas. -
### Passo 2: Use cookies com o Firecrawl
@@ -131,7 +130,6 @@ const result = await app.scrape("https://firecrawl-auth.vercel.app/dashboard", { console.log("=== Markdown ===\n" + result.markdown + "\n\n=== Screenshot URL ===\n" + result.screenshot); ``` -
## Melhores práticas
diff --git a/pt-BR/developer-guides/common-sites/amazon.mdx b/pt-BR/developer-guides/common-sites/amazon.mdx index 17f5c6cc..cb48c0bd 100644 --- a/pt-BR/developer-guides/common-sites/amazon.mdx +++ b/pt-BR/developer-guides/common-sites/amazon.mdx @@ -15,7 +15,6 @@ A Amazon é um dos sites de e-commerce mais alvo de scraping. Este guia mostra c npm install @mendable/firecrawl-js zod ``` -
## Visão geral
@@ -64,7 +63,6 @@ console.log('✅ Dados do produto validados:'); console.log(validated); ``` - @@ -87,7 +85,6 @@ const searchResult = await firecrawl.search('gaming laptop site:amazon.com', { console.log(searchResult); ``` -
## Scrape
@@ -107,7 +104,6 @@ const result = await firecrawl.scrape('https://www.amazon.com/ASUS-ROG-Strix-Gam console.log(result); ``` -
## Map
@@ -125,7 +121,6 @@ console.log(mapResult.links); // Retorna um array de URLs sem conteúdo ``` -
## Crawl
@@ -147,7 +142,6 @@ const crawlResult = await firecrawl.crawl('https://www.amazon.com/s?k=mechanical console.log(crawlResult.data); ``` -
## Coleta em lote
diff --git a/pt-BR/developer-guides/common-sites/etsy.mdx b/pt-BR/developer-guides/common-sites/etsy.mdx index 3a7cb07e..6b9a1ba1 100644 --- a/pt-BR/developer-guides/common-sites/etsy.mdx +++ b/pt-BR/developer-guides/common-sites/etsy.mdx @@ -15,7 +15,6 @@ O Etsy é um marketplace global de itens únicos e criativos. Este guia mostra c npm install @mendable/firecrawl-js zod ``` -
## Visão geral
@@ -63,7 +62,6 @@ console.log('✅ Dados da listagem validados:'); console.log(validated); ``` - @@ -86,7 +84,6 @@ const searchResult = await firecrawl.search('handmade jewelry site:etsy.com', { console.log(searchResult); ``` -
## Scrape
@@ -106,7 +103,6 @@ const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/h console.log(result); ``` -
## Mapear
@@ -124,7 +120,6 @@ console.log(mapResult.links); // Retorna um array de URLs sem conteúdo ``` -
## Crawl
@@ -146,7 +141,6 @@ const crawlResult = await firecrawl.crawl('https://www.etsy.com/c/jewelry', { console.log(crawlResult.data); ``` -
## Coleta em lote
diff --git a/pt-BR/developer-guides/common-sites/github.mdx b/pt-BR/developer-guides/common-sites/github.mdx index d4d83b61..4ad11974 100644 --- a/pt-BR/developer-guides/common-sites/github.mdx +++ b/pt-BR/developer-guides/common-sites/github.mdx @@ -13,7 +13,6 @@ Aprenda a usar os recursos principais do Firecrawl para scrapear repositórios, npm install @mendable/firecrawl-js zod ``` -
## Scrape com modo JSON
@@ -43,7 +42,6 @@ const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', console.log(result.json); ``` - @@ -66,7 +64,6 @@ const searchResult = await firecrawl.search('machine learning site:github.com', console.log(searchResult); ``` -
## Scrape
@@ -85,7 +82,6 @@ const result = await firecrawl.scrape('https://github.com/mendableai/firecrawl', console.log(result); ``` -
## Map
@@ -103,7 +99,6 @@ console.log(mapResult.links); // Retorna um array de URLs sem conteúdo ``` -
## Crawl
@@ -125,7 +120,6 @@ const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wik console.log(crawlResult.data); ``` -
## Coleta em lote
@@ -157,7 +151,6 @@ console.log(job.status, job.completed, job.total); console.log(job); ``` -
## Raspagem em lote com modo JSON
diff --git a/pt-BR/developer-guides/common-sites/wikipedia.mdx b/pt-BR/developer-guides/common-sites/wikipedia.mdx index 6fb0ae02..8bafacdf 100644 --- a/pt-BR/developer-guides/common-sites/wikipedia.mdx +++ b/pt-BR/developer-guides/common-sites/wikipedia.mdx @@ -13,7 +13,6 @@ Aprenda a raspar a Wikipédia de forma eficaz para pesquisa, extração de conhe npm install @mendable/firecrawl-js zod ``` -
## Casos de uso
@@ -52,7 +51,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/JavaScript' console.log(result.json); ``` - @@ -75,7 +73,6 @@ const searchResult = await firecrawl.search('quantum computing site:en.wikipedia console.log(searchResult); ``` -
## Scrape
@@ -95,7 +92,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/Artificial_ console.log(result); ``` -
## Map
@@ -113,7 +109,6 @@ console.log(mapResult.links); // Retorna um array de URLs sem conteúdo ``` -
## Rastrear
@@ -135,7 +130,6 @@ const crawlResult = await firecrawl.crawl('https://en.wikipedia.org/wiki/Portal: console.log(crawlResult.data); ``` -
## Coleta em lote
diff --git a/pt-BR/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx b/pt-BR/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx index be0f7cea..3eab8fd9 100644 --- a/pt-BR/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx +++ b/pt-BR/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx @@ -741,7 +741,6 @@ const result = streamText({ O SDK de IA oferece suporte a mais de 20 provedores com a mesma API. Saiba mais: [ai-sdk.dev/docs/foundations/providers-and-models](https://ai-sdk.dev/docs/foundations/providers-and-models). -
### Personalize a interface
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/anthropic.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/anthropic.mdx index 665c4ba6..f0dda95e 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/anthropic.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/anthropic.mdx @@ -22,7 +22,6 @@ ANTHROPIC_API_KEY=sua_chave_anthropic > **Nota:** Se estiver usando Node < 20, instale `dotenv` e adicione `import 'dotenv/config'` ao seu código. -
## Extração + Resumo
@@ -53,7 +52,6 @@ const message = await anthropic.messages.create({ console.log('Resposta:', message); ``` -
## Uso de ferramentas
@@ -108,7 +106,6 @@ if (toolUse && toolUse.type === 'tool_use') { } ``` -
## Extração Estruturada
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/gemini.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/gemini.mdx index 29ab2c41..2148ce9f 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/gemini.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/gemini.mdx @@ -22,7 +22,6 @@ GEMINI_API_KEY=sua_chave_gemini > **Observação:** Se estiver usando Node < 20, instale `dotenv` e adicione `import 'dotenv/config'` ao seu código. -
## Extrair + Resumir
@@ -50,7 +49,6 @@ const response = await ai.models.generateContent({ console.log('Resumo:', response.text); ``` -
## Análise de conteúdo
@@ -87,7 +85,6 @@ const result2 = await chat.sendMessage({ console.log('4ª e 5ª Notícias:', result2.text); ``` -
## Extração estruturada
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/google-adk.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/google-adk.mdx index b83f923b..19449868 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/google-adk.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/google-adk.mdx @@ -174,7 +174,6 @@ response = research_agent.run("Quais são os recursos mais recentes do Python 3. print(response) ``` -
## Melhores práticas
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/langchain.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/langchain.mdx index 146b85bb..30a39196 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/langchain.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/langchain.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=sua_chave_openai > **Observação:** Se estiver usando Node < 20, instale `dotenv` e adicione `import 'dotenv/config'` ao seu código. -
## Scrape + Chat
@@ -53,7 +52,6 @@ const response = await chat.invoke([ console.log('Resumo:', response.content); ``` -
## Cadeias
@@ -94,7 +92,6 @@ const result = await chain.invoke({ console.log('Resultado da cadeia:', result); ``` -
## Chamada de ferramentas
@@ -137,7 +134,6 @@ console.log('Resposta:', response.content); console.log('Chamadas de ferramenta:', response.tool_calls); ``` -
## Extração de Dados Estruturados
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/langgraph.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/langgraph.mdx index 8567bec8..ddd73d39 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/langgraph.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/langgraph.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=sua_chave_openai > **Observação:** Se estiver usando Node < 20, instale o `dotenv` e adicione `import 'dotenv/config'` ao seu código. -
## Fluxo básico
@@ -81,7 +80,6 @@ const result = await app.invoke({ console.log(JSON.stringify(result, null, 2)); ``` -
## Fluxo em várias etapas
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx index 3b38eb30..99942f9b 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=sua_chave_openai > **Observação:** Se estiver usando Node < 20, instale `dotenv` e adicione `import 'dotenv/config'` ao seu código. - diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/mastra.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/mastra.mdx index 234addd3..2f37e865 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/mastra.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/mastra.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=sua_chave_openai > **Observação:** Se estiver usando Node < 20, instale `dotenv` e adicione `import 'dotenv/config'` ao seu código. -
## Fluxo em várias etapas
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/openai.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/openai.mdx index c5d56b43..549bce06 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/openai.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/openai.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=sua_chave_openai > **Nota:** Se estiver usando Node < 20, instale `dotenv` e adicione `import 'dotenv/config'` ao seu código. -
## Captura + Resumo
@@ -54,7 +53,6 @@ const completion = await openai.chat.completions.create({ console.log('Resumo:', completion.choices[0]?.message.content); ``` -
## Chamada de função
@@ -130,7 +128,6 @@ if (message?.tool_calls && message.tool_calls.length > 0) { } ``` -
## Extração de Dados Estruturados
@@ -185,7 +182,6 @@ const companyInfo = content ? CompanyInfoSchema.parse(JSON.parse(content)) : nul console.log('Informações da empresa validadas:', companyInfo); ``` -
## Busca + Análise
@@ -220,7 +216,6 @@ const analysis = await openai.chat.completions.create({ console.log('Análise:', analysis.choices[0]?.message?.content); ``` -
## API de Responses com MCP
diff --git a/pt-BR/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx b/pt-BR/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx index dd65907f..d4c8f272 100644 --- a/pt-BR/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx +++ b/pt-BR/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx @@ -24,7 +24,6 @@ OPENAI_API_KEY=sk-your-key Estes exemplos usam OpenAI, mas as ferramentas do Firecrawl funcionam com qualquer provedor do Vercel AI SDK, incluindo Anthropic, Google, Mistral e mais. Confira a lista completa de [provedores compatíveis](https://ai-sdk.dev/providers/ai-sdk-providers). -
## Início rápido
@@ -41,7 +40,6 @@ const { text } = await generateText({ }); ``` -
## Ferramentas disponíveis
@@ -60,7 +58,6 @@ import { } from 'firecrawl-aisdk'; ``` -
## Exemplos
@@ -83,7 +80,6 @@ const { text } = await generateText({ console.log(text); ``` - @@ -102,7 +98,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Mapeamento
@@ -121,7 +116,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Crawl
@@ -142,7 +136,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Raspagem em lote
@@ -163,7 +156,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Extract
@@ -184,7 +176,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Busca + Raspagem
@@ -203,7 +194,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Stream
diff --git a/pt-BR/developer-guides/mcp-setup-guides/chatgpt.mdx b/pt-BR/developer-guides/mcp-setup-guides/chatgpt.mdx new file mode 100644 index 00000000..b9f37ab5 --- /dev/null +++ b/pt-BR/developer-guides/mcp-setup-guides/chatgpt.mdx @@ -0,0 +1,124 @@ +--- +title: "Pesquisa e scraping na Web com MCP no ChatGPT" +description: "Adicione scraping e busca na web ao ChatGPT em 2 minutos" +--- + + +O suporte a MCP no ChatGPT é atualmente um recurso em beta. A interface e a disponibilidade podem mudar conforme a OpenAI continua o desenvolvimento. + + + +**Disponibilidade:** O modo Desenvolvedor com conectores MCP não está disponível no plano gratuito (Free) e requer uma assinatura paga do ChatGPT. A disponibilidade e os recursos variam conforme o plano e a região. Consulte a [documentação da OpenAI sobre o Developer Mode](https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta) para instruções atualizadas de disponibilidade e configuração. + + +Adicione recursos de scraping e busca na web ao ChatGPT com o Firecrawl MCP. + +
+ ## Configuração rápida +
+ +
+ ### 1. Obtenha sua chave de API +
+ +Crie uma conta em [firecrawl.dev/app/api-keys](https://www.firecrawl.dev/app/api-keys) e copie sua chave de API. + +
+ ### 2. Ative o Modo Desenvolvedor +
+ +Abra as configurações do ChatGPT clicando no seu nome de usuário no canto inferior esquerdo ou acesse diretamente [chatgpt.com/#settings](https://chatgpt.com/#settings). + +Na janela de configurações, role até a parte inferior e selecione **Advanced Settings**. Ative o **Developer mode**. + + + Configurações do ChatGPT mostrando Advanced Settings com a opção Developer mode ativada + + +
+ ### 3. Criar o Conector +
+ +Com o modo Developer habilitado, vá até a aba **Apps & Connectors** no mesmo modal de configurações. + +Clique no botão **Create** no canto superior direito. + + + Aba Apps & Connectors com o botão Create em destaque + + +Preencha os detalhes do conector: + +- **Name:** `Firecrawl MCP` +- **Description:** `Web scraping, crawling, search, and content extraction` (opcional) +- **MCP Server URL:** `https://mcp.firecrawl.dev/YOUR_API_KEY_HERE/v2/mcp` +- **Authentication:** `None` + +Substitua `YOUR_API_KEY_HERE` na URL pela sua [chave de API Firecrawl](https://www.firecrawl.dev/app/api-keys) real. + + + Formulário New Connector preenchido com os detalhes do Firecrawl MCP + + +Marque a caixa de seleção **"I understand and want to continue"** e, em seguida, clique em **Create**. + +
+ ### 4. Verificar a configuração +
+ +Volte para a interface principal do ChatGPT. Você deve ver **Modo Desenvolvedor** exibido, indicando que os conectores MCP estão ativos. + +Se você não vir o Modo Desenvolvedor, recarregue a página. Se ainda assim ele não aparecer, abra as configurações novamente e verifique se o Modo Desenvolvedor está ativado em Configurações Avançadas. + +
+ ### 5. Acesse as ferramentas do Firecrawl +
+ +Para usar o Firecrawl em uma conversa, clique no botão **+** no campo de entrada do chat, depois selecione **More** e escolha **Firecrawl MCP**. + + + Campo de entrada de chat do ChatGPT mostrando o menu + expandido com o submenu More e a opção Firecrawl MCP + + +
+ ## Demonstração rápida +
+ +Com o Firecrawl MCP selecionado, experimente estes prompts: + +**Busca:** + +``` +Search for the latest React Server Components updates +``` + +**Scrape:** + +``` +Scrape firecrawl.dev and tell me what it does +``` + +**Acessar documentação:** + +``` +Extraia a documentação da Vercel sobre edge functions e resuma-a +``` + + +
+ ## Confirmação da ferramenta +
+ +Quando o ChatGPT utiliza as ferramentas MCP do Firecrawl, você verá um prompt de confirmação pedindo a sua aprovação. + + + Janela de confirmação de ferramenta do ChatGPT exibindo uma solicitação do Firecrawl MCP + + +Você pode marcar **"Lembrar desta conversa"** para evitar confirmações repetidas durante a mesma sessão de chat. Essa medida de segurança é implementada pela OpenAI para garantir que as ferramentas MCP não executem ações não intencionais. + +Depois de confirmar, o ChatGPT executará a solicitação e retornará os resultados. + + + Exemplo de resultados de pesquisa do Firecrawl exibidos no ChatGPT + \ No newline at end of file diff --git a/pt-BR/developer-guides/mcp-setup-guides/claude-code.mdx b/pt-BR/developer-guides/mcp-setup-guides/claude-code.mdx index 0a3ef905..d98012fc 100644 --- a/pt-BR/developer-guides/mcp-setup-guides/claude-code.mdx +++ b/pt-BR/developer-guides/mcp-setup-guides/claude-code.mdx @@ -27,7 +27,6 @@ Substitua `your-api-key` pela sua chave de API do Firecrawl. Pronto! Agora você pode pesquisar e extrair dados da web pelo Claude Code. -
## Demonstração rápida
diff --git a/pt-BR/developer-guides/mcp-setup-guides/cursor.mdx b/pt-BR/developer-guides/mcp-setup-guides/cursor.mdx index 26559da3..91bb26ad 100644 --- a/pt-BR/developer-guides/mcp-setup-guides/cursor.mdx +++ b/pt-BR/developer-guides/mcp-setup-guides/cursor.mdx @@ -37,7 +37,6 @@ Abra as configurações (`Cmd+,`), pesquise por "MCP" e adicione: Substitua `your_api_key_here` pela sua chave de API do Firecrawl. -
### 3. Reinicie o Cursor
diff --git a/pt-BR/developer-guides/mcp-setup-guides/factory-ai.mdx b/pt-BR/developer-guides/mcp-setup-guides/factory-ai.mdx index 37da6a83..ade0de5f 100644 --- a/pt-BR/developer-guides/mcp-setup-guides/factory-ai.mdx +++ b/pt-BR/developer-guides/mcp-setup-guides/factory-ai.mdx @@ -33,7 +33,6 @@ curl -fsSL https://app.factory.ai/cli | sh iwr https://app.factory.ai/cli/install.ps1 -useb | iex ``` -
### 3. Adicionar o servidor MCP do Firecrawl
@@ -46,7 +45,6 @@ No CLI do Factory droid, adicione o Firecrawl com o comando `/mcp add`: Substitua `your-api-key-here` pela sua chave de API real do Firecrawl. -
### 4. Pronto!
diff --git a/pt-BR/developer-guides/mcp-setup-guides/windsurf.mdx b/pt-BR/developer-guides/mcp-setup-guides/windsurf.mdx index 6dc44483..ae338fad 100644 --- a/pt-BR/developer-guides/mcp-setup-guides/windsurf.mdx +++ b/pt-BR/developer-guides/mcp-setup-guides/windsurf.mdx @@ -37,7 +37,6 @@ Adicione o seguinte ao seu `./codeium/windsurf/model_config.json`: Substitua `YOUR_API_KEY` pela sua chave de API real do Firecrawl. -
### 3. Reinicie o Windsurf
diff --git a/pt-BR/features/alpha/llmstxt-npx.mdx b/pt-BR/features/alpha/llmstxt-npx.mdx index f17568f0..6ae4038b 100644 --- a/pt-BR/features/alpha/llmstxt-npx.mdx +++ b/pt-BR/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Você pode executar este pacote com NPX sem precisar instalá-lo. Há duas manei npx generate-llmstxt --api-key SUA_CHAVE_DA_API_DA_FIRECRAWL ``` -
### 2. Usando Variáveis de Ambiente
@@ -47,7 +46,6 @@ Em seguida, execute o comando sem a opção --api-key: npx generate-llmstxt ``` -
### Opções
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## Requisitos
diff --git a/pt-BR/features/change-tracking.mdx b/pt-BR/features/change-tracking.mdx index 25ab9727..7105c5c2 100644 --- a/pt-BR/features/change-tracking.mdx +++ b/pt-BR/features/change-tracking.mdx @@ -82,7 +82,6 @@ Exemplo de resposta: } ``` -
### Opções avançadas
@@ -170,7 +169,6 @@ if 'json' in result.change_tracking: ... ``` -
### Exemplo de resultados de comparação em JSON:
@@ -184,7 +182,6 @@ if 'json' in result.change_tracking: } ``` -
### Modelos de dados
@@ -278,7 +275,6 @@ A representação JSON estruturada do diff inclui: * `chunks`: Seções de alterações dentro de um arquivo * `changes`: Alterações de linha individuais com tipo (add, delete, normal) -
### Modo JSON
@@ -302,7 +298,6 @@ Exemplo de saída: Para usar o modo JSON, você precisa fornecer um esquema que defina os campos a extrair e comparar. -
## Fatos importantes
@@ -353,7 +348,6 @@ Aqui estão alguns detalhes importantes ao usar o recurso de rastreio de mudanç } ``` -
### Exemplo de Crawl
@@ -368,7 +362,6 @@ Aqui estão alguns detalhes importantes ao usar o recurso de rastreio de mudanç } ``` -
### Acompanhando alterações no preço de produto
diff --git a/pt-BR/features/extract.mdx b/pt-BR/features/extract.mdx index 83355fd7..9bca57db 100644 --- a/pt-BR/features/extract.mdx +++ b/pt-BR/features/extract.mdx @@ -32,7 +32,6 @@ O endpoint `/extract` simplifica a coleta de dados estruturados de qualquer núm Simplificamos a cobrança: agora o Extract usa créditos, assim como os outros endpoints. Cada crédito equivale a 15 tokens. -
## Usando `/extract`
diff --git a/pt-BR/features/search-v0.mdx b/pt-BR/features/search-v0.mdx index 896f369e..f6fe152d 100644 --- a/pt-BR/features/search-v0.mdx +++ b/pt-BR/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Com o SDK do Python
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### Pesquisar uma busca
@@ -94,7 +92,6 @@ result = app.search(query="O que é o Firecrawl?") A resposta será semelhante à exibida no comando curl acima. -
### Com o SDK de JavaScript
@@ -107,7 +104,6 @@ A resposta será semelhante à exibida no comando curl acima. npm install @mendable/firecrawl-js ``` -
#### Pesquisar uma busca
@@ -124,7 +120,6 @@ const result = await app.search('O que é o Firecrawl?'); A resposta será semelhante à exibida no comando curl acima. -
### Com o SDK do Go
@@ -137,7 +132,6 @@ A resposta será semelhante à exibida no comando curl acima. go get github.com/mendableai/firecrawl-go ``` -
#### Pesquisar uma busca
@@ -165,7 +159,6 @@ func main() { } ``` -
### Com o SDK do Rust
@@ -188,7 +181,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### Pesquisar uma busca
diff --git a/pt-BR/integrations/camelai.mdx b/pt-BR/integrations/camelai.mdx index 44235441..ddb061dc 100644 --- a/pt-BR/integrations/camelai.mdx +++ b/pt-BR/integrations/camelai.mdx @@ -14,7 +14,6 @@ pip install camel-ai ``` -
## Uso
@@ -36,7 +35,6 @@ mock_app.crawl_url.return_value = respons result = firecrawl.markdown_crawl(url) ``` -
### Usando o Firecrawl para coletar uma única página
diff --git a/pt-BR/integrations/crewai.mdx b/pt-BR/integrations/crewai.mdx index 4bb73c1c..5dd97695 100644 --- a/pt-BR/integrations/crewai.mdx +++ b/pt-BR/integrations/crewai.mdx @@ -22,7 +22,6 @@ O Firecrawl está integrado ao [CrewAI, o framework para orquestração de agent pip install firecrawl-py 'crewai[tools]' ``` -
## Ferramentas
@@ -43,7 +42,6 @@ from crewai_tools import FirecrawlCrawlWebsiteTool tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev') ``` -
#### Argumentos
@@ -79,7 +77,6 @@ from crewai_tools import FirecrawlScrapeWebsiteTool tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev') ``` -
#### Argumentos
@@ -111,7 +108,6 @@ from crewai_tools import FirecrawlSearchTool tool = FirecrawlSearchTool(query='o que é o Firecrawl?') ``` -
#### Argumentos
diff --git a/pt-BR/mcp-server.mdx b/pt-BR/mcp-server.mdx index 4db1f7bd..dd6c573f 100644 --- a/pt-BR/mcp-server.mdx +++ b/pt-BR/mcp-server.mdx @@ -32,7 +32,6 @@ Você pode usar nossa URL hospedada ou executar o servidor localmente. Obtenha s https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp ``` -
### Executando com npx
@@ -41,14 +40,12 @@ https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp ``` - ### Instalação Manual ```bash npm install -g firecrawl-mcp ``` -
### Executando no Cursor
@@ -126,7 +123,6 @@ Adicione isto ao arquivo `./codeium/windsurf/model_config.json`: } ``` -
### Executando no modo HTTP com streaming
@@ -139,7 +135,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-SUA_CHAVE_DA_API npx -y fir Use a URL: http://localhost:3000/v2/mcp ou https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp -
### Instalação via Smithery (legado)
@@ -150,7 +145,6 @@ Para instalar o Firecrawl para o Claude Desktop automaticamente via [Smithery](h npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude ``` -
### Executando no VS Code
@@ -217,7 +211,6 @@ Veja a referência: [directus/directus#25906 (comment)](https://github.com/direc O servidor MCP ainda funciona normalmente quando acionado por outras extensões, mas o problema ocorre especificamente ao registrá-lo diretamente na lista de servidores MCP. Planejamos adicionar orientações assim que o VS Code atualizar a validação do esquema. -
### Executando no Claude Desktop
@@ -237,7 +230,6 @@ Adicione isto ao arquivo de configuração do Claude: } ``` -
### Executando no Claude Code
@@ -248,7 +240,6 @@ Adicione o servidor MCP do Firecrawl usando a CLI do Claude Code: claude mcp add firecrawl -e FIRECRAWL_API_KEY=sua-chave-de-API -- npx -y firecrawl-mcp ``` -
### Executando no n8n
@@ -280,7 +271,6 @@ env HTTP_STREAMABLE_SERVER=true \ Isso iniciará o servidor em `http://localhost:3000/v2/mcp`, que você pode usar no seu workflow do n8n como endpoint. A variável de ambiente `HTTP_STREAMABLE_SERVER=true` é obrigatória, pois o n8n requer transporte HTTP. -
## Configuração
@@ -355,7 +345,6 @@ export FIRECRAWL_RETRY_MAX_ATTEMPTS=10 export FIRECRAWL_RETRY_INITIAL_DELAY=500 # Comece com novas tentativas mais rápidas ``` -
### Configuração personalizada com o Claude Desktop
@@ -384,7 +373,6 @@ Adicione isto ao seu `claude_desktop_config.json`: } ``` -
### Configuração do sistema
@@ -425,7 +413,6 @@ Essas configurações controlam: * Aviso ao restarem 1000 créditos * Alerta crítico ao restarem 100 créditos -
### Limitação de taxa e processamento em lote
@@ -464,7 +451,6 @@ Extraia conteúdo de uma única URL com opções avançadas. } ``` -
### 2. Ferramenta de Scrape em Lote (`firecrawl_batch_scrape`)
@@ -498,7 +484,6 @@ A resposta inclui o ID da operação para verificar o status: } ``` -
### 3. Verificar o status do lote (`firecrawl_check_batch_status`)
@@ -514,7 +499,6 @@ Verifique o status de uma operação em lote. } ``` -
### 4. Ferramenta de Mapeamento (`firecrawl_map`)
@@ -535,7 +519,6 @@ Mapeie um site para descobrir todas as URLs indexadas no site. } ``` -
#### Opções da ferramenta Map:
@@ -572,7 +555,6 @@ Pesquise na web e, opcionalmente, extraia conteúdo dos resultados da busca. } ``` -
### 6. Ferramenta de Rastreamento (`firecrawl_crawl`)
@@ -592,7 +574,6 @@ Inicie uma varredura assíncrona com opções avançadas. } ``` -
### 7. Verificar o status do rastreamento (`firecrawl_check_crawl_status`)
@@ -610,7 +591,6 @@ Verifique o status de uma tarefa de rastreamento. **Retorna:** Status e progresso do job de rastreamento, incluindo os resultados, se disponíveis. -
### 8. Ferramenta de Extração (`firecrawl_extract`)
@@ -658,7 +638,6 @@ Exemplo de resposta: } ``` -
#### Opções da ferramenta de extração:
@@ -695,7 +674,6 @@ Exemplos de mensagens de log: [ERROR] Limite de requisições excedido, tentando novamente em 2s... ``` -
## Tratamento de erros
@@ -722,7 +700,6 @@ Exemplo de resposta de erro: } ``` -
## Desenvolvimento
@@ -738,7 +715,6 @@ npm run build npm test ``` -
### Contribuindo
diff --git a/pt-BR/v0/advanced-scraping-guide.mdx b/pt-BR/v0/advanced-scraping-guide.mdx index 902512ed..b8bd9b85 100644 --- a/pt-BR/v0/advanced-scraping-guide.mdx +++ b/pt-BR/v0/advanced-scraping-guide.mdx @@ -169,7 +169,6 @@ Neste exemplo, o scraper vai: Aqui está a referência da API correspondente: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Opções do Extrator
@@ -262,7 +261,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ } ``` -
## Ajustando o tempo limite
@@ -284,7 +282,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ }' ``` -
## Rastreamento de múltiplas páginas
@@ -306,7 +303,6 @@ Retorna um jobId { "jobId": "1234-5678-9101" } ``` -
### Verificar Job de Crawler
@@ -319,7 +315,6 @@ curl -X GET https://api.firecrawl.dev/v0/crawl/status/1234-5678-9101 \ -H 'Authorization: Bearer SUA_CHAVE_DE_API' ``` -
### Opções do Crawler
@@ -405,7 +400,6 @@ Neste exemplo, o crawler vai: * Usar o modo de rastreamento rápido. * Rastrear no máximo 1000 páginas. -
## Opções de Página + Opções do Crawler
@@ -446,7 +440,6 @@ Neste exemplo, o crawler vai: * Rastrear até uma profundidade máxima de 2. * Usar o modo de rastreamento rápido. -
## Opções do Extrator + Opções do Crawler
diff --git a/pt-BR/v0/api-reference/endpoint/crawl-cancel.mdx b/pt-BR/v0/api-reference/endpoint/crawl-cancel.mdx index 2e3ef462..1f972059 100644 --- a/pt-BR/v0/api-reference/endpoint/crawl-cancel.mdx +++ b/pt-BR/v0/api-reference/endpoint/crawl-cancel.mdx @@ -1,4 +1,4 @@ --- title: 'Cancelar Trabalho de Rastreamento' -openapi: 'v0-openapi DELETE /crawl/cancel/{jobId}' +openapi: '/pt-BR/api-reference/v1-openapi.json V0-OPENAPI DELETE /crawl/cancel/{jobId}' --- \ No newline at end of file diff --git a/pt-BR/v0/api-reference/endpoint/crawl.mdx b/pt-BR/v0/api-reference/endpoint/crawl.mdx index db920279..f7283ecd 100644 --- a/pt-BR/v0/api-reference/endpoint/crawl.mdx +++ b/pt-BR/v0/api-reference/endpoint/crawl.mdx @@ -1,4 +1,4 @@ --- title: 'Rastreamento' -openapi: 'v0-openapi POST /crawl' +openapi: '/pt-BR/api-reference/v1-openapi.json V0-OPENAPI POST /crawl' --- \ No newline at end of file diff --git a/pt-BR/v0/api-reference/endpoint/scrape.mdx b/pt-BR/v0/api-reference/endpoint/scrape.mdx index 3baf8c59..45e192b8 100644 --- a/pt-BR/v0/api-reference/endpoint/scrape.mdx +++ b/pt-BR/v0/api-reference/endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: 'Scrape' -openapi: 'v0-openapi POST /scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V0-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/pt-BR/v0/api-reference/endpoint/search.mdx b/pt-BR/v0/api-reference/endpoint/search.mdx index f6a4b6ec..f663370e 100644 --- a/pt-BR/v0/api-reference/endpoint/search.mdx +++ b/pt-BR/v0/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Search (Beta)" -openapi: 'v0-openapi POST /search' +openapi: '/pt-BR/api-reference/v1-openapi.json V0-OPENAPI POST /search' --- O endpoint de busca combina uma API de pesquisa com o poder do Firecrawl para oferecer uma experiência de busca robusta para qualquer consulta. diff --git a/pt-BR/v0/api-reference/endpoint/status.mdx b/pt-BR/v0/api-reference/endpoint/status.mdx index f622b8c2..14123f3e 100644 --- a/pt-BR/v0/api-reference/endpoint/status.mdx +++ b/pt-BR/v0/api-reference/endpoint/status.mdx @@ -1,6 +1,6 @@ --- title: 'Obter status do crawl' -openapi: 'v0-openapi GET /crawl/status/{jobId}' +openapi: '/pt-BR/api-reference/v1-openapi.json V0-OPENAPI GET /crawl/status/{jobId}' --- Este endpoint obtém o status de um job de crawl. Se o job não estiver concluído, a resposta incluirá conteúdo em `partial_data`. Quando o job for concluído, o conteúdo ficará disponível em `data`. diff --git a/pt-BR/v0/api-reference/introduction.mdx b/pt-BR/v0/api-reference/introduction.mdx index e03b5481..c32c6a36 100644 --- a/pt-BR/v0/api-reference/introduction.mdx +++ b/pt-BR/v0/api-reference/introduction.mdx @@ -13,7 +13,6 @@ Todas as solicitações usam a seguinte URL base: https://api.firecrawl.dev ``` -
## Autenticação
@@ -26,7 +25,6 @@ Authorization: Bearer fc_123456789 ​ -
## Códigos de resposta
diff --git a/pt-BR/v0/api-reference/v0-openapi.json b/pt-BR/v0/api-reference/v0-openapi.json new file mode 100644 index 00000000..abf4fdcf --- /dev/null +++ b/pt-BR/v0/api-reference/v0-openapi.json @@ -0,0 +1,947 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v0", + "description": "API para interagir com os serviços da Firecrawl e executar tarefas de raspagem e rastreamento da web.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v0" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Raspe os dados de uma única URL e, opcionalmente, extraia informações usando um LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL a ser coletada" + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados com a requisição. Podem ser usados para enviar cookies, user-agent etc." + }, + "includeHtml": { + "type": "boolean", + "description": "Incluir a versão HTML do conteúdo na página. Será retornada uma chave html na resposta.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Inclui o conteúdo HTML bruto da página. Gera uma chave rawHtml na resposta.", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Inclua apenas as tags, classes e IDs da página na saída final. Use valores separados por vírgula. Exemplo: 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Retorne somente o conteúdo principal da página, excluindo cabeçalhos, menus de navegação, rodapés etc.", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags, classes e IDs a serem removidos da página. Use valores separados por vírgulas. Exemplo: 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "Substitua todos os caminhos relativos de imagens e links por caminhos absolutos", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "Inclua uma captura de tela do topo da página que você está raspando.", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "Inclua uma captura de tela completa da página da qual você está extraindo dados.", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "Aguarde x milissegundos para a página carregar antes de buscar o conteúdo", + "default": 0 + } + } + }, + "extractorOptions": { + "type": "object", + "description": "Opções para extração de informações estruturadas do conteúdo da página. Observação: a extração baseada em LLM não é executada automaticamente e só ocorre quando configurada explicitamente. O modo `markdown` simplesmente retorna o markdown raspado e é o modo padrão de scraping.", + "default": {}, + "properties": { + "mode": { + "type": "string", + "enum": [ + "markdown", + "llm-extraction", + "llm-extraction-from-raw-html", + "llm-extraction-from-markdown" + ], + "description": "O modo de extração a ser usado. 'markdown': Retorna o conteúdo em markdown coletado, não realiza extração por LLM. 'llm-extraction': Extrai informações do conteúdo limpo e analisado usando LLM. 'llm-extraction-from-raw-html': Extrai informações diretamente do HTML bruto usando LLM. 'llm-extraction-from-markdown': Extrai informações do conteúdo em markdown usando LLM." + }, + "extractionPrompt": { + "type": "string", + "description": "Um prompt que descreve quais informações extrair da página, aplicável aos modos de extração com LLM." + }, + "extractionSchema": { + "type": "object", + "additionalProperties": true, + "description": "O esquema de dados a serem extraídos, obrigatório apenas para os modos de extração com LLM.", + "required": [ + "company_mission", + "supports_sso", + "is_open_source" + ] + } + } + }, + "timeout": { + "type": "integer", + "description": "Tempo limite da requisição, em milissegundos", + "default": 30000 + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear várias URLs com base nas opções", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL base a partir da qual o rastreamento deve começar" + }, + "crawlerOptions": { + "type": "object", + "properties": { + "includes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de URL para incluir" + }, + "excludes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de URL a excluir" + }, + "generateImgAltText": { + "type": "boolean", + "description": "Gerar texto alternativo para imagens com LLMs (é necessário um plano pago)", + "default": false + }, + "returnOnlyUrls": { + "type": "boolean", + "description": "Se definido como true, retorna apenas as URLs como uma lista no status do crawl. Atenção: a resposta será uma lista de URLs dentro de data, e não uma lista de documentos.", + "default": false + }, + "maxDepth": { + "type": "integer", + "description": "Profundidade máxima de rastreamento em relação à URL informada. Um maxDepth de 0 coleta apenas a URL informada. Um maxDepth de 1 coleta a URL informada e todas as páginas a um nível abaixo. Um maxDepth de 2 coleta a URL informada e todas as páginas até dois níveis abaixo. Valores maiores seguem o mesmo padrão." + }, + "mode": { + "type": "string", + "enum": [ + "default", + "fast" + ], + "description": "O modo de rastreamento a ser utilizado. O modo rápido rastreia sites sem sitemap até 4x mais rápido, mas pode não ser tão preciso e não deve ser usado em sites com uso intenso de renderização em JavaScript.", + "default": "default" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar o sitemap do site durante o rastreamento", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas para rastrear", + "default": 10000 + }, + "allowBackwardCrawling": { + "type": "boolean", + "description": "Permite que o crawler navegue de uma URL específica de volta para páginas que a referenciaram anteriormente. Por exemplo, de 'example.com/product/123' de volta para 'example.com/product'", + "default": false + }, + "allowExternalContentLinks": { + "type": "boolean", + "description": "Permite que o rastreador siga links para sites externos.", + "default": false + } + } + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "Cabeçalhos para enviar na requisição. Podem ser usados para enviar cookies, user agent etc." + }, + "includeHtml": { + "type": "boolean", + "description": "Inclui a versão HTML do conteúdo da página. Retornará uma chave html na resposta.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Inclui o conteúdo HTML bruto da página. Gera uma chave rawHtml na resposta.", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Inclua apenas as tags, classes e IDs da página na saída final. Use valores separados por vírgulas. Exemplo: 'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Retorne apenas o conteúdo principal da página, excluindo cabeçalhos, menus de navegação, rodapés etc.", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags, classes e IDs a serem removidos da página. Use valores separados por vírgula. Exemplo: 'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "Substitua todos os caminhos relativos por caminhos absolutos em imagens e links", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "Inclua uma captura de tela do topo da página da qual você está extraindo dados.", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "Inclua uma captura de tela em tamanho completo da página da qual você está extraindo dados.", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "Aguarde x milissegundos para que a página carregue antes de buscar o conteúdo", + "default": 0 + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Busca uma palavra-chave no Google e retorna as principais páginas com o conteúdo em Markdown de cada uma", + "operationId": "searchGoogle", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "format": "uri", + "description": "A consulta de pesquisa" + }, + "pageOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Retorne apenas o conteúdo principal da página, excluindo cabeçalhos, menus de navegação, rodapés etc.", + "default": false + }, + "fetchPageContent": { + "type": "boolean", + "description": "Busca o conteúdo de cada página. Se definido como false, o padrão é usar uma API SERP básica e rápida.", + "default": true + }, + "includeHtml": { + "type": "boolean", + "description": "Incluir a versão HTML do conteúdo na página. Isso fará com que a resposta inclua uma chave html.", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "Inclui o conteúdo HTML bruto da página. Vai gerar uma chave rawHtml na resposta.", + "default": false + } + } + }, + "searchOptions": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "Quantidade máxima de resultados. O limite é 20 durante o beta." + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponse" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/status/{jobId}": { + "get": { + "tags": [ + "Crawl" + ], + "summary": "Obtenha o status de uma tarefa de rastreamento", + "operationId": "getCrawlStatus", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Status da tarefa (concluída, ativa, com falha, pausada)" + }, + "current": { + "type": "integer", + "description": "Número da página atual" + }, + "total": { + "type": "integer", + "description": "Total de páginas" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "Dados retornados pelo job (null enquanto estiver em execução)" + }, + "partial_data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "Documentos parciais são retornados enquanto o site está sendo rastreado (streaming). **Este recurso está atualmente em fase alpha – espere mudanças incompatíveis.** Quando uma página estiver pronta, ela será adicionada ao array `partial_data`, então não é necessário esperar que todo o site seja rastreado. Quando o rastreamento terminar, `partial_data` ficará vazio e o resultado estará disponível em `data`. Há um máximo de 50 itens na resposta em forma de array. O item mais antigo (no topo do array) será removido quando um novo item for adicionado ao array." + } + } + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/cancel/{jobId}": { + "delete": { + "tags": [ + "Crawl" + ], + "summary": "Cancelar um job de rastreamento", + "operationId": "cancelCrawlJob", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Devoluções canceladas." + } + } + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página quando `includeHtml` for true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, quando `includeRawHtml` é true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Exibido ao usar LLM Extraction. Dados extraídos da página de acordo com o esquema definido.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Pode ser exibida ao usar a extração por LLM. A mensagem de aviso informará sobre quaisquer problemas com a extração." + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página se `includeHtml` estiver definido como `true`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, se `includeRawHtml` for true" + }, + "index": { + "type": "integer", + "description": "O número da página que foi rastreada. Isso é útil em `partial_data`, para que você saiba de qual página os dados são." + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "A mensagem de erro da página" + } + } + } + } + }, + "SearchResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/pt-BR/v0/features/crawl.mdx b/pt-BR/v0/features/crawl.mdx index 531d0573..c6fda708 100644 --- a/pt-BR/v0/features/crawl.mdx +++ b/pt-BR/v0/features/crawl.mdx @@ -173,7 +173,6 @@ No cURL, o endpoint /crawl sempre retornará um jobId que você pode usar para v { "jobId": "1234-5678-9101" } ``` -
### Verificar tarefa de crawl
diff --git a/pt-BR/v0/features/extract.mdx b/pt-BR/v0/features/extract.mdx index 5547ca7c..fa724b4a 100644 --- a/pt-BR/v0/features/extract.mdx +++ b/pt-BR/v0/features/extract.mdx @@ -98,7 +98,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ ``` -
### Usando o SDK Python
@@ -130,7 +129,6 @@ data = app.scrape_url('https://news.ycombinator.com', { print(data["llm_extraction"]) ``` -
### Com o SDK de JavaScript
@@ -166,7 +164,6 @@ const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", { console.log(scrapeResult.data["llm_extraction"]); ``` -
### Com o SDK Go
@@ -222,7 +219,6 @@ func main() { } ``` -
### Com o SDK Rust
diff --git a/pt-BR/v1/advanced-scraping-guide.mdx b/pt-BR/v1/advanced-scraping-guide.mdx index f382e92e..da76a46d 100644 --- a/pt-BR/v1/advanced-scraping-guide.mdx +++ b/pt-BR/v1/advanced-scraping-guide.mdx @@ -195,7 +195,6 @@ Neste exemplo, o scraper vai: Aqui está a referência da API para isso: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## Opções do Extrator
@@ -296,7 +295,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ } ``` -
## Ações
@@ -489,7 +487,6 @@ Retorna um ID { "id": "1234-5678-9101" } ``` -
### Verificar tarefa de crawl
@@ -502,7 +499,6 @@ curl -X GET https://api.firecrawl.dev/v1/crawl/1234-5678-9101 \ -H 'Authorization: Bearer SUA_CHAVE_DE_API' ``` -
#### Paginação/Próxima URL
@@ -622,7 +618,6 @@ Neste exemplo, o crawler vai: * Rastrear até uma profundidade máxima de 2. * Rastrear no máximo 1000 páginas. - @@ -646,7 +641,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ Isso retornará um objeto JSON contendo links contextualmente relacionados ao URL. -
### Exemplo de resposta
@@ -668,7 +662,6 @@ Isso retornará um objeto JSON contendo links contextualmente relacionados ao UR } ``` -
### Opções de mapeamento
diff --git a/pt-BR/v1/api-reference/endpoint/batch-scrape-delete.mdx b/pt-BR/v1/api-reference/endpoint/batch-scrape-delete.mdx index d81a4ba7..ac4dfa49 100644 --- a/pt-BR/v1/api-reference/endpoint/batch-scrape-delete.mdx +++ b/pt-BR/v1/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar raspagem em lote' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape-delete) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/batch-scrape-get-errors.mdx b/pt-BR/v1/api-reference/endpoint/batch-scrape-get-errors.mdx index 699f8fbb..86aac09a 100644 --- a/pt-BR/v1/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/pt-BR/v1/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obter erros de batch scrape' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape-get-errors) já está disponível, com relatórios de erros e recursos de depuração aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/batch-scrape-get.mdx b/pt-BR/v1/api-reference/endpoint/batch-scrape-get.mdx index ea1ad1a6..c804f299 100644 --- a/pt-BR/v1/api-reference/endpoint/batch-scrape-get.mdx +++ b/pt-BR/v1/api-reference/endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obter status de scrape em lote' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape-get) com melhorias no acompanhamento de status e nas funcionalidades de monitoramento. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/batch-scrape.mdx b/pt-BR/v1/api-reference/endpoint/batch-scrape.mdx index 399f5e43..8f2e2637 100644 --- a/pt-BR/v1/api-reference/endpoint/batch-scrape.mdx +++ b/pt-BR/v1/api-reference/endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Raspagem em lote' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/batch-scrape) está disponível, com desempenho e confiabilidade aprimorados para processamento em lote. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/crawl-active.mdx b/pt-BR/v1/api-reference/endpoint/crawl-active.mdx index c3dc5d44..e3b87e26 100644 --- a/pt-BR/v1/api-reference/endpoint/crawl-active.mdx +++ b/pt-BR/v1/api-reference/endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Ver rastreamentos ativos' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-active) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/crawl-delete.mdx b/pt-BR/v1/api-reference/endpoint/crawl-delete.mdx index d26fbe41..31254d98 100644 --- a/pt-BR/v1/api-reference/endpoint/crawl-delete.mdx +++ b/pt-BR/v1/api-reference/endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar crawl' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-delete) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/crawl-get-errors.mdx b/pt-BR/v1/api-reference/endpoint/crawl-get-errors.mdx index 343f7417..e8a21d05 100644 --- a/pt-BR/v1/api-reference/endpoint/crawl-get-errors.mdx +++ b/pt-BR/v1/api-reference/endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obter erros do crawl' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Observação: uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-get-errors) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/crawl-get.mdx b/pt-BR/v1/api-reference/endpoint/crawl-get.mdx index 9d540d77..6b921ac0 100644 --- a/pt-BR/v1/api-reference/endpoint/crawl-get.mdx +++ b/pt-BR/v1/api-reference/endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Consultar status do crawl' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-get) já está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/crawl-post.mdx b/pt-BR/v1/api-reference/endpoint/crawl-post.mdx index 2cd80051..becc5a84 100644 --- a/pt-BR/v1/api-reference/endpoint/crawl-post.mdx +++ b/pt-BR/v1/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Observação: Já está disponível uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/crawl-post), com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/credit-usage-historical.mdx b/pt-BR/v1/api-reference/endpoint/credit-usage-historical.mdx index 8d515b58..868b7d89 100644 --- a/pt-BR/v1/api-reference/endpoint/credit-usage-historical.mdx +++ b/pt-BR/v1/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de créditos' -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- Retorna o uso histórico de créditos mês a mês. O endpoint também pode, opcionalmente, detalhar o uso por chave de API. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/credit-usage.mdx b/pt-BR/v1/api-reference/endpoint/credit-usage.mdx index 6e5a4050..8abc5fe3 100644 --- a/pt-BR/v1/api-reference/endpoint/credit-usage.mdx +++ b/pt-BR/v1/api-reference/endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de créditos' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/credit-usage) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/deep-research-get.mdx b/pt-BR/v1/api-reference/endpoint/deep-research-get.mdx index 993ede4a..de5052d0 100644 --- a/pt-BR/v1/api-reference/endpoint/deep-research-get.mdx +++ b/pt-BR/v1/api-reference/endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: 'Pesquisa aprofundada' -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/deep-research.mdx b/pt-BR/v1/api-reference/endpoint/deep-research.mdx index 06110d34..d2674ee0 100644 --- a/pt-BR/v1/api-reference/endpoint/deep-research.mdx +++ b/pt-BR/v1/api-reference/endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: 'Deep Research' -openapi: 'v1-openapi POST /deep-research' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- O endpoint Deep Research permite realizar pesquisas e análises aprofundadas com IA sobre qualquer assunto. Basta fornecer uma consulta de pesquisa e o Firecrawl explorará a web de forma autônoma, reunirá informações relevantes e sintetizará os achados em insights abrangentes. diff --git a/pt-BR/v1/api-reference/endpoint/extract-get.mdx b/pt-BR/v1/api-reference/endpoint/extract-get.mdx index 48b762ff..e9a6c676 100644 --- a/pt-BR/v1/api-reference/endpoint/extract-get.mdx +++ b/pt-BR/v1/api-reference/endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Verificar status de extração' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/extract-get) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/extract.mdx b/pt-BR/v1/api-reference/endpoint/extract.mdx index 2c5195d3..ad269f95 100644 --- a/pt-BR/v1/api-reference/endpoint/extract.mdx +++ b/pt-BR/v1/api-reference/endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extrair' -openapi: 'v1-openapi POST /extract' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/extract) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/llmstxt-get.mdx b/pt-BR/v1/api-reference/endpoint/llmstxt-get.mdx index 5e3ef6d4..77331b27 100644 --- a/pt-BR/v1/api-reference/endpoint/llmstxt-get.mdx +++ b/pt-BR/v1/api-reference/endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "Status do LLMs.txt" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Obtenha o status e os resultados de uma tarefa de geração do LLMs.txt. Este endpoint permite verificar se a geração foi concluída e recuperar o conteúdo gerado. @@ -69,7 +69,6 @@ Se o trabalho de geração falhar ou não for encontrado, você receberá uma re } ``` -
### Recomendações de polling
diff --git a/pt-BR/v1/api-reference/endpoint/llmstxt.mdx b/pt-BR/v1/api-reference/endpoint/llmstxt.mdx index 4d4f3cac..9da434ec 100644 --- a/pt-BR/v1/api-reference/endpoint/llmstxt.mdx +++ b/pt-BR/v1/api-reference/endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Gerar LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- O endpoint de geração de LLMs.txt cria os arquivos LLMs.txt e LLMs-full.txt para qualquer site. Esses arquivos oferecem um formato estruturado e otimizado para LLMs do conteúdo do site, facilitando para os modelos de linguagem entender e processar as informações. diff --git a/pt-BR/v1/api-reference/endpoint/map.mdx b/pt-BR/v1/api-reference/endpoint/map.mdx index e3302b9f..123166cd 100644 --- a/pt-BR/v1/api-reference/endpoint/map.mdx +++ b/pt-BR/v1/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Observação: já está disponível uma [nova versão v2 desta API](/pt-BR/api-reference/endpoint/map) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/scrape.mdx b/pt-BR/v1/api-reference/endpoint/scrape.mdx index c24f4afa..e31af7a8 100644 --- a/pt-BR/v1/api-reference/endpoint/scrape.mdx +++ b/pt-BR/v1/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Nota: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/scrape) está disponível, com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/search.mdx b/pt-BR/v1/api-reference/endpoint/search.mdx index b3ed69b8..2ce814df 100644 --- a/pt-BR/v1/api-reference/endpoint/search.mdx +++ b/pt-BR/v1/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > Observação: Uma nova [versão v2 desta API](/pt-BR/api-reference/endpoint/search) está disponível, com recursos e desempenho aprimorados. diff --git a/pt-BR/v1/api-reference/endpoint/token-usage-historical.mdx b/pt-BR/v1/api-reference/endpoint/token-usage-historical.mdx index 3d20ff35..f7d677c4 100644 --- a/pt-BR/v1/api-reference/endpoint/token-usage-historical.mdx +++ b/pt-BR/v1/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de tokens' -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET + /team/token-usage/historical' --- Retorna o uso histórico de tokens, mês a mês. O endpoint também pode detalhar o uso por chave de API, opcionalmente. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/endpoint/token-usage.mdx b/pt-BR/v1/api-reference/endpoint/token-usage.mdx index 3e469792..3a9c25c3 100644 --- a/pt-BR/v1/api-reference/endpoint/token-usage.mdx +++ b/pt-BR/v1/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Uso de tokens' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Observação: Já está disponível uma [versão v2 desta API](/pt-BR/api-reference/endpoint/token-usage) com recursos e desempenho aprimorados. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/v1-openapi.json b/pt-BR/v1/api-reference/v1-openapi.json new file mode 100644 index 00000000..88f5993a --- /dev/null +++ b/pt-BR/v1/api-reference/v1-openapi.json @@ -0,0 +1,3387 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "API para interagir com os serviços Firecrawl e executar tarefas de web scraping e crawling.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Fazer scraping de uma única URL e, opcionalmente, extrair informações usando um LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL a ser raspada" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará a política de não retenção de dados para esta raspagem. Para habilitar este recurso, entre em contato com help@firecrawl.dev." + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta de sucesso", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Faça scraping de várias URLs e, opcionalmente, extraia informações usando um LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "URL a ser coletada" + } + }, + "webhook": { + "type": "object", + "description": "Objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "URL para onde o webhook será enviado. Ele será acionado quando a raspagem em lote for iniciada (batch_scrape.started), a cada página raspada (batch_scrape.page) e quando a raspagem em lote for concluída (batch_scrape.completed ou batch_scrape.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipos de eventos a serem enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de scrapes simultâneos. Este parâmetro permite definir um limite de concorrência para este lote de scrape. Se não for definido, o scrape em lote respeitará o limite de concorrência da sua equipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer com que a requisição inteira falhe, será criada uma raspagem em lote usando as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará a política de nenhuma retenção de dados para este batch scrape. Para habilitar esse recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID da tarefa de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de um job de raspagem em lote", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar um job de raspagem em lote", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento concluído com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Job de raspagem em lote não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter erros de uma tarefa de raspagem em lote", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de uma tarefa de rastreamento", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar uma tarefa de rastreamento", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento concluído com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tarefa de rastreamento não encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter os erros de uma tarefa de rastreamento", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear várias URLs com base em opções", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL base a partir da qual o rastreamento será iniciado" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para o pathname da URL que excluem URLs correspondentes do crawl. Por exemplo, se você definir `\"excludePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, qualquer resultado que corresponder a esse padrão será excluído, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para caminhos (pathnames) de URL que definem quais URLs serão incluídas no crawl. Somente os caminhos que corresponderem aos padrões especificados serão incluídos na resposta. Por exemplo, se você definir `\"includePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, apenas os resultados que corresponderem a esse padrão serão incluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDepth": { + "type": "integer", + "description": "Profundidade absoluta máxima de rastreamento a partir da base da URL fornecida. Basicamente, é o número máximo de barras que o caminho (pathname) de uma URL rastreada pode conter.", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidade máxima de crawl com base na ordem de descoberta. O site raiz e as páginas do sitemap têm profundidade de descoberta igual a 0. Por exemplo, se você definir para 1 e definir ignoreSitemap, você fará o crawl apenas da URL informada e de todas as URLs que estiverem linkadas nessa página." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignorar o sitemap do site durante o rastreamento", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Não faça scraping novamente no mesmo path com parâmetros de consulta diferentes (ou sem nenhum)", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas para rastrear. O limite padrão é 10.000.", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ DESCONTINUADO: Use 'crawlEntireDomain' em vez disso. Permite que o crawler siga links internos para URLs irmãs ou de nível superior, não apenas caminhos filhos.", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que o rastreador siga links internos para URLs irmãs ou parent, não apenas caminhos filhos.\n\nfalse: Só rastreia URLs mais profundas (filhas).\n→ ex.: /features/feature-1 → /features/feature-1/tips ✅\n→ Não seguirá /pricing ou / ❌\n\ntrue: Rastreia quaisquer links internos, incluindo irmãs e parent.\n→ ex.: /features/feature-1 → /pricing, /, etc. ✅\n\nUse true para obter uma cobertura interna mais ampla, além dos caminhos aninhados.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que o crawler siga links para outros sites.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que o rastreador siga links para subdomínios do domínio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Intervalo, em segundos, entre as coletas. Isso ajuda a respeitar os limites de requisições dos sites." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de raspagens simultâneas. Este parâmetro permite definir um limite de concorrência para este rastreamento. Se não for especificado, o rastreamento respeitará o limite de concorrência da sua equipe." + }, + "webhook": { + "type": "object", + "description": "Um objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para a qual o webhook será enviado. Ele será acionado quando o crawl for iniciado (crawl.started), para cada página rastreada (crawl.page) e quando o crawl for concluído (crawl.completed ou crawl.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipos de eventos que devem ser enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará a retenção zero de dados para este crawl. Para habilitar esse recurso, entre em contato com help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas requisições", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear várias URLs de acordo com as opções", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL base para iniciar o rastreamento" + }, + "search": { + "type": "string", + "description": "Consulta de pesquisa a ser usada para o mapeamento. Durante a fase Alfa, a parte “inteligente” da funcionalidade de pesquisa é limitada a 500 resultados. Porém, se o mapa encontrar mais resultados, nenhum limite será aplicado." + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Ignore o sitemap do site durante o rastreamento.", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "Retorne apenas links encontrados no sitemap do site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdomínios deste site", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de links a serem retornados", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Tempo limite em milissegundos. Não há tempo limite definido por padrão." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Pagamento exigido", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraia dados estruturados de páginas com LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "As URLs das quais extrair dados. As URLs devem estar em formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt para guiar o processo de extração" + }, + "schema": { + "type": "object", + "description": "Esquema que define a estrutura dos dados extraídos. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Quando for true, a extração usará pesquisa na web para encontrar dados adicionais", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Quando for true, os arquivos sitemap.xml serão ignorados durante a varredura do site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Quando definido como true, os subdomínios das URLs fornecidas também serão varridos", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Quando definido como `true`, as fontes usadas para extrair os dados serão incluídas na resposta como a chave `sources`", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "Caso sejam especificadas URLs inválidas no array `urls`, elas serão ignoradas. Em vez de fazer com que toda a requisição falhe, será realizada uma extração usando as URLs válidas restantes, e as URLs inválidas serão retornadas no campo `invalidURLs` da resposta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extração concluída com sucesso", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitação inválida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID do job de extração", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Consultar o status de um job de extração", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obtém todos os rastreamentos ativos da equipe autenticada", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "O identificador único do rastreamento" + }, + "teamId": { + "type": "string", + "description": "ID da equipe proprietária do crawl" + }, + "url": { + "type": "string", + "format": "uri", + "description": "A URL de origem do rastreamento" + }, + "options": { + "type": "object", + "description": "As opções do crawler usadas nesta varredura", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "Iniciar uma operação de pesquisa profunda sobre uma consulta", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "A consulta de pesquisa" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "Profundidade máxima das iterações de pesquisa" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "Tempo limite em segundos" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "Número máximo de URLs a serem analisadas" + }, + "analysisPrompt": { + "type": "string", + "description": "O prompt a ser usado para a análise final. Útil para formatar o markdown da análise final de uma maneira específica." + }, + "systemPrompt": { + "type": "string", + "description": "Prompt de sistema a ser usado para o agente de pesquisa. Útil para orientar o agente de pesquisa em uma direção específica." + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "Opções de saída em JSON", + "properties": { + "schema": { + "type": "object", + "description": "O esquema a ser usado para a saída em formato JSON. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "O prompt de sistema a ser usado para a saída em formato JSON" + }, + "prompt": { + "type": "string", + "description": "Prompt a ser usado para a saída em formato JSON" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Tarefa de pesquisa iniciada com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID da tarefa de pesquisa" + } + } + } + } + } + }, + "400": { + "description": "Parâmetros da requisição inválidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de pesquisa", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenha o status e os resultados de uma operação de pesquisa aprofundada", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "Exibido quando se usa o formato JSON", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "Tarefa de pesquisa não encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obter créditos restantes da equipe autenticada", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "Créditos restantes da equipe", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "Número de créditos do plano. Isso não inclui créditos de cupom, pacotes de créditos ou créditos de recarga automática.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento. null se estiver no plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de cobrança. null se você estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações sobre o uso de créditos não encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obtenha o consumo histórico de créditos da equipe autenticada", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtenha o histórico de uso de créditos por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de encerramento do período de faturamento", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API usada no período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos utilizados no período de faturamento", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obter tokens restantes da equipe autenticada (somente Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "Número de tokens restantes da equipe", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "Número de tokens no plano. Isso não inclui tokens de cupom.", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de cobrança. null se estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações de uso de tokens não encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obter o uso histórico de tokens da equipe autenticada (somente Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obtenha o histórico de uso de tokens por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do ciclo de cobrança", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API usada no período de faturamento. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados no período de cobrança", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Pesquisar e, opcionalmente, raspar resultados de busca", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "A consulta de pesquisa" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados a retornar", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "Parâmetro de pesquisa temporal. Suporta intervalos de tempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de datas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parâmetro de localização para resultados de pesquisa" + }, + "timeout": { + "type": "integer", + "description": "Tempo limite (em milissegundos)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclui dos resultados de busca as URLs que são inválidas para outros endpoints do Firecrawl. Isso ajuda a reduzir erros se você estiver enviando dados da busca para outros endpoints da API do Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "Opções para fazer scraping de resultados de pesquisa", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do resultado da pesquisa" + }, + "description": { + "type": "string", + "description": "Descrição do resultado da pesquisa" + }, + "url": { + "type": "string", + "description": "URL do resultado de busca" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Conteúdo em Markdown caso o scraping tenha sido solicitado" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML, se solicitado entre os formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto, se solicitado entre os formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Links encontrados, se solicitados nos formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL da captura de tela, se solicitada nos formatos" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensagem de aviso caso ocorra algum problema" + } + } + } + } + } + }, + "408": { + "description": "Tempo da requisição esgotado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "Gerar arquivo LLMs.txt para um site", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL usada para gerar o arquivo LLMs.txt" + }, + "maxUrls": { + "type": "integer", + "description": "Número máximo de URLs para analisar", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "Inclua todo o conteúdo de texto na resposta", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Job de geração do LLMs.txt iniciado com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID da tarefa de geração do arquivo LLMs.txt" + } + } + } + } + } + }, + "400": { + "description": "Parâmetros da requisição inválidos", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID da tarefa de geração do arquivo LLMs.txt", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obtenha o status e os resultados de uma tarefa de geração de LLMs.txt", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "O conteúdo gerado do arquivo LLMs.txt" + }, + "llmsfulltxt": { + "type": "string", + "description": "Todo o conteúdo de texto quando showFullText for true" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Quando o conteúdo gerado expira" + } + } + } + } + } + }, + "404": { + "description": "Job de geração do arquivo LLMs.txt não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "Retorne apenas o conteúdo principal da página, excluindo cabeçalhos, menus de navegação, rodapés etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags que devem ser incluídas na saída." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags a serem excluídas do resultado." + }, + "maxAge": { + "type": "integer", + "description": "Retorna uma versão em cache da página se ela tiver sido armazenada há menos tempo do que esse valor, em milissegundos. Se a versão em cache da página for mais antiga do que esse valor, a página será raspada novamente. Se você não precisar de dados extremamente atualizados, ativar esta opção pode acelerar suas coletas em até 500%. O padrão é 0, o que desativa o cache.", + "default": 0 + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados na requisição. Podem ser usados para enviar cookies, user-agent, etc." + }, + "waitFor": { + "type": "integer", + "description": "Defina um atraso, em milissegundos, antes de buscar o conteúdo, permitindo que a página tenha tempo suficiente para carregar.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Defina como true se quiser emular a raspagem a partir de um dispositivo móvel. Útil para testar páginas responsivas e tirar capturas de tela em modo mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorar a verificação do certificado TLS ao fazer requisições", + "default": false + }, + "timeout": { + "type": "integer", + "description": "Tempo limite da requisição, em milissegundos", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "Define como arquivos PDF são processados durante o scraping. Quando definido como true, o conteúdo do PDF é extraído e convertido para o formato Markdown, com cobrança baseada no número de páginas (1 crédito por página). Quando definido como false, o arquivo PDF é retornado em codificação base64, com uma taxa fixa de 1 crédito no total.", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "Objeto de opções em JSON", + "properties": { + "schema": { + "type": "object", + "description": "O esquema a ser usado na extração (opcional). Deve seguir o [JSON Schema](https://json-schema.org/)." + }, + "systemPrompt": { + "type": "string", + "description": "Prompt de sistema a ser usado na extração (opcional)" + }, + "prompt": { + "type": "string", + "description": "O prompt a ser usado para extração sem esquema (opcional)" + } + } + }, + "actions": { + "type": "array", + "description": "Ações a serem realizadas na página antes de coletar o conteúdo", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Aguarde por um número especificado de milissegundos" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Tempo de espera em milissegundos" + }, + "selector": { + "type": "string", + "description": "Seletor para localizar o elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Tire uma captura de tela. Os links estarão no array `actions.screenshots` da resposta." + }, + "fullPage": { + "type": "boolean", + "description": "Define se deve fazer uma captura de tela da página inteira ou somente da área visível atual (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "A qualidade da captura de tela, de 1 a 100. 100 é a qualidade máxima." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Clique em um elemento" + }, + "selector": { + "type": "string", + "description": "Seletor (query selector) para localizar o elemento por", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clica em todos os elementos que correspondem ao seletor, não apenas no primeiro. Não lança erro se nenhum elemento corresponder ao seletor.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Insira texto em um campo de entrada, área de texto ou elemento com contenteditable. Observação: primeiro você deve colocar o foco no elemento usando uma ação de clique antes de escrever. O texto será digitado caractere por caractere para simular a entrada via teclado." + }, + "text": { + "type": "string", + "description": "Texto a ser digitado", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pressione uma tecla na página. Consulte https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para obter os códigos de tecla.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pressione uma tecla na página" + }, + "key": { + "type": "string", + "description": "Tecla para pressionar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Role a página ou um elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Direção da rolagem", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Seletor (CSS) do elemento que será rolado", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Extrai o conteúdo da página atual e retorna a URL e o HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Executar código JavaScript na página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ser executado", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Gere um PDF da página atual. O PDF será retornado no array `actions.pdfs` da resposta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "O tamanho da página do PDF resultante", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Se o PDF deve ser gerado em orientação horizontal", + "default": false + }, + "scale": { + "type": "number", + "description": "Fator de escala do PDF resultante", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configurações de localização da requisição. Quando especificadas, será usado um proxy apropriado, se disponível, e serão emuladas as configurações de idioma e fuso horário correspondentes. O padrão é “US” se não for especificado.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (por exemplo: 'US', 'AU', 'DE', 'JP')", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas e localidades preferidos para a requisição, em ordem de prioridade. Por padrão, utiliza o idioma da localização especificada. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Remove todas as imagens em base64 da saída, que podem ser excessivamente longas. O texto alternativo (alt) da imagem permanece na saída, mas o URL é substituído por um placeholder.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita o bloqueio de anúncios e de pop-ups de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica o tipo de proxy a ser usado.\n\n - **basic**: Proxies para scraping de sites sem ou com soluções anti-bot básicas. Rápido e geralmente funciona.\n - **stealth**: Proxies stealth para scraping de sites com soluções anti-bot avançadas. Mais lento, mas mais confiável em certos sites. Custa até 5 créditos por solicitação.\n - **auto**: O Firecrawl fará novas tentativas automaticamente usando proxies stealth se o proxy basic falhar. Se a nova tentativa com stealth for bem-sucedida, 5 créditos serão cobrados pelo scraping. Se a primeira tentativa com basic for bem-sucedida, apenas o custo normal será cobrado.\n\nSe você não especificar um proxy, o Firecrawl usará basic por padrão." + }, + "storeInCache": { + "type": "boolean", + "description": "Se verdadeiro, a página será armazenada no índice e no cache do Firecrawl. Definir isso como false é útil se sua atividade de scraping puder gerar preocupações em relação à proteção de dados. Usar alguns parâmetros associados a scraping sensível (ações, headers) fará com que esse parâmetro seja definido como false.", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "Formatos a serem incluídos na saída.", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "Opções de rastreio de mudanças (Beta). Aplicável apenas quando 'changeTracking' estiver incluído em formatos. O formato 'markdown' também deve ser especificado ao usar o rastreio de mudanças.", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "O modo de rastreamento de alterações a ser usado. 'git-diff' fornece um diff detalhado e 'json' compara os dados JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema para extração de JSON ao usar o modo `json`. Define a estrutura dos dados a serem extraídos e comparados. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt a ser usado para rastreamento de alterações ao usar o modo \"json\". Se não for especificado, será utilizado o prompt padrão." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag a ser usada para rastreamento de alterações. Tags podem separar o histórico de rastreamento de alterações em “branches” (ramificações) distintas, em que o rastreamento com uma tag específica só irá comparar com scrapes feitos na mesma tag. Se não for fornecida, a tag padrão (null) será usada." + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão HTML do conteúdo da página se `html` estiver em `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página caso `rawHtml` esteja em `formatos`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página caso `screenshot` conste em `formats`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links da página se `links` constar em `formatos`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados das ações especificadas no parâmetro `actions`. Somente presente se o parâmetro `actions` tiver sido fornecido na requisição", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs de capturas de tela, na mesma ordem das ações de captura fornecidas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Raspe o conteúdo na mesma ordem das ações de raspagem fornecidas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores de retorno em JavaScript, na mesma ordem das ações executeJavascript fornecidas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDFs gerados, na mesma ordem das ações de PDF especificadas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "A mensagem de erro da página" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "Exibido ao usar extração com LLM. Dados extraídos da página de acordo com o esquema definido.", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Pode ser exibido ao usar LLM Extraction. A mensagem de aviso indicará quaisquer problemas na extração." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informações de rastreio de mudanças se `changeTracking` estiver em `formats`. Somente presente quando o formato `changeTracking` for solicitado.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "O timestamp da coleta anterior com o qual a página atual está sendo comparada. Nulo se não houver coleta anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "O resultado da comparação entre as duas versões da página. 'new' indica que esta página não existia antes, 'same' indica que o conteúdo não foi alterado, 'changed' indica que o conteúdo foi alterado e 'removed' indica que a página foi removida." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "A visibilidade da página/URL atual. 'visible' significa que a URL foi descoberta por uma rota orgânica (links ou sitemap); 'hidden' significa que a URL foi descoberta com base na memória de rastreamentos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff das alterações no estilo Git ao usar o modo `git-diff`. Presente apenas quando o modo está definido como `git-diff`." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados da comparação em JSON ao usar o modo `json`. Só estará presente quando o modo estiver definido como `json`. Isso retornará uma lista de todas as chaves e seus valores das coletas `previous` e `current` com base no tipo definido no `schema`. Exemplo [aqui](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual do rastreamento. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que o sistema tentou realizar o rastreamento." + }, + "completed": { + "type": "integer", + "description": "Número de páginas rastreadas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "O número de créditos usados no rastreamento." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "Data e hora em que o rastreamento expira." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para obter os próximos 10 MB de dados. Retornada se o crawl ainda não tiver sido concluído ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Os dados do rastreamento.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão HTML do conteúdo da página, se `includeHtml` for true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, se `includeRawHtml` for true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links da página quando `includeLinks` for true" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página, se `includeScreenshot` for true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Jobs de raspagem com falha e detalhes do erro", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Carimbo de data e hora ISO da falha" + }, + "url": { + "type": "string", + "description": "URL extraída" + }, + "error": { + "type": "string", + "description": "Mensagem de erro" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs em que o scraping foi tentado, mas foi bloqueado pelo arquivo robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual da raspagem em lote. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que foi feita uma tentativa de extração." + }, + "completed": { + "type": "integer", + "description": "Número de páginas raspadas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "Número de créditos utilizados na raspagem em lote." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "A data e a hora em que a raspagem em lote expira." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para recuperar os próximos 10 MB de dados. É retornada se a raspagem em lote não for concluída ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Os dados da extração em lote.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo na página, se `includeHtml` for true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página quando `includeRawHtml` for true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links na página se `includeLinks` for verdadeiro" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página quando `includeScreenshot` for true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "Código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, este será um array vazio. Se ignoreInvalidURLs for false, este campo será undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, será um array vazio. Se ignoreInvalidURLs for false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "O status atual do job de extração" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx index c81ab916..1dbf75ac 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancelar scraping em lote' -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx index 21df2c1a..62a6cf74 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obter erros de scraping em lote' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get.mdx b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get.mdx index 97eb89a6..655b4894 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obter status da raspagem em lote' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape.mdx b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape.mdx index eccfed32..b9ffb3a5 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/batch-scrape.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Raspagem em lote' -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/crawl-active.mdx b/pt-BR/v1/api-reference/v2-endpoint/crawl-active.mdx index 9e76aac2..ea002d7f 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/crawl-active.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Obter rastreamentos ativos' -openapi: 'v2-openapi GET /crawl/active' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/crawl-delete.mdx b/pt-BR/v1/api-reference/v2-endpoint/crawl-delete.mdx index d94d1163..ea20ad16 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/crawl-delete.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "Cancelar rastreamento" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/crawl-get-errors.mdx b/pt-BR/v1/api-reference/v2-endpoint/crawl-get-errors.mdx index e9d816b2..2d56a96e 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/crawl-get-errors.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Obter erros de crawl' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/crawl-get.mdx b/pt-BR/v1/api-reference/v2-endpoint/crawl-get.mdx index 76582c96..6f5a8731 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/crawl-get.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obter status do crawl' -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/crawl-post.mdx b/pt-BR/v1/api-reference/v2-endpoint/crawl-post.mdx index f6c9eee3..c0654424 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/crawl-post.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v2-openapi POST /crawl' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -20,7 +20,6 @@ Descreva o que rastrear em inglês simples: } ``` -
### Melhor controle de sitemaps
diff --git a/pt-BR/v1/api-reference/v2-endpoint/credit-usage-historical.mdx b/pt-BR/v1/api-reference/v2-endpoint/credit-usage-historical.mdx index a87620de..59a2b1bd 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/credit-usage-historical.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de créditos' -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- Retorna o uso histórico de créditos mês a mês. Opcionalmente, o endpoint também pode detalhar o uso por chave de API. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/v2-endpoint/credit-usage.mdx b/pt-BR/v1/api-reference/v2-endpoint/credit-usage.mdx index cffaa930..29ea720d 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/credit-usage.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: "Uso de créditos" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/extract-get.mdx b/pt-BR/v1/api-reference/v2-endpoint/extract-get.mdx index 634eaff3..677bcdaf 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/extract-get.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Obter status da extração' -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/extract.mdx b/pt-BR/v1/api-reference/v2-endpoint/extract.mdx index 02ff652d..11aa0d10 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/extract.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: "Extrair" -openapi: 'v2-openapi POST /extract' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /extract' ---
diff --git a/pt-BR/v1/api-reference/v2-endpoint/map.mdx b/pt-BR/v1/api-reference/v2-endpoint/map.mdx index b009fab9..63061f32 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/map.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Mapear' -openapi: 'v2-openapi POST /map' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /map' ---
@@ -24,7 +24,6 @@ Três maneiras de lidar com sitemaps: } ``` -
### Descoberta de URLs mais inteligente
diff --git a/pt-BR/v1/api-reference/v2-endpoint/scrape.mdx b/pt-BR/v1/api-reference/v2-endpoint/scrape.mdx index a3de3c37..97b38b0b 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/scrape.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: "Scrape" -openapi: 'v2-openapi POST /scrape' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/pt-BR/v1/api-reference/v2-endpoint/search.mdx b/pt-BR/v1/api-reference/v2-endpoint/search.mdx index 6e5370b7..6d0dca1e 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/search.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Pesquisa" -openapi: 'v2-openapi POST /search' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -24,7 +24,6 @@ Pesquise na web, em imagens e em notícias de uma só vez: } ``` -
### Formato da resposta alterado
@@ -42,7 +41,6 @@ v1: lista simples de resultados. v2: organizado por tipo de fonte: } ``` -
### Novos recursos
diff --git a/pt-BR/v1/api-reference/v2-endpoint/token-usage-historical.mdx b/pt-BR/v1/api-reference/v2-endpoint/token-usage-historical.mdx index 430584f2..94473a2f 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/token-usage-historical.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/token-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: 'Uso histórico de tokens' -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET + /team/token-usage/historical' --- Retorna o uso histórico de tokens mês a mês. Opcionalmente, o endpoint também pode detalhar o uso por chave de API. \ No newline at end of file diff --git a/pt-BR/v1/api-reference/v2-endpoint/token-usage.mdx b/pt-BR/v1/api-reference/v2-endpoint/token-usage.mdx index dccf8169..8214524d 100644 --- a/pt-BR/v1/api-reference/v2-endpoint/token-usage.mdx +++ b/pt-BR/v1/api-reference/v2-endpoint/token-usage.mdx @@ -1,4 +1,4 @@ --- title: 'Uso de tokens' -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/pt-BR/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- \ No newline at end of file diff --git a/pt-BR/v1/api-reference/v2-openapi.json b/pt-BR/v1/api-reference/v2-openapi.json new file mode 100644 index 00000000..ad4bf353 --- /dev/null +++ b/pt-BR/v1/api-reference/v2-openapi.json @@ -0,0 +1,3261 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "API para interagir com os serviços da Firecrawl e realizar tarefas de web scraping e crawling.", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "Raspar uma única URL e, opcionalmente, extrair informações usando um LLM", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL a ser coletada" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso ativará nenhuma retenção de dados para esta coleta. Para habilitar este recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "Raspe várias URLs e, opcionalmente, extraia informações usando um LLM", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "A URL a ser raspada" + } + }, + "webhook": { + "type": "object", + "description": "Um objeto de especificação de Webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para a qual o webhook será enviado. O webhook será acionado quando a raspagem em lote for iniciada (batch_scrape.started), a cada página raspada (batch_scrape.page) e quando a raspagem em lote for concluída (batch_scrape.completed ou batch_scrape.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipos de eventos que devem ser enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de raspagens simultâneas. Este parâmetro permite definir um limite de concorrência para este lote de raspagem. Se não for definido, o lote seguirá o limite de concorrência da sua equipe." + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer toda a requisição falhar, será criado um scrape em lote com as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso fará com que nenhum dado seja retido para esta operação de scraping em lote. Para habilitar esse recurso, entre em contato com help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de raspagem em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Consultar o status de um job de raspagem em lote", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar um job de scraping em lote", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento concluído com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "Job de scraping em lote não encontrado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de scraping em lote", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter os erros de uma tarefa de raspagem em lote", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de um job de rastreamento", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Cancelar um job de rastreamento", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Cancelamento realizado com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "Tarefa de rastreamento não encontrada", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de rastreamento", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter erros de uma tarefa de rastreamento", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "Rastrear várias URLs de acordo com opções", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "A URL base para iniciar o rastreamento" + }, + "prompt": { + "type": "string", + "description": "Um prompt para gerar as opções do crawler (todos os parâmetros abaixo) em linguagem natural. Parâmetros definidos explicitamente substituirão os equivalentes gerados." + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões de regex para o pathname da URL que excluem do crawl as URLs correspondentes. Por exemplo, se você definir `\"excludePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, quaisquer resultados que corresponderem a esse padrão serão excluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Padrões regex de pathname de URL que determinam quais URLs serão incluídas no crawl. Somente os caminhos que corresponderem aos padrões especificados serão incluídos na resposta. Por exemplo, se você definir `\"includePaths\": [\"blog/.*\"]` para a URL base firecrawl.dev, apenas resultados que correspondam a esse padrão serão incluídos, como https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap." + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "Profundidade máxima de crawl com base na ordem de descoberta. O site raiz e as páginas presentes no sitemap têm profundidade de descoberta 0. Por exemplo, se você definir esse valor como 1 e configurar ignoreSitemap, você só fará o crawl da URL informada e de todas as URLs que estão linkadas nessa página." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Modo de sitemap ao rastrear. Se você definir como 'skip', o crawler vai ignorar o sitemap do site e rastrear apenas a URL informada, descobrindo páginas a partir daí.", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Não faça scraping novamente no mesmo caminho usando parâmetros de consulta diferentes (ou sem nenhum).", + "default": false + }, + "limit": { + "type": "integer", + "description": "Número máximo de páginas a rastrear. O limite padrão é 10000.", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "Permite que o crawler siga links internos para URLs irmãs ou superiores, não apenas caminhos filhos.\n\nfalse: Só rastreia URLs mais profundas (filhas).\n→ ex.: /features/feature-1 → /features/feature-1/tips ✅\n→ Não seguirá /pricing ou / ❌\n\ntrue: Rastreia qualquer link interno, incluindo URLs irmãs e superiores.\n→ ex.: /features/feature-1 → /pricing, /, etc. ✅\n\nUse true para uma cobertura interna mais ampla, além de caminhos aninhados.", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "Permite que o rastreador siga links para sites externos.", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "Permite que o rastreador siga links para subdomínios do domínio principal.", + "default": false + }, + "delay": { + "type": "number", + "description": "Atraso, em segundos, entre as coletas. Isso ajuda a respeitar os limites de acesso do site." + }, + "maxConcurrency": { + "type": "integer", + "description": "Número máximo de coletas simultâneas. Este parâmetro permite definir um limite de concorrência para este crawl. Se não for definido, o crawl respeita o limite de concorrência da sua equipe." + }, + "webhook": { + "type": "object", + "description": "Objeto de especificação de webhook.", + "properties": { + "url": { + "type": "string", + "description": "A URL para a qual o webhook será enviado. Ele será acionado quando o rastreamento for iniciado (crawl.started), para cada página rastreada (crawl.page) e quando o rastreamento for concluído (crawl.completed ou crawl.failed). A resposta será a mesma do endpoint `/scrape`." + }, + "headers": { + "type": "object", + "description": "Cabeçalhos HTTP a serem enviados para a URL do webhook.", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "Metadados personalizados que serão incluídos em todos os payloads de webhook deste rastreamento", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "Tipo de eventos que devem ser enviados para a URL do webhook. (padrão: todos)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "Se definido como true, isso desativará a retenção de dados para este rastreamento. Para habilitar esse recurso, entre em contato com help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "Mapear várias URLs de acordo com as opções", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL base para iniciar o rastreamento" + }, + "search": { + "type": "string", + "description": "Consulta de pesquisa a ser usada no mapeamento. Durante a fase Alfa, a parte “inteligente” da funcionalidade de pesquisa é limitada a 500 resultados. No entanto, se o mapeamento encontrar mais resultados, nenhum limite será aplicado." + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "Modo de sitemap ao mapear. Se você definir como `skip`, o sitemap não será usado para encontrar URLs. Se você definir como `only`, apenas URLs que estiverem no sitemap serão retornadas. Por padrão (`include`), o sitemap e outros métodos serão usados em conjunto para encontrar URLs.", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "Incluir subdomínios deste site", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "Não retorne URLs com parâmetros de consulta", + "default": true + }, + "limit": { + "type": "integer", + "description": "Número máximo de links retornados", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "Tempo limite em milissegundos. Não há tempo limite definido por padrão." + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "Pagamento obrigatório", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "Extraia dados estruturados de páginas da web usando LLMs", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "As URLs das quais extrair os dados. As URLs devem estar no formato glob." + } + }, + "prompt": { + "type": "string", + "description": "Prompt para guiar o processo de extração" + }, + "schema": { + "type": "object", + "description": "Esquema que define a estrutura dos dados extraídos. Deve estar em conformidade com o padrão [JSON Schema](https://json-schema.org/)." + }, + "enableWebSearch": { + "type": "boolean", + "description": "Quando definido como true, a extração usará a busca na web para encontrar dados adicionais", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "Quando definido como `true`, os arquivos sitemap.xml serão ignorados durante a varredura do site", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "Quando definido como true, os subdomínios das URLs fornecidas também serão varridos", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "Quando definido como `true`, as fontes usadas para extrair os dados serão incluídas na resposta sob a chave `sources`", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "Se URLs inválidas forem especificadas no array urls, elas serão ignoradas. Em vez de fazer com que toda a requisição falhe, será feita uma extração usando as URLs válidas restantes, e as URLs inválidas serão retornadas no campo invalidURLs da resposta." + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Extração bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "Solicitação inválida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "O ID da tarefa de extração", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "Obter o status de um job de extração", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "Obter todos os crawls ativos da equipe autenticada", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "O identificador exclusivo do rastreamento" + }, + "teamId": { + "type": "string", + "description": "ID da equipe proprietária do rastreamento" + }, + "url": { + "type": "string", + "format": "uri", + "description": "A URL de origem do rastreamento" + }, + "options": { + "type": "object", + "description": "Opções do rastreador usadas neste rastreamento", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "Pagamento necessário", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "Muitas solicitações", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "Obter os créditos restantes da equipe autenticada", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "Número de créditos restantes da equipe", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "Número de créditos do plano. Isso não inclui créditos provenientes de cupons, pacotes de créditos ou créditos de recarga automática.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento. null se você estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de cobrança. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações sobre o uso de créditos não encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "Obter o histórico de uso de créditos da equipe autenticada", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obter histórico de uso de créditos por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de cobrança", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API utilizada no período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "Número total de créditos utilizados no período de faturamento", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro do servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "Obter tokens restantes da equipe autenticada (somente Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Resposta de sucesso", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "Número de tokens restantes da equipe", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "Quantidade de tokens do plano. Não inclui tokens de cupom.", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento. null se estiver usando o plano gratuito", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "Informações de uso de tokens não foram encontradas", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "Obter uso histórico de tokens da equipe autenticada (somente Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "Obter histórico de uso de tokens por chave de API", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "Data de início do período de faturamento", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "Data de término do período de faturamento", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "Nome da chave de API utilizada no período de cobrança. null se byApiKey for false (padrão)", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "Número total de tokens utilizados no período de faturamento", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "Pesquisar e, opcionalmente, fazer scraping dos resultados de busca", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Consulta de pesquisa" + }, + "limit": { + "type": "integer", + "description": "Número máximo de resultados a serem retornados", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Parâmetro de pesquisa temporal. Suporta intervalos de tempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de datas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "Parâmetro de localização para resultados de pesquisa" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Fontes a serem pesquisadas. Isso determinará quais arrays estarão disponíveis na resposta.", + "default": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "Parâmetro de pesquisa temporal. Suporta intervalos de tempo predefinidos (`qdr:h`, `qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`) e intervalos de datas personalizados (`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)." + }, + "location": { + "type": "string", + "description": "Parâmetro de localização para resultados de pesquisa" + }, + "timeout": { + "type": "integer", + "description": "Tempo limite em milissegundos", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "Exclui dos resultados de pesquisa as URLs que são inválidas para outros endpoints do Firecrawl. Isso ajuda a reduzir erros ao encaminhar dados da pesquisa para outros endpoints da API do Firecrawl.", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "Opções para scraping de resultados de busca", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Resposta bem-sucedida", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do resultado da pesquisa" + }, + "description": { + "type": "string", + "description": "Descrição do resultado de pesquisa" + }, + "url": { + "type": "string", + "description": "URL do resultado da pesquisa" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Conteúdo em Markdown se a raspagem de dados tiver sido solicitada" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML quando solicitado nos formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto, quando solicitado em formatos" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Links encontrados, se solicitado, nos formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL da captura de tela, se solicitada entre os formatos" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do resultado de pesquisa" + }, + "imageUrl": { + "type": "string", + "description": "URL da imagem" + }, + "imageWidth": { + "type": "integer", + "description": "Largura da imagem" + }, + "imageHeight": { + "type": "integer", + "description": "Altura da imagem" + }, + "url": { + "type": "string", + "description": "URL do resultado da pesquisa" + }, + "position": { + "type": "integer", + "description": "Posição do resultado de busca" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Título do artigo" + }, + "snippet": { + "type": "string", + "description": "Trecho do artigo" + }, + "url": { + "type": "string", + "description": "URL do artigo" + }, + "date": { + "type": "string", + "description": "Data do artigo" + }, + "imageUrl": { + "type": "string", + "description": "URL da imagem do artigo" + }, + "position": { + "type": "integer", + "description": "Posição do artigo" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "Conteúdo em Markdown, caso a raspagem tenha sido solicitada" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML, se solicitado em formatos" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto, se incluído entre os formatos solicitados" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Links encontrados, se solicitado em formatos" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "URL da captura de tela, se solicitada entre os formatos" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "Os resultados da pesquisa. Os arrays disponíveis dependem das fontes que você especificou na requisição. Por padrão, o array `web` será retornado." + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Mensagem de aviso caso ocorra algum problema" + } + } + } + } + } + }, + "408": { + "description": "Tempo de requisição esgotado", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "Erro no servidor", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "Define se a captura de tela será da página inteira ou apenas da área visível atual (viewport).", + "default": false + }, + "quality": { + "type": "integer", + "description": "A qualidade da captura de tela vai de 1 a 100. 100 é a qualidade máxima." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "A largura da viewport em pixels" + }, + "height": { + "type": "integer", + "description": "Altura da viewport em pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "O esquema a ser usado na saída JSON. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "O prompt a ser usado para a saída em formato JSON" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "O modo de controle de alterações a ser usado. `git-diff` fornece um diff detalhado e `json` compara os dados JSON extraídos." + }, + "schema": { + "type": "object", + "description": "Esquema para extração de JSON ao usar o modo `json`. Define a estrutura dos dados que serão extraídos e comparados. Deve estar em conformidade com o [JSON Schema](https://json-schema.org/)." + }, + "prompt": { + "type": "string", + "description": "Prompt a ser usado para rastreamento de alterações ao usar o modo `json`. Se não for fornecido, o prompt padrão será utilizado." + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "Tag a ser usada para rastreamento de alterações. As tags podem separar o histórico de alterações em “ramificações” (“branches”) distintas, em que o rastreamento com uma tag específica só irá comparar com scrapes feitos com a mesma tag. Se não for fornecida, a tag padrão (null) será usada." + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "Formatos de saída a serem incluídos na resposta. Você pode especificar um ou mais formatos, tanto como strings (por exemplo, `'markdown'`) quanto como objetos com opções adicionais (por exemplo, `{ type: 'json', schema: {...} }`). Alguns formatos exigem que opções específicas sejam configuradas. Exemplo: `['markdown', { type: 'json', schema: {...} }]`.", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "Retorne somente o conteúdo principal da página, excluindo cabeçalhos, menus de navegação, rodapés, etc.", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags que devem ser incluídas na saída." + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags a serem excluídas da saída." + }, + "maxAge": { + "type": "integer", + "description": "Retorna uma versão em cache da página se ela tiver menos do que esse tempo em milissegundos. Se a versão em cache da página for mais antiga do que esse valor, a página será raspada novamente. Se você não precisar de dados extremamente atualizados, ativar essa opção pode acelerar suas raspagens em até 500%. O padrão é de 2 dias.", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "Cabeçalhos a serem enviados na requisição. Podem ser usados para enviar cookies, user-agent etc." + }, + "waitFor": { + "type": "integer", + "description": "Especifique um atraso, em milissegundos, antes de buscar o conteúdo, permitindo que a página tenha tempo suficiente para carregar.", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "Defina como `true` para simular scraping a partir de um dispositivo móvel. Útil para testar páginas responsivas e fazer capturas de tela em modo mobile.", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "Ignorar a verificação do certificado TLS ao fazer requisições", + "default": true + }, + "timeout": { + "type": "integer", + "description": "Tempo limite da requisição, em milissegundos." + }, + "parsers": { + "type": "array", + "description": "Controla como os arquivos são processados durante o scraping. Quando \"pdf\" é incluído (padrão), o conteúdo do PDF é extraído e convertido para markdown, com cobrança baseada no número de páginas (1 crédito por página). Quando um array vazio é passado, o arquivo PDF é retornado em codificação base64 com uma taxa fixa de 1 crédito no total.", + "items": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "Ações a serem realizadas na página antes de capturar o conteúdo", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "Aguarde por uma quantidade específica de milissegundos" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "Número de milissegundos de espera" + }, + "selector": { + "type": "string", + "description": "Seletor de consulta para encontrar o elemento por", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "Tire uma captura de tela. Os links estarão no array `actions.screenshots` da resposta." + }, + "fullPage": { + "type": "boolean", + "description": "Indica se a captura de tela será da página inteira ou apenas do viewport atual.", + "default": false + }, + "quality": { + "type": "integer", + "description": "Qualidade da captura de tela, de 1 a 100; 100 é a mais alta qualidade." + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "A largura da viewport, em pixels" + }, + "height": { + "type": "integer", + "description": "A altura da viewport em pixels" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "Clique em um elemento" + }, + "selector": { + "type": "string", + "description": "Seletor de consulta para localizar o elemento por", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "Clica em todos os elementos que correspondem ao seletor, não apenas no primeiro. Não gera erro se nenhum elemento corresponder ao seletor.", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "Digite um texto em um campo de entrada, área de texto ou elemento contenteditable. Observação: primeiro é necessário colocar o foco no elemento usando uma ação de clique antes de escrever. O texto será digitado caractere por caractere para simular a digitação pelo teclado." + }, + "text": { + "type": "string", + "description": "Texto para digitar", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "Pressione uma tecla nesta página. Consulte https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html para obter os códigos de tecla.", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "Pressione uma tecla nesta página" + }, + "key": { + "type": "string", + "description": "Tecla para pressionar", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "Rolar a página ou um elemento específico" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "Sentido da rolagem", + "default": "down" + }, + "selector": { + "type": "string", + "description": "Query selector do elemento a ser rolado", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "Realiza o scraping do conteúdo da página atual e retorna a URL e o HTML." + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "Executar código JavaScript na página" + }, + "script": { + "type": "string", + "description": "Código JavaScript a ser executado", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "Gerar um PDF da página atual. O PDF será retornado no array `actions.pdfs` da resposta." + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "O tamanho da página do PDF resultante", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "Se o PDF deve ser gerado em modo paisagem", + "default": false + }, + "scale": { + "type": "number", + "description": "Fator de escala do PDF gerado", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "Configurações de localização da requisição. Quando definido, será usado um proxy apropriado, se disponível, e serão emuladas as configurações correspondentes de idioma e fuso horário. O padrão é “US” se não for especificado.", + "properties": { + "country": { + "type": "string", + "description": "Código de país ISO 3166-1 alfa-2 (por exemplo, \"US\", \"AU\", \"DE\", \"JP\")", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "Idiomas e localidades preferenciais da requisição, em ordem de prioridade. Por padrão, é usado o idioma da localização especificada. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "Remove todas as imagens em base64 da saída, que podem deixá-la excessivamente longa. O texto alternativo (`alt`) da imagem é mantido na saída, mas a URL é substituída por um placeholder.", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "Habilita o bloqueio de anúncios e de pop-ups de cookies.", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "Especifica o tipo de proxy a ser usado.\n\n - **basic**: Proxies para scraping em sites com soluções anti-bot inexistentes ou básicas. Rápido e geralmente funciona.\n - **stealth**: Proxies stealth para scraping em sites com soluções anti-bot avançadas. Mais lento, mas mais confiável em certos sites. Custa até 5 créditos por requisição.\n - **auto**: O Firecrawl tentará automaticamente refazer o scraping com proxies stealth se o proxy basic falhar. Se a nova tentativa com stealth for bem-sucedida, 5 créditos serão cobrados pelo scraping. Se a primeira tentativa com basic for bem-sucedida, apenas o custo normal será cobrado.\n\nSe você não especificar um proxy, o Firecrawl usará auto por padrão.", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "Se definido como true, a página será armazenada no índice e no cache do Firecrawl. Definir como false é útil se sua atividade de scraping puder gerar preocupações com proteção de dados. O uso de alguns parâmetros associados a scraping sensível (ações, headers) fará com que esse parâmetro seja definido como false.", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "Resumo da página se `summary` estiver em `formats`" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página se `html` estiver em `formats`" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, se `rawHtml` estiver em `formatos`" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `screenshot` estiver incluído em `formats`" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links da página se `links` estiver em `formats`" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "Resultados das ações especificadas no parâmetro `actions`. Somente presente se o parâmetro `actions` tiver sido fornecido na requisição", + "properties": { + "screenshots": { + "type": "array", + "description": "URLs das capturas de tela, na mesma ordem das ações de captura de tela especificadas.", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "Extraia o conteúdo, na mesma ordem das ações de scraping fornecidas.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "Valores retornados em JavaScript, na mesma ordem das ações executeJavascript fornecidas.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "PDFs gerados na mesma ordem das ações de PDF fornecidas.", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "A mensagem de erro da página" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "Pode ser exibido ao usar Extração com LLM. A mensagem de aviso indicará quaisquer problemas na extração." + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "Informações de rastreio de mudanças, caso `changeTracking` esteja em `formats`. Só estará presente quando o formato `changeTracking` for solicitado.", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "A marca de tempo (timestamp) da raspagem anterior com a qual a página atual está sendo comparada. Nulo se não houver raspagem anterior." + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "O resultado da comparação entre as duas versões da página. 'new' indica que essa página não existia antes, 'same' indica que o conteúdo não mudou, 'changed' indica que o conteúdo foi alterado e 'removed' indica que a página foi removida." + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "A visibilidade da página/URL atual. 'visible' significa que a URL foi descoberta por meio de uma rota orgânica (links ou sitemap); 'hidden' significa que a URL foi descoberta a partir da memória de rastreamentos anteriores." + }, + "diff": { + "type": "string", + "nullable": true, + "description": "Diff de alterações no estilo Git ao usar o modo `git-diff`. Só está presente quando o modo é definido como `git-diff`." + }, + "json": { + "type": "object", + "nullable": true, + "description": "Resultados da comparação em JSON ao usar o modo `json`. Só é exibido quando o modo está definido como `json`. Isso gera uma lista de todas as chaves e seus valores dos scrapes `previous` e `current`, com base no tipo definido no `schema`. Exemplo [aqui](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual do rastreamento. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que o rastreamento foi tentado." + }, + "completed": { + "type": "integer", + "description": "O número de páginas rastreadas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "O número de créditos utilizados no rastreamento." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "A data e a hora em que o rastreamento vai expirar." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para recuperar os próximos 10 MB de dados. Fornecida se o crawl ainda não tiver sido concluído ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Dados do rastreamento.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página, caso `includeHtml` seja true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página se `includeRawHtml` for true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links da página se `includeLinks` for true" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `includeScreenshot` estiver definido como `true`" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "A mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Jobs de scraping com falha e detalhes dos erros", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "Carimbo de data/hora da falha em formato ISO" + }, + "url": { + "type": "string", + "description": "URL extraída" + }, + "error": { + "type": "string", + "description": "Mensagem de erro" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "Lista de URLs que tiveram a raspagem tentada, mas foram bloqueadas pelo robots.txt", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "O status atual da raspagem em lote. Pode ser `scraping`, `completed` ou `failed`." + }, + "total": { + "type": "integer", + "description": "O número total de páginas em que foi feita a tentativa de scraping." + }, + "completed": { + "type": "integer", + "description": "O número de páginas que foram coletadas com sucesso." + }, + "creditsUsed": { + "type": "integer", + "description": "Número de créditos utilizados para a raspagem em lote." + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "A data e hora em que a raspagem em lote expira." + }, + "next": { + "type": "string", + "nullable": true, + "description": "A URL para obter os próximos 10 MB de dados. Será retornada se a raspagem em lote não tiver sido concluída ou se a resposta for maior que 10 MB." + }, + "data": { + "type": "array", + "description": "Dados da raspagem em lote.", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "Versão em HTML do conteúdo da página, se `includeHtml` for true" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "Conteúdo HTML bruto da página, se `includeRawHtml` for true" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Lista de links na página, se `includeLinks` for verdadeiro" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "Captura de tela da página se `includeScreenshot` for true" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "O código de status da página" + }, + "error": { + "type": "string", + "nullable": true, + "description": "Mensagem de erro da página" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs for true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, será um array vazio. Se ignoreInvalidURLs for false, este campo será undefined." + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "Se ignoreInvalidURLs estiver definido como true, este será um array contendo as URLs inválidas especificadas na requisição. Se não houver URLs inválidas, este será um array vazio. Se ignoreInvalidURLs estiver definido como false, este campo será undefined." + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "O status atual do job de extração" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "Número de tokens utilizados pela tarefa de extração. Disponível somente quando a tarefa for concluída." + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/pt-BR/v1/features/alpha/llmstxt-npx.mdx b/pt-BR/v1/features/alpha/llmstxt-npx.mdx index ab999178..2a00440d 100644 --- a/pt-BR/v1/features/alpha/llmstxt-npx.mdx +++ b/pt-BR/v1/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ Você pode executar este pacote com NPX, sem precisar instalá-lo. Existem duas npx generate-llmstxt --api-key SUA_CHAVE_DA_API_DA_FIRECRAWL ``` -
### 2. Usando variáveis de ambiente
@@ -47,7 +46,6 @@ Em seguida, execute o comando sem a opção --api-key: npx generate-llmstxt ``` -
### Opções
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## Requisitos
diff --git a/pt-BR/v1/features/change-tracking.mdx b/pt-BR/v1/features/change-tracking.mdx index e11edfec..e86367b7 100644 --- a/pt-BR/v1/features/change-tracking.mdx +++ b/pt-BR/v1/features/change-tracking.mdx @@ -69,7 +69,6 @@ Exemplo de resposta: } ``` -
### Opções avançadas
@@ -106,7 +105,6 @@ if (result.changeTracking.json) { } ``` -
### Exemplo de resultados de Git diff:
@@ -120,7 +118,6 @@ if (result.changeTracking.json) { ... ``` -
### Exemplo de resultados de comparação em JSON:
@@ -134,7 +131,6 @@ if (result.changeTracking.json) { } ``` -
### Interface em TypeScript
@@ -183,7 +179,6 @@ interface ScrapeParams { } ``` -
## SDK do Python
@@ -208,7 +203,6 @@ print("Visibilidade:", result.changeTracking.visibility) # 'visível' ou 'ocult print("Data da raspagem anterior:", result.changeTracking.previousScrapeAt) # carimbo de data/hora ISO da raspagem anterior ``` -
### Opções avançadas
@@ -243,7 +237,6 @@ if 'json' in result.changeTracking: print(result.changeTracking.json.title.current) # Título atual ``` -
### Modelo de dados em Python
@@ -262,7 +255,6 @@ class ChangeTrackingData(pydantic.BaseModel): json: Optional[Any] = None ``` -
## Modos de Rastreio de Mudanças
@@ -289,7 +281,6 @@ A representação JSON estruturada do diff inclui: * `chunks`: Seções de alterações dentro de um arquivo * `changes`: Mudanças individuais de linha com tipo (add, delete, normal) -
### Modo JSON
@@ -313,7 +304,6 @@ Exemplo de saída: Para usar o modo JSON, você precisa fornecer um esquema que defina os campos a serem extraídos e comparados. -
## Fatos importantes
@@ -364,7 +354,6 @@ Aqui estão alguns pontos importantes ao usar o recurso de rastreioDeMudanças: } ``` -
### Exemplo de Crawler
@@ -379,7 +368,6 @@ Aqui estão alguns pontos importantes ao usar o recurso de rastreioDeMudanças: } ``` -
### Acompanhando mudanças de preço de produtos
@@ -425,7 +413,6 @@ if result.changeTracking.changeStatus == 'changed': print(f"Preço mudou de {result.changeTracking.json.price.previous} para {result.changeTracking.json.price.current}") ``` -
### Monitoramento de alterações de conteúdo com git-diff
@@ -459,7 +446,6 @@ if result.changeTracking.changeStatus == 'changed': print(result.changeTracking.diff.text) ``` -
## Cobrança
diff --git a/pt-BR/v1/features/extract.mdx b/pt-BR/v1/features/extract.mdx index 55070e16..d2ecf094 100644 --- a/pt-BR/v1/features/extract.mdx +++ b/pt-BR/v1/features/extract.mdx @@ -33,7 +33,6 @@ O endpoint `/extract` simplifica a coleta de dados estruturados a partir de qual Simplificamos a cobrança: agora o Extract usa créditos, assim como todos os outros endpoints. Cada crédito equivale a 15 tokens. -
## Usando `/extract`
diff --git a/pt-BR/v1/features/search-v0.mdx b/pt-BR/v1/features/search-v0.mdx index cc645029..8a5380fb 100644 --- a/pt-BR/v1/features/search-v0.mdx +++ b/pt-BR/v1/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### Com o SDK do Python
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### Pesquisar uma consulta
@@ -94,7 +92,6 @@ result = app.search(query="O que é o Firecrawl?") A resposta será semelhante à exibida no comando curl acima. -
### Com o SDK de JavaScript
@@ -107,7 +104,6 @@ A resposta será semelhante à exibida no comando curl acima. npm install @mendable/firecrawl-js ``` - #### Pesquisar uma busca ```javascript @@ -122,7 +118,6 @@ const result = await app.search('O que é o Firecrawl?'); A resposta será semelhante à exibida no comando curl acima. -
### Com o SDK do Go
@@ -135,7 +130,6 @@ A resposta será semelhante à exibida no comando curl acima. go get github.com/mendableai/firecrawl-go ``` - #### Pesquisar uma busca ```go @@ -161,7 +155,6 @@ func main() { } ``` -
### Com o SDK do Rust
@@ -184,7 +177,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` - #### Pesquisar uma busca ```rust diff --git a/pt-BR/webhooks/events.mdx b/pt-BR/webhooks/events.mdx index 0c77eccf..b566e61f 100644 --- a/pt-BR/webhooks/events.mdx +++ b/pt-BR/webhooks/events.mdx @@ -24,7 +24,6 @@ Todos os eventos de webhook seguem esta estrutura básica: } ``` -
### Campos comuns
@@ -60,7 +59,6 @@ Enviado quando uma operação de rastreamento é iniciada. } ``` -
### `crawl.page`
@@ -99,7 +97,6 @@ Enviado para cada página individual extraída durante um rastreamento. para cada página extraída com sucesso. -
### `crawl.completed`
@@ -116,7 +113,6 @@ Enviado quando toda a operação de rastreamento é concluída com sucesso. } ``` -
## Eventos de Scrape em Lote
@@ -139,7 +135,6 @@ Enviado quando uma operação de raspagem em lote é iniciada. } ``` -
### `batch_scrape.page`
@@ -178,7 +173,6 @@ Enviado para cada URL individual processada durante a raspagem em lote. evento `batch_scrape.page` para cada URL extraída com sucesso. -
### `batch_scrape.completed`
@@ -195,7 +189,6 @@ Enviado quando a operação de raspagem em lote é concluída por completo. } ``` -
## Eventos de Extração
@@ -218,7 +211,6 @@ Enviado quando uma operação de extração é iniciada. } ``` -
### `extract.completed`
@@ -247,7 +239,6 @@ Enviado quando uma operação de extração é concluída com sucesso. } ``` -
### `extract.failed`
@@ -265,7 +256,6 @@ Enviado quando uma operação de extração ocorre um erro. } ``` -
## Filtragem de eventos
diff --git a/pt-BR/webhooks/testing.mdx b/pt-BR/webhooks/testing.mdx index eca704d9..6c7a0d1f 100644 --- a/pt-BR/webhooks/testing.mdx +++ b/pt-BR/webhooks/testing.mdx @@ -43,7 +43,6 @@ Use a URL fornecida na configuração do seu webhook: } ``` -
## Solução de Problemas Comuns
diff --git a/pt-BR/x402/search.mdx b/pt-BR/x402/search.mdx index 6c6b3fce..cee8c8b2 100644 --- a/pt-BR/x402/search.mdx +++ b/pt-BR/x402/search.mdx @@ -1,6 +1,6 @@ --- title: 'Busca sob demanda' -openapi: 'v1-openapi POST /x402/search' +openapi: '/pt-BR/api-reference/v1-openapi.json V1-OPENAPI POST /x402/search' --- diff --git a/v0/api-reference/endpoint/crawl-cancel.mdx b/v0/api-reference/endpoint/crawl-cancel.mdx index 7c8a32fc..087ff8d8 100644 --- a/v0/api-reference/endpoint/crawl-cancel.mdx +++ b/v0/api-reference/endpoint/crawl-cancel.mdx @@ -1,4 +1,4 @@ --- title: 'Cancel Crawl Job' -openapi: 'v0-openapi DELETE /crawl/cancel/{jobId}' +openapi: '/api-reference/v1-openapi.json V0-OPENAPI DELETE /crawl/cancel/{jobId}' --- diff --git a/v0/api-reference/endpoint/crawl.mdx b/v0/api-reference/endpoint/crawl.mdx index 9ca8520f..054c14bf 100644 --- a/v0/api-reference/endpoint/crawl.mdx +++ b/v0/api-reference/endpoint/crawl.mdx @@ -1,4 +1,4 @@ --- title: 'Crawl' -openapi: 'v0-openapi POST /crawl' +openapi: '/api-reference/v1-openapi.json V0-OPENAPI POST /crawl' --- diff --git a/v0/api-reference/endpoint/scrape.mdx b/v0/api-reference/endpoint/scrape.mdx index 167a6821..83dee60b 100644 --- a/v0/api-reference/endpoint/scrape.mdx +++ b/v0/api-reference/endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: 'Scrape' -openapi: 'v0-openapi POST /scrape' +openapi: '/api-reference/v1-openapi.json V0-OPENAPI POST /scrape' --- diff --git a/v0/api-reference/endpoint/search.mdx b/v0/api-reference/endpoint/search.mdx index 6e3b34e4..7dbe7e1b 100644 --- a/v0/api-reference/endpoint/search.mdx +++ b/v0/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search (Beta)' -openapi: 'v0-openapi POST /search' +openapi: '/api-reference/v1-openapi.json V0-OPENAPI POST /search' --- diff --git a/v0/api-reference/endpoint/status.mdx b/v0/api-reference/endpoint/status.mdx index 49f16f35..85a8d6c4 100644 --- a/v0/api-reference/endpoint/status.mdx +++ b/v0/api-reference/endpoint/status.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Status' -openapi: 'v0-openapi GET /crawl/status/{jobId}' +openapi: '/api-reference/v1-openapi.json V0-OPENAPI GET /crawl/status/{jobId}' --- diff --git a/v1/api-reference/endpoint/batch-scrape-delete.mdx b/v1/api-reference/endpoint/batch-scrape-delete.mdx index ebf46744..4fb9dc67 100644 --- a/v1/api-reference/endpoint/batch-scrape-delete.mdx +++ b/v1/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancel Batch Scrape' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape-delete) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/batch-scrape-get-errors.mdx b/v1/api-reference/endpoint/batch-scrape-get-errors.mdx index 567d8087..fc970450 100644 --- a/v1/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/v1/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Get Batch Scrape Errors' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape-get-errors) is now available with improved error reporting and debugging capabilities. diff --git a/v1/api-reference/endpoint/batch-scrape-get.mdx b/v1/api-reference/endpoint/batch-scrape-get.mdx index 5fbf1aab..88147d9b 100644 --- a/v1/api-reference/endpoint/batch-scrape-get.mdx +++ b/v1/api-reference/endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Batch Scrape Status' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape-get) is now available with improved status tracking and monitoring capabilities. diff --git a/v1/api-reference/endpoint/batch-scrape.mdx b/v1/api-reference/endpoint/batch-scrape.mdx index 77cc3143..fa31aff5 100644 --- a/v1/api-reference/endpoint/batch-scrape.mdx +++ b/v1/api-reference/endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Batch Scrape' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > Note: A new [v2 version of this API](/api-reference/endpoint/batch-scrape) is now available with improved batch processing performance and reliability. diff --git a/v1/api-reference/endpoint/crawl-active.mdx b/v1/api-reference/endpoint/crawl-active.mdx index aa2368ed..6fa32745 100644 --- a/v1/api-reference/endpoint/crawl-active.mdx +++ b/v1/api-reference/endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Get Active Crawls' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-active) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/crawl-delete.mdx b/v1/api-reference/endpoint/crawl-delete.mdx index 4de65dde..5d5073f1 100644 --- a/v1/api-reference/endpoint/crawl-delete.mdx +++ b/v1/api-reference/endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancel Crawl' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-delete) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/crawl-get-errors.mdx b/v1/api-reference/endpoint/crawl-get-errors.mdx index 96a0c423..2428e819 100644 --- a/v1/api-reference/endpoint/crawl-get-errors.mdx +++ b/v1/api-reference/endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Errors' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-get-errors) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/crawl-get.mdx b/v1/api-reference/endpoint/crawl-get.mdx index a9d9f592..86084e84 100644 --- a/v1/api-reference/endpoint/crawl-get.mdx +++ b/v1/api-reference/endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Status' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-get) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/crawl-post.mdx b/v1/api-reference/endpoint/crawl-post.mdx index 0f9f4105..2c24d347 100644 --- a/v1/api-reference/endpoint/crawl-post.mdx +++ b/v1/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > Note: A new [v2 version of this API](/api-reference/endpoint/crawl-post) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/credit-usage-historical.mdx b/v1/api-reference/endpoint/credit-usage-historical.mdx index 98154a18..c482711c 100644 --- a/v1/api-reference/endpoint/credit-usage-historical.mdx +++ b/v1/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Credit Usage' -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage/historical' --- Returns historical credit usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/v1/api-reference/endpoint/credit-usage.mdx b/v1/api-reference/endpoint/credit-usage.mdx index 25db42c0..0d4a26a4 100644 --- a/v1/api-reference/endpoint/credit-usage.mdx +++ b/v1/api-reference/endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Credit Usage' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > Note: A new [v2 version of this API](/api-reference/endpoint/credit-usage) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/deep-research-get.mdx b/v1/api-reference/endpoint/deep-research-get.mdx index ba050e22..11f2e7ad 100644 --- a/v1/api-reference/endpoint/deep-research-get.mdx +++ b/v1/api-reference/endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: 'Deep Research' -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- diff --git a/v1/api-reference/endpoint/deep-research.mdx b/v1/api-reference/endpoint/deep-research.mdx index 1c1ff0e4..3a74ea1e 100644 --- a/v1/api-reference/endpoint/deep-research.mdx +++ b/v1/api-reference/endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: 'Deep Research' -openapi: 'v1-openapi POST /deep-research' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- The Deep Research endpoint enables AI-powered deep research and analysis on any topic. Simply provide a research query, and Firecrawl will autonomously explore the web, gather relevant information, and synthesize findings into comprehensive insights. diff --git a/v1/api-reference/endpoint/extract-get.mdx b/v1/api-reference/endpoint/extract-get.mdx index 3d804374..0445affc 100644 --- a/v1/api-reference/endpoint/extract-get.mdx +++ b/v1/api-reference/endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Extract Status' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > Note: A new [v2 version of this API](/api-reference/endpoint/extract-get) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/extract.mdx b/v1/api-reference/endpoint/extract.mdx index 8ef290f0..ca4e9c1b 100644 --- a/v1/api-reference/endpoint/extract.mdx +++ b/v1/api-reference/endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > Note: A new [v2 version of this API](/api-reference/endpoint/extract) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/llmstxt-get.mdx b/v1/api-reference/endpoint/llmstxt-get.mdx index d0b9da44..b38fb16d 100644 --- a/v1/api-reference/endpoint/llmstxt-get.mdx +++ b/v1/api-reference/endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt Status" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- Get the status and results of an LLMs.txt generation job. This endpoint allows you to check if the generation is complete and retrieve the generated content. diff --git a/v1/api-reference/endpoint/llmstxt.mdx b/v1/api-reference/endpoint/llmstxt.mdx index 1e14c798..2527b463 100644 --- a/v1/api-reference/endpoint/llmstxt.mdx +++ b/v1/api-reference/endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "Generate LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- The LLMs.txt generation endpoint creates LLMs.txt and LLMs-full.txt files for any website. These files provide a structured, LLM-friendly format of the website's content, making it easier for language models to understand and process the information. diff --git a/v1/api-reference/endpoint/map.mdx b/v1/api-reference/endpoint/map.mdx index 81940a1d..8a3844fe 100644 --- a/v1/api-reference/endpoint/map.mdx +++ b/v1/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > Note: A new [v2 version of this API](/api-reference/endpoint/map) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/scrape.mdx b/v1/api-reference/endpoint/scrape.mdx index 4e0f5338..6c17ad5a 100644 --- a/v1/api-reference/endpoint/scrape.mdx +++ b/v1/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > Note: A new [v2 version of this API](/api-reference/endpoint/scrape) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/search.mdx b/v1/api-reference/endpoint/search.mdx index e1346e40..aad3b5e2 100644 --- a/v1/api-reference/endpoint/search.mdx +++ b/v1/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > Note: A new [v2 version of this API](/api-reference/endpoint/search) is now available with improved features and performance. diff --git a/v1/api-reference/endpoint/token-usage-historical.mdx b/v1/api-reference/endpoint/token-usage-historical.mdx index 67465ca5..6484908a 100644 --- a/v1/api-reference/endpoint/token-usage-historical.mdx +++ b/v1/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Token Usage' -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- Returns historical token usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/v1/api-reference/endpoint/token-usage.mdx b/v1/api-reference/endpoint/token-usage.mdx index 9e192d78..c1266c8e 100644 --- a/v1/api-reference/endpoint/token-usage.mdx +++ b/v1/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Token Usage' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > Note: A new [v2 version of this API](/api-reference/endpoint/token-usage) is now available with improved features and performance. diff --git a/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx b/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx index f953bf00..f0bfd262 100644 --- a/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx +++ b/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancel Batch Scrape' -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx b/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx index b6a441ba..6826693d 100644 --- a/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx +++ b/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Get Batch Scrape Errors' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/batch-scrape-get.mdx b/v1/api-reference/v2-endpoint/batch-scrape-get.mdx index bf833ac9..95cfc8ae 100644 --- a/v1/api-reference/v2-endpoint/batch-scrape-get.mdx +++ b/v1/api-reference/v2-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Batch Scrape Status' -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/batch-scrape.mdx b/v1/api-reference/v2-endpoint/batch-scrape.mdx index 911ad0fb..e80660e2 100644 --- a/v1/api-reference/v2-endpoint/batch-scrape.mdx +++ b/v1/api-reference/v2-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Batch Scrape' -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/crawl-active.mdx b/v1/api-reference/v2-endpoint/crawl-active.mdx index afa645ab..4ee714a0 100644 --- a/v1/api-reference/v2-endpoint/crawl-active.mdx +++ b/v1/api-reference/v2-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: 'Get Active Crawls' -openapi: 'v2-openapi GET /crawl/active' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/crawl-delete.mdx b/v1/api-reference/v2-endpoint/crawl-delete.mdx index ed9c191e..5ba5c6b3 100644 --- a/v1/api-reference/v2-endpoint/crawl-delete.mdx +++ b/v1/api-reference/v2-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: 'Cancel Crawl' -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/crawl-get-errors.mdx b/v1/api-reference/v2-endpoint/crawl-get-errors.mdx index e2cfcf84..42f9ba6b 100644 --- a/v1/api-reference/v2-endpoint/crawl-get-errors.mdx +++ b/v1/api-reference/v2-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Errors' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/crawl-get.mdx b/v1/api-reference/v2-endpoint/crawl-get.mdx index c87443cb..22fcd94a 100644 --- a/v1/api-reference/v2-endpoint/crawl-get.mdx +++ b/v1/api-reference/v2-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Crawl Status' -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/crawl-post.mdx b/v1/api-reference/v2-endpoint/crawl-post.mdx index 25e72e60..0665c542 100644 --- a/v1/api-reference/v2-endpoint/crawl-post.mdx +++ b/v1/api-reference/v2-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v2-openapi POST /crawl' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/credit-usage-historical.mdx b/v1/api-reference/v2-endpoint/credit-usage-historical.mdx index 2b95543c..bdcc0374 100644 --- a/v1/api-reference/v2-endpoint/credit-usage-historical.mdx +++ b/v1/api-reference/v2-endpoint/credit-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Credit Usage' -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage/historical' --- Returns historical credit usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/v1/api-reference/v2-endpoint/credit-usage.mdx b/v1/api-reference/v2-endpoint/credit-usage.mdx index 2d46f522..2bcf54cd 100644 --- a/v1/api-reference/v2-endpoint/credit-usage.mdx +++ b/v1/api-reference/v2-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Credit Usage' -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/extract-get.mdx b/v1/api-reference/v2-endpoint/extract-get.mdx index 8f6438a3..9d58889e 100644 --- a/v1/api-reference/v2-endpoint/extract-get.mdx +++ b/v1/api-reference/v2-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: 'Get Extract Status' -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/extract.mdx b/v1/api-reference/v2-endpoint/extract.mdx index d04344c0..ddb19d84 100644 --- a/v1/api-reference/v2-endpoint/extract.mdx +++ b/v1/api-reference/v2-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v2-openapi POST /extract' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /extract' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/map.mdx b/v1/api-reference/v2-endpoint/map.mdx index 43de86a3..39a31946 100644 --- a/v1/api-reference/v2-endpoint/map.mdx +++ b/v1/api-reference/v2-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v2-openapi POST /map' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /map' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/scrape.mdx b/v1/api-reference/v2-endpoint/scrape.mdx index a25e8284..7d6a93c8 100644 --- a/v1/api-reference/v2-endpoint/scrape.mdx +++ b/v1/api-reference/v2-endpoint/scrape.mdx @@ -1,5 +1,5 @@ --- title: 'Scrape' -openapi: 'v2-openapi POST /scrape' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' --- diff --git a/v1/api-reference/v2-endpoint/search.mdx b/v1/api-reference/v2-endpoint/search.mdx index 7bbd5293..5c4600d7 100644 --- a/v1/api-reference/v2-endpoint/search.mdx +++ b/v1/api-reference/v2-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v2-openapi POST /search' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI POST /search' --- ## What's New in v2 diff --git a/v1/api-reference/v2-endpoint/token-usage-historical.mdx b/v1/api-reference/v2-endpoint/token-usage-historical.mdx index cfc47686..727687b4 100644 --- a/v1/api-reference/v2-endpoint/token-usage-historical.mdx +++ b/v1/api-reference/v2-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: 'Historical Token Usage' -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- Returns historical token usage on a month-by-month basis. The endpoint can also breaks usage down by API key optionally. diff --git a/v1/api-reference/v2-endpoint/token-usage.mdx b/v1/api-reference/v2-endpoint/token-usage.mdx index 914760d5..bd8a4f77 100644 --- a/v1/api-reference/v2-endpoint/token-usage.mdx +++ b/v1/api-reference/v2-endpoint/token-usage.mdx @@ -1,4 +1,4 @@ --- title: 'Token Usage' -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- \ No newline at end of file diff --git a/x402/search.mdx b/x402/search.mdx index 5bce4096..3106d09f 100644 --- a/x402/search.mdx +++ b/x402/search.mdx @@ -1,6 +1,6 @@ --- title: 'On-Demand Search' -openapi: 'v1-openapi POST /x402/search' +openapi: '/api-reference/v1-openapi.json V1-OPENAPI POST /x402/search' --- diff --git a/zh/_essentials/code.mdx b/zh/_essentials/code.mdx index 187300c5..470b2a5b 100644 --- a/zh/_essentials/code.mdx +++ b/zh/_essentials/code.mdx @@ -18,7 +18,6 @@ icon: "code" 要将某个“单词”或“短语”标记为代码,请用反引号(`)将其括起来。 ``` -
### 代码块
diff --git a/zh/_essentials/markdown.mdx b/zh/_essentials/markdown.mdx index c5a3d0f0..5945e226 100644 --- a/zh/_essentials/markdown.mdx +++ b/zh/_essentials/markdown.mdx @@ -17,7 +17,6 @@ icon: 'text-size' ``` -
### 副标题
@@ -32,7 +31,6 @@ icon: 'text-size' 每个**标题**和**副标题**都会生成一个锚点,并显示在右侧的目录中。 -
## 文本格式
@@ -80,7 +78,6 @@ icon: 'text-size' > 多萝西跟着她穿过城堡里许多漂亮的房间。 ``` -
### 多行
@@ -95,7 +92,6 @@ icon: 'text-size' > 女巫吩咐她把锅壶洗净、打扫地板,并不停往火里添柴。 ``` -
### LaTeX
diff --git a/zh/_essentials/navigation.mdx b/zh/_essentials/navigation.mdx index ee1e45bf..c599624f 100644 --- a/zh/_essentials/navigation.mdx +++ b/zh/_essentials/navigation.mdx @@ -63,7 +63,6 @@ icon: "map" ] ``` -
## 隐藏页面
diff --git a/zh/advanced-scraping-guide.mdx b/zh/advanced-scraping-guide.mdx index 350ccc24..84039203 100644 --- a/zh/advanced-scraping-guide.mdx +++ b/zh/advanced-scraping-guide.mdx @@ -242,7 +242,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ API 参考: [Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## 通过格式进行 JSON 提取
@@ -263,7 +262,6 @@ curl -X POST https://api.firecrawl.dev/v2/scrape \ }' ``` -
## /extract 端点
@@ -336,7 +334,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl \ { "id": "1234-5678-9101" } ``` -
### 检查爬取任务
@@ -349,7 +346,6 @@ curl -X GET https://api.firecrawl.dev/v2/crawl/1234-5678-9101 \ -H 'Authorization: Bearer fc-你的API密钥' ``` -
#### 分页/下一页 URL
@@ -372,7 +368,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl/params-preview \ }' ``` -
### 爬虫选项
@@ -468,7 +463,6 @@ curl -X POST https://api.firecrawl.dev/v2/crawl \ }' ``` - @@ -488,7 +482,6 @@ curl -X POST https://api.firecrawl.dev/v2/map \ }' ``` -
### Map 选项
diff --git a/zh/agents/fire-1-extract.mdx b/zh/agents/fire-1-extract.mdx index 77b7f162..b3ae88e5 100644 --- a/zh/agents/fire-1-extract.mdx +++ b/zh/agents/fire-1-extract.mdx @@ -52,7 +52,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ 在此示例中,已指示 FIRE-1(代理)在进行最终抓取前对产品列表进行分页。 -
### 在 /extract 端点中使用 FIRE-1
@@ -94,7 +93,6 @@ curl -X POST https://api.firecrawl.dev/v1/extract \ 在此,代理会在提取开始前,依据提供的 schema 和提示词,通过与“Load More Comments”按钮交互,确保页面上的所有评论已加载完毕。 **注意:**FIRE-1(代理)功能强大,但根据导航指令的复杂度和交互页面数量,可能会消耗更多积分。 -
### 认识 FIRE-1:智能导航与交互
@@ -126,7 +124,6 @@ FIRE-1 为 Firecrawl 注入更高层次的智能,能在复杂站点结构中 *注意:* 发起 scrape 请求时必须提供 `prompt` 字段,用于精确指示 FIRE-1 如何与网页交互。 -
## 使用 /scrape 端点的示例
@@ -149,7 +146,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ 在此场景中,FIRE-1 会智能处理分页并汇集所有产品。 -
## 注意事项
diff --git a/zh/agents/fire-1.mdx b/zh/agents/fire-1.mdx index b16b2310..0feca925 100644 --- a/zh/agents/fire-1.mdx +++ b/zh/agents/fire-1.mdx @@ -13,7 +13,6 @@ import ExtractFire1CURL from "/snippets/zh/v1/extract/agent-f1/curl.mdx"; FIRE-1 是一款可增强 Firecrawl 抓取能力的 AI 代理。它能够控制浏览器 actions 并在复杂的网站结构中进行导航,从而实现超越传统抓取方式的全面数据提取。 -
### FIRE-1 能做什么:
diff --git a/zh/api-reference/endpoint/batch-scrape-delete.mdx b/zh/api-reference/endpoint/batch-scrape-delete.mdx index df7fbeca..f4aba182 100644 --- a/zh/api-reference/endpoint/batch-scrape-delete.mdx +++ b/zh/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,4 +1,4 @@ --- title: "取消批量抓取" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/batch-scrape-get-errors.mdx b/zh/api-reference/endpoint/batch-scrape-get-errors.mdx index c0545d70..c2aaef2f 100644 --- a/zh/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/zh/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,4 +1,4 @@ --- title: '获取批量抓取错误信息' -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/batch-scrape-get.mdx b/zh/api-reference/endpoint/batch-scrape-get.mdx index 9724d50b..f28e37f6 100644 --- a/zh/api-reference/endpoint/batch-scrape-get.mdx +++ b/zh/api-reference/endpoint/batch-scrape-get.mdx @@ -1,4 +1,4 @@ --- title: "获取批量抓取状态" -openapi: 'v2-openapi GET /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/batch-scrape.mdx b/zh/api-reference/endpoint/batch-scrape.mdx index 9289841a..7d34ce50 100644 --- a/zh/api-reference/endpoint/batch-scrape.mdx +++ b/zh/api-reference/endpoint/batch-scrape.mdx @@ -1,4 +1,4 @@ --- title: "批量抓取" -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/crawl-active.mdx b/zh/api-reference/endpoint/crawl-active.mdx index 36042d17..496414f4 100644 --- a/zh/api-reference/endpoint/crawl-active.mdx +++ b/zh/api-reference/endpoint/crawl-active.mdx @@ -1,4 +1,4 @@ --- title: "获取进行中的爬取任务" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/crawl-delete.mdx b/zh/api-reference/endpoint/crawl-delete.mdx index f6e98202..130fb845 100644 --- a/zh/api-reference/endpoint/crawl-delete.mdx +++ b/zh/api-reference/endpoint/crawl-delete.mdx @@ -1,4 +1,4 @@ --- title: "取消爬取" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/crawl-get-errors.mdx b/zh/api-reference/endpoint/crawl-get-errors.mdx index a1ac5ea5..4949c00f 100644 --- a/zh/api-reference/endpoint/crawl-get-errors.mdx +++ b/zh/api-reference/endpoint/crawl-get-errors.mdx @@ -1,4 +1,4 @@ --- title: "获取抓取错误" -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/crawl-get.mdx b/zh/api-reference/endpoint/crawl-get.mdx index 482cad80..fa7d68e7 100644 --- a/zh/api-reference/endpoint/crawl-get.mdx +++ b/zh/api-reference/endpoint/crawl-get.mdx @@ -1,4 +1,4 @@ --- title: "获取抓取状态" -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/crawl-params-preview.mdx b/zh/api-reference/endpoint/crawl-params-preview.mdx index c55fbebb..76eacf6e 100644 --- a/zh/api-reference/endpoint/crawl-params-preview.mdx +++ b/zh/api-reference/endpoint/crawl-params-preview.mdx @@ -1,6 +1,6 @@ --- title: "Crawl 参数预览" -openapi: 'v2-openapi POST /crawl/params-preview' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /crawl/params-preview' ---
@@ -18,7 +18,6 @@ openapi: 'v2-openapi POST /crawl/params-preview' } ``` -
### 返回
diff --git a/zh/api-reference/endpoint/crawl-post.mdx b/zh/api-reference/endpoint/crawl-post.mdx index 2bd6830b..5eeee68e 100644 --- a/zh/api-reference/endpoint/crawl-post.mdx +++ b/zh/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: '抓取' -openapi: 'v2-openapi POST /crawl' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -22,7 +22,6 @@ openapi: 'v2-openapi POST /crawl' 这会将提示映射到一组爬虫设置,以执行抓取。 -
### 更完善的 Sitemap 控制
diff --git a/zh/api-reference/endpoint/credit-usage-historical.mdx b/zh/api-reference/endpoint/credit-usage-historical.mdx index 7f6007ab..ab38fa5e 100644 --- a/zh/api-reference/endpoint/credit-usage-historical.mdx +++ b/zh/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "历史积分用量" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- 按月返回历史积分用量。该端点还可选按 API key 分解用量。 \ No newline at end of file diff --git a/zh/api-reference/endpoint/credit-usage.mdx b/zh/api-reference/endpoint/credit-usage.mdx index b1499afb..5f1cf9eb 100644 --- a/zh/api-reference/endpoint/credit-usage.mdx +++ b/zh/api-reference/endpoint/credit-usage.mdx @@ -1,4 +1,4 @@ --- title: "积分使用情况" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/extract-get.mdx b/zh/api-reference/endpoint/extract-get.mdx index e4d3ed5b..bad04a0b 100644 --- a/zh/api-reference/endpoint/extract-get.mdx +++ b/zh/api-reference/endpoint/extract-get.mdx @@ -1,4 +1,4 @@ --- title: "获取提取状态" -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/extract.mdx b/zh/api-reference/endpoint/extract.mdx index 5dc975f7..a821f962 100644 --- a/zh/api-reference/endpoint/extract.mdx +++ b/zh/api-reference/endpoint/extract.mdx @@ -1,4 +1,4 @@ --- title: "Extract" -openapi: 'v2-openapi POST /extract' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /extract' --- \ No newline at end of file diff --git a/zh/api-reference/endpoint/map.mdx b/zh/api-reference/endpoint/map.mdx index 8729d487..cf76cc71 100644 --- a/zh/api-reference/endpoint/map.mdx +++ b/zh/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map(映射)" -openapi: "v2-openapi POST /map" +openapi: "/zh/api-reference/v1-openapi.json V2-OPENAPI POST /map" ---
@@ -24,7 +24,6 @@ openapi: "v2-openapi POST /map" } ``` -
### 响应格式已更改
diff --git a/zh/api-reference/endpoint/queue-status.mdx b/zh/api-reference/endpoint/queue-status.mdx index a01a37c3..a2aff2f3 100644 --- a/zh/api-reference/endpoint/queue-status.mdx +++ b/zh/api-reference/endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "队列状态" -openapi: 'v2-openapi GET /team/queue-status' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/queue-status' --- 你团队抓取队列的指标。 \ No newline at end of file diff --git a/zh/api-reference/endpoint/scrape.mdx b/zh/api-reference/endpoint/scrape.mdx index 80beeec0..d6b5f90b 100644 --- a/zh/api-reference/endpoint/scrape.mdx +++ b/zh/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: "Scrape" -openapi: 'v2-openapi POST /scrape' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /scrape' ---
diff --git a/zh/api-reference/endpoint/search.mdx b/zh/api-reference/endpoint/search.mdx index f0af433e..a66ad3c5 100644 --- a/zh/api-reference/endpoint/search.mdx +++ b/zh/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "搜索" -openapi: 'v2-openapi POST /search' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /search' ---
@@ -20,7 +20,6 @@ openapi: 'v2-openapi POST /search' } ``` -
### 响应格式已变更
@@ -38,7 +37,6 @@ v1:平铺的结果列表。v2:按来源类型分组: } ``` -
### 新功能
@@ -94,7 +92,6 @@ v1:平铺的结果列表。v2:按来源类型分组: } ``` -
## categories 参数
@@ -117,7 +114,6 @@ v1:平铺的结果列表。v2:按来源类型分组: } ``` -
### 类别响应
@@ -146,7 +142,6 @@ v1:平铺的结果列表。v2:按来源类型分组: } ``` - diff --git a/zh/api-reference/endpoint/token-usage-historical.mdx b/zh/api-reference/endpoint/token-usage-historical.mdx index 2fe1d89f..744016be 100644 --- a/zh/api-reference/endpoint/token-usage-historical.mdx +++ b/zh/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "历史 Token 使用情况" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- 按月返回历史 Token 使用情况。该端点也可选择按 API 密钥分解使用量。 diff --git a/zh/api-reference/endpoint/token-usage.mdx b/zh/api-reference/endpoint/token-usage.mdx index 40454f7b..3351f956 100644 --- a/zh/api-reference/endpoint/token-usage.mdx +++ b/zh/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: "Token 使用情况" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- 我们已简化计费:Extract 现在与其他端点一致,改为按积分计费。每个积分折合 15 个 Token。现在报告的 Token 使用情况包含所有端点的用量。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/batch-scrape-delete.mdx b/zh/api-reference/v1-endpoint/batch-scrape-delete.mdx index 9e91245a..de607c91 100644 --- a/zh/api-reference/v1-endpoint/batch-scrape-delete.mdx +++ b/zh/api-reference/v1-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: '取消批量抓取' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > 注意:新版 [v2 API](/zh/api-reference/endpoint/batch-scrape-delete) 现已上线,功能与性能均有所提升。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/batch-scrape-get-errors.mdx b/zh/api-reference/v1-endpoint/batch-scrape-get-errors.mdx index edeb7e57..1235c70e 100644 --- a/zh/api-reference/v1-endpoint/batch-scrape-get-errors.mdx +++ b/zh/api-reference/v1-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: '获取批量抓取错误' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > 注意:现已提供该 API 的全新 [v2 版本](/zh/api-reference/endpoint/batch-scrape-get-errors),具备更完善的错误报告与调试功能。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/batch-scrape-get.mdx b/zh/api-reference/v1-endpoint/batch-scrape-get.mdx index 819d3270..3136162c 100644 --- a/zh/api-reference/v1-endpoint/batch-scrape-get.mdx +++ b/zh/api-reference/v1-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: '获取批量抓取状态' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > 注意:现已提供该 API 的[v2 版本](/zh/api-reference/endpoint/batch-scrape-get),具备更完善的状态跟踪与监控能力。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/batch-scrape.mdx b/zh/api-reference/v1-endpoint/batch-scrape.mdx index ac623724..ead4361d 100644 --- a/zh/api-reference/v1-endpoint/batch-scrape.mdx +++ b/zh/api-reference/v1-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: '批量抓取' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > 注意:全新的 [v2 版 API](/zh/api-reference/endpoint/batch-scrape) 已上线,批处理性能和可靠性进一步提升。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/crawl-active.mdx b/zh/api-reference/v1-endpoint/crawl-active.mdx index 1f73d852..88b7db72 100644 --- a/zh/api-reference/v1-endpoint/crawl-active.mdx +++ b/zh/api-reference/v1-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: '获取进行中的爬取任务' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > 注意:现已提供该 API 的全新 [v2 版本](/zh/api-reference/endpoint/crawl-active),功能更强大、性能更出色。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/crawl-delete.mdx b/zh/api-reference/v1-endpoint/crawl-delete.mdx index 1250c92e..67a6522a 100644 --- a/zh/api-reference/v1-endpoint/crawl-delete.mdx +++ b/zh/api-reference/v1-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: '取消 Crawl' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > 注意:现已提供改进功能与性能的全新 [v2 版 API](/zh/api-reference/endpoint/crawl-delete)。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/crawl-get-errors.mdx b/zh/api-reference/v1-endpoint/crawl-get-errors.mdx index d0b0d9bc..4778658e 100644 --- a/zh/api-reference/v1-endpoint/crawl-get-errors.mdx +++ b/zh/api-reference/v1-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: '获取 Crawl 错误' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > 注意:现已提供新的 [该 API 的 v2 版本](/zh/api-reference/endpoint/crawl-get-errors),功能与性能均有所提升。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/crawl-get.mdx b/zh/api-reference/v1-endpoint/crawl-get.mdx index f923a048..fbf5027b 100644 --- a/zh/api-reference/v1-endpoint/crawl-get.mdx +++ b/zh/api-reference/v1-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: '获取 Crawl 状态' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > 注意:现已提供全新的 [该 API 的 v2 版本](/zh/api-reference/endpoint/crawl-get),具有更强大的功能和更佳的性能。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/crawl-post.mdx b/zh/api-reference/v1-endpoint/crawl-post.mdx index 93d9af95..6a6564a0 100644 --- a/zh/api-reference/v1-endpoint/crawl-post.mdx +++ b/zh/api-reference/v1-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: '爬取' -openapi: 'v1-openapi POST /crawl' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > 注意:全新的 [v2 版本 API](/zh/api-reference/endpoint/crawl-post) 现已发布,提供更强大的功能和更高的性能。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/credit-usage-historical.mdx b/zh/api-reference/v1-endpoint/credit-usage-historical.mdx index e421ce1f..4e2787be 100644 --- a/zh/api-reference/v1-endpoint/credit-usage-historical.mdx +++ b/zh/api-reference/v1-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "历史积分使用情况" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- 按月返回历史积分使用情况。该端点也可选按 API key 细分使用情况。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/credit-usage.mdx b/zh/api-reference/v1-endpoint/credit-usage.mdx index b374201c..a89c3aa0 100644 --- a/zh/api-reference/v1-endpoint/credit-usage.mdx +++ b/zh/api-reference/v1-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: '额度使用情况' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > 注意:现已推出新版 [v2 API](/zh/api-reference/endpoint/credit-usage),功能更强,性能更佳。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/deep-research-get.mdx b/zh/api-reference/v1-endpoint/deep-research-get.mdx index 24078eeb..ba1890a9 100644 --- a/zh/api-reference/v1-endpoint/deep-research-get.mdx +++ b/zh/api-reference/v1-endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "深度研究" -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/deep-research.mdx b/zh/api-reference/v1-endpoint/deep-research.mdx index da8771fb..9ff85518 100644 --- a/zh/api-reference/v1-endpoint/deep-research.mdx +++ b/zh/api-reference/v1-endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Deep Research" -openapi: 'v1-openapi POST /deep-research' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- Deep Research 端点可对任意主题进行 AI 驱动的深度研究与分析。您只需提供研究查询,Firecrawl 将自主探索全网、收集相关信息,并将结果整合为全面的洞察。 diff --git a/zh/api-reference/v1-endpoint/extract-get.mdx b/zh/api-reference/v1-endpoint/extract-get.mdx index 1e143a0e..9f10e2cf 100644 --- a/zh/api-reference/v1-endpoint/extract-get.mdx +++ b/zh/api-reference/v1-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: '获取 Extract 状态' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > 注意:该 API 的 [v2 版本](/zh/api-reference/endpoint/extract-get) 已上线,功能更强、性能更佳。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/extract.mdx b/zh/api-reference/v1-endpoint/extract.mdx index 6105cbb7..c98a7fa6 100644 --- a/zh/api-reference/v1-endpoint/extract.mdx +++ b/zh/api-reference/v1-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > 注意:现已推出 [该 API 的 v2 版本](/zh/api-reference/endpoint/extract),功能更强,性能更佳。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/llmstxt-get.mdx b/zh/api-reference/v1-endpoint/llmstxt-get.mdx index 33cb7cc2..c299d914 100644 --- a/zh/api-reference/v1-endpoint/llmstxt-get.mdx +++ b/zh/api-reference/v1-endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt 状态" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/zh/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- 获取 LLMs.txt 生成任务的状态与结果。通过此端点,你可以检查生成是否已完成,并获取生成的内容。 @@ -69,7 +69,6 @@ openapi: "v1-openapi GET /llmstxt/{id}" } ``` -
### 轮询建议
diff --git a/zh/api-reference/v1-endpoint/llmstxt.mdx b/zh/api-reference/v1-endpoint/llmstxt.mdx index d1059644..514cd03f 100644 --- a/zh/api-reference/v1-endpoint/llmstxt.mdx +++ b/zh/api-reference/v1-endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "生成 LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/zh/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- LLMs.txt 生成端点可为任意网站创建 LLMs.txt 和 LLMs-full.txt 文件。这些文件以结构化、对 LLM 友好的格式呈现网站内容,便于语言模型理解和处理信息。 diff --git a/zh/api-reference/v1-endpoint/map.mdx b/zh/api-reference/v1-endpoint/map.mdx index e3498d0a..0741d073 100644 --- a/zh/api-reference/v1-endpoint/map.mdx +++ b/zh/api-reference/v1-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: 'Map' -openapi: 'v1-openapi POST /map' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > 注意:现已推出 [该 API 的 v2 版本](/zh/api-reference/endpoint/map),功能更强大,性能更出色。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/queue-status.mdx b/zh/api-reference/v1-endpoint/queue-status.mdx index b4e08123..65f78221 100644 --- a/zh/api-reference/v1-endpoint/queue-status.mdx +++ b/zh/api-reference/v1-endpoint/queue-status.mdx @@ -1,6 +1,6 @@ --- title: "队列状态" -openapi: 'v1-openapi GET /team/queue-status' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/queue-status' --- > 注意:现已推出该 API 的 [v2 版本](/zh/api-reference/endpoint/queue-status),功能与性能均有所提升。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/scrape.mdx b/zh/api-reference/v1-endpoint/scrape.mdx index 38d6990a..40881f3c 100644 --- a/zh/api-reference/v1-endpoint/scrape.mdx +++ b/zh/api-reference/v1-endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > 注意:全新的 [v2 版本 API](/zh/api-reference/endpoint/scrape) 已上线,功能更强、性能更佳。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/search.mdx b/zh/api-reference/v1-endpoint/search.mdx index aa5102b0..c18fb066 100644 --- a/zh/api-reference/v1-endpoint/search.mdx +++ b/zh/api-reference/v1-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > 注意:现已推出该 API 的全新 [v2 版本](/zh/api-reference/endpoint/search),功能与性能均有升级。 diff --git a/zh/api-reference/v1-endpoint/token-usage-historical.mdx b/zh/api-reference/v1-endpoint/token-usage-historical.mdx index bd53e9ff..7b158091 100644 --- a/zh/api-reference/v1-endpoint/token-usage-historical.mdx +++ b/zh/api-reference/v1-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "历史 Token 使用情况" -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- 按月返回历史 Token 使用情况。该端点还可选按 API key 对使用情况进行细分。 \ No newline at end of file diff --git a/zh/api-reference/v1-endpoint/token-usage.mdx b/zh/api-reference/v1-endpoint/token-usage.mdx index 33cd7cfe..2f0370fc 100644 --- a/zh/api-reference/v1-endpoint/token-usage.mdx +++ b/zh/api-reference/v1-endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: '令牌用量' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > 注意:全新的 [该 API 的 v2 版本](/zh/api-reference/endpoint/token-usage) 现已上线,具备更强功能与更高性能。 \ No newline at end of file diff --git a/zh/api-reference/v1-openapi.json b/zh/api-reference/v1-openapi.json new file mode 100644 index 00000000..49f7db10 --- /dev/null +++ b/zh/api-reference/v1-openapi.json @@ -0,0 +1,3656 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "用于与 Firecrawl 服务交互,以进行网页抓取和爬取任务的 API。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "抓取单个 URL,并可选择使用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要爬取的 URL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果为 true,将对本次抓取启用零数据保留策略。要开启此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "抓取多个 URL,并可选用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "要爬取的 URL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于接收 webhook 的 URL。该 webhook 会在批量抓取开始时触发(batch_scrape.started)、每个页面被抓取时触发(batch_scrape.page),以及在批量抓取完成时触发(batch_scrape.completed 或 batch_scrape.failed)。其响应与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "发送到 webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将包含在此次抓取的所有 webhook 负载中的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "要发送到 webhook URL 的事件类型(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数量。此参数用于为本次批量抓取设置并发上限。若未指定,则本次批量抓取将遵循你的团队并发限制。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "如果在 urls 数组中指定了无效 URL,这些 URL 会被忽略。它们不会导致整个请求失败,而是会基于剩余的有效 URL 创建一个批量抓取任务,并在响应的 invalidURLs 字段中返回这些无效 URL。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "若为 true,则此次批量抓取任务将不保留任何数据。要启用此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取作业的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取作业的状态", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消批量抓取作业", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "取消成功", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "未找到批量抓取任务", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取任务 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取作业的错误信息", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抓取任务 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取爬取任务状态", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消抓取作业", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "已成功取消", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "未找到抓取任务", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抓取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取爬取任务的错误信息", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要付款", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "根据选项爬取多个 URL", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "开始爬取时使用的起始 URL" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "根据 URL pathname 的正则表达式模式,将匹配的 URL 排除在抓取之外。例如,如果你在基础 URL firecrawl.dev 上设置 `\"excludePaths\": [\"blog/.*\"]`,那么所有匹配该模式的结果都会被排除,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于在抓取中指定要包含哪些 URL 的 URL 路径名正则表达式模式。只有与指定模式匹配的路径才会包含在响应中。例如,如果你为基础 URL firecrawl.dev 设置 `\"includePaths\": [\"blog/.*\"]`,则只有与该模式匹配的结果会被包含,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "maxDepth": { + "type": "integer", + "description": "从输入 URL 的基础路径开始可爬取的最大绝对深度。简单来说,就是被抓取 URL 的路径名中允许包含的斜杠数量上限。", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "基于发现顺序的最大抓取深度。根站点及站点地图中的页面的发现深度为 0。比如,如果你将其设置为 1,并启用 ignoreSitemap,你只会抓取输入的 URL,以及该页面上所有被链接到的 URL。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "爬取时忽略网站的 sitemap", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "请勿对同一路径使用不同(或无)查询参数进行重复抓取", + "default": false + }, + "limit": { + "type": "integer", + "description": "要抓取的最大页面数。默认上限为 10000。", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ 已弃用:请改用“crawlEntireDomain”。此选项允许爬虫跟踪指向同级或父级 URL 的内部链接,而不仅限于子路径。", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "允许爬虫跟踪到同级或父级的站内链接,而不仅仅是子路径。\n\nfalse:只爬取更深层(子级)URL。\n→ 例如 /features/feature-1 → /features/feature-1/tips ✅\n→ 不会跟踪 /pricing 或 / ❌\n\ntrue:爬取任意站内链接,包括同级和父级。\n→ 例如 /features/feature-1 → /pricing、/ 等 ✅\n\n当需要在嵌套路径之外更广泛地覆盖站内链接时,将其设置为 true。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "允许爬虫跟随链接访问外部网站。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "允许爬虫跟随指向主域子域的链接。", + "default": false + }, + "delay": { + "type": "number", + "description": "每次抓取之间的延迟时间(秒)。有助于遵守网站的速率限制。" + }, + "maxConcurrency": { + "type": "integer", + "description": "最大抓取并发数。该参数用于为本次抓取任务设置并发上限;如果未指定,将沿用你团队的并发限制。" + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于接收 webhook 的 URL。该 webhook 会在以下事件中触发:当爬取开始时(crawl.started)、每完成一页爬取时(crawl.page),以及爬取结束时(crawl.completed 或 crawl.failed)。响应将与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "要发送到 webhook URL 的 HTTP 请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将包含在本次抓取所有 webhook 负载中的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "要发送到 webhook URL 的事件类型。(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果为 true,则本次爬取将不会保留任何数据。若要启用此功能,请联系 help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "基于选项对多个 URL 进行映射", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "开始爬取时使用的基础 URL" + }, + "search": { + "type": "string", + "description": "用于映射的搜索查询。在 Alpha 阶段,搜索功能中的「智能」部分最多只会处理 500 条搜索结果。不过,如果 Map 找到更多结果,则不会对这些结果施加任何限制。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "抓取网站时忽略其 sitemap。", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "仅返回网站站点地图中包含的链接", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "包含该网站子域名", + "default": true + }, + "limit": { + "type": "integer", + "description": "要返回的最大链接数", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "超时时间(毫秒)。默认情况下没有超时限制。" + }, + "location": { + "type": "object", + "description": "请求的地理位置设置。指定后(如果可用),将使用相应的代理,并模拟对应的语言和时区设置。如果未指定,默认值为“US”。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 国家代码(例如:US、AU、DE、JP)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "请求中按优先级排序的首选语言和区域设置。默认使用指定位置的语言。参见 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "需要付款", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "利用 LLM 从网页中提取结构化数据", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "用于提取数据的 URL。URL 应采用 glob 格式。" + } + }, + "prompt": { + "type": "string", + "description": "用于引导抽取过程的提示词" + }, + "schema": { + "type": "object", + "description": "用于定义提取后数据结构的模式。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "当设为 true 时,提取过程会通过网页搜索获取更多数据", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "为 true 时,网站扫描过程中会忽略 sitemap.xml 文件", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "设为 true 时,还会扫描所提供 URL 的子域名", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "如果为 true,用于提取数据的来源将会包含在响应的 `sources` 字段中", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "如果在 urls 数组中指定了无效 URL,这些 URL 会被忽略。请求不会因此整体失败,而是会使用剩余的有效 URL 执行提取操作,并在响应的 invalidURLs 字段中返回这些无效 URL。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "提取成功", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "无效请求", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "提取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取提取任务的状态", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "获取当前已认证团队的所有活跃抓取任务", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "爬取任务的唯一标识符" + }, + "teamId": { + "type": "string", + "description": "拥有此抓取任务的团队 ID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "爬取的起始 URL" + }, + "options": { + "type": "object", + "description": "本次抓取使用的爬虫配置", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "需要付款", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "针对查询启动深度研究操作", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "需要研究的查询" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "研究迭代最大深度" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "时间限制(秒)" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "要分析的 URL 数量上限" + }, + "analysisPrompt": { + "type": "string", + "description": "用于最终分析的提示词。可用于按特定方式格式化最终分析的 Markdown。" + }, + "systemPrompt": { + "type": "string", + "description": "供研究代理使用的系统提示词,可用于将其引导到特定的研究方向。" + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "JSON 输出选项", + "properties": { + "schema": { + "type": "object", + "description": "用于 JSON 输出的模式定义。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "systemPrompt": { + "type": "string", + "description": "用于生成 JSON 输出的系统提示" + }, + "prompt": { + "type": "string", + "description": "用于生成 JSON 输出的提示" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "研究任务已成功开始", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "研究任务的 ID" + } + } + } + } + } + }, + "400": { + "description": "请求参数无效", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "研究任务 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取深度研究任务的状态和结果", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "仅在使用 JSON 格式时显示", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的标题,类型可以是字符串或字符串数组" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的描述,可以是字符串或字符串数组" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到研究作业", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "获取当前团队的剩余额度", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "团队剩余额度", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "当前套餐内的基础积分数量。本数值不包括优惠券积分、积分包或自动充值获得的积分。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "计费周期的开始日期。如果使用免费方案,则为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期。使用免费方案时为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到额度使用情况信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "获取已认证团队的历史额度使用记录", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "按 API 密钥获取历史额度使用记录", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "账单周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "计费周期中使用的 API 密钥名称。如果 byApiKey 为 false(默认值),则为 null。", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "计费周期内已使用的总额度", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "获取当前已认证团队的剩余 Token(仅限 Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "团队剩余 Token 数量", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "方案中包含的 Token 数量。不包括优惠券提供的 Token。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "计费周期的起始日期。若使用免费计划,则为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期。使用免费套餐时为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到 Token 使用情况", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "获取已认证团队的历史 Token 用量(仅限 Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "按 API 密钥获取历史 Token 使用量", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "在该计费周期内使用的 API 密钥名称。若 byApiKey 为 false(默认),则为 null", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "计费周期内消耗的 Token 总数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "团队抓取队列指标", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "当前队列中的任务数量" + }, + "activeJobsInQueue": { + "type": "number", + "description": "当前正在运行的任务数" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "当前排队中的任务数" + }, + "maxConcurrency": { + "type": "number", + "description": "根据你的套餐可同时运行的最大并发任务数" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "最近一次成功作业的时间戳", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "搜索并按需抓取搜索结果", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "搜索查询" + }, + "limit": { + "type": "integer", + "description": "返回的最大结果数", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "基于时间的搜索参数。支持预定义时间范围(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)以及自定义日期范围(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)。" + }, + "location": { + "type": "string", + "description": "搜索结果的 location 参数" + }, + "timeout": { + "type": "integer", + "description": "超时时间(毫秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "会从搜索结果中排除对其他 Firecrawl 端点无效的 URL。这样当你将搜索结果数据传递到其他 Firecrawl API 端点时,可以减少出错。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "搜索结果抓取选项", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "来自搜索结果的标题" + }, + "description": { + "type": "string", + "description": "搜索结果中的描述" + }, + "url": { + "type": "string", + "description": "搜索结果的URL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "在请求抓取时返回的 Markdown 内容" + }, + "html": { + "type": "string", + "nullable": true, + "description": "若在 formats 中指定,则返回 HTML 内容" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求,则会返回原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果在 formats 中有请求,则返回发现的链接" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求了截图,将返回截图的 URL。截图在 24 小时后过期,之后将无法再下载。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的标题,可以是字符串或字符串数组。" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的描述,可以是字符串或字符串数组" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "出现问题时显示的警告信息" + } + } + } + } + } + }, + "408": { + "description": "请求超时", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "为网站生成 LLMs.txt 文件", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于生成 LLMs.txt 的源 URL" + }, + "maxUrls": { + "type": "integer", + "description": "要分析的 URL 最大数量", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "在响应中包含全文内容", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "LLMs.txt 生成任务已成功启动", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "LLMs.txt 生成作业的 ID" + } + } + } + } + } + }, + "400": { + "description": "无效的请求参数", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "LLMs.txt 生成作业的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取 LLMs.txt 生成作业的状态和结果", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "生成的 LLMs.txt 文件内容" + }, + "llmsfulltxt": { + "type": "string", + "description": "当 showFullText 为 true 时的完整文本内容" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "生成内容何时过期" + } + } + } + } + } + }, + "404": { + "description": "未找到 LLMs.txt 生成作业", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "仅返回页面的主体内容,不包括页眉、导航、页脚等。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "需要包含在输出中的标签。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "在输出结果中要排除的标签。" + }, + "maxAge": { + "type": "integer", + "description": "如果页面的缓存版本的生成时间距现在小于此值(毫秒),则返回该缓存版本;如果缓存版本早于此值,则会重新抓取页面。如果你不需要极其实时的数据,启用此选项可以将抓取速度最多提升 5 倍。默认值为 0,表示禁用缓存。", + "default": 0 + }, + "headers": { + "type": "object", + "description": "随请求发送的请求头。可用于携带 cookies、user-agent 等信息。" + }, + "waitFor": { + "type": "integer", + "description": "设置在获取内容前的延迟时间(毫秒),以便页面有足够时间加载完成。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "若要模拟移动端抓取,请将其设置为 true。适用于测试响应式页面并获取移动端截图。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "在发送请求时跳过 TLS 证书校验", + "default": false + }, + "timeout": { + "type": "integer", + "description": "请求超时时间(毫秒)", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "控制在爬取过程中如何处理 PDF 文件。为 true 时,会提取 PDF 内容并转换为 Markdown 格式,按页数计费(每页 1 个积分)。为 false 时,会返回以 base64 编码的 PDF 文件,统一按 1 个积分计费。", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "JSON 配置对象", + "properties": { + "schema": { + "type": "object", + "description": "用于提取的数据模式(可选)。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "systemPrompt": { + "type": "string", + "description": "用于抽取的系统提示(可选)" + }, + "prompt": { + "type": "string", + "description": "在无 schema 情况下用于抽取的数据提示词(可选)" + } + } + }, + "actions": { + "type": "array", + "description": "在抓取页面内容前需要执行的 actions", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "等待指定的毫秒数" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "等待的时间(毫秒)" + }, + "selector": { + "type": "string", + "description": "用于定位该元素的查询选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "进行截图。链接将位于响应的 `actions.screenshots` 数组中。" + }, + "fullPage": { + "type": "boolean", + "description": "是否截取整页截图,或仅截取当前视口。", + "default": false + }, + "quality": { + "type": "integer", + "description": "截图质量,取值范围为 1 至 100,100 为最高质量。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "单击元素" + }, + "selector": { + "type": "string", + "description": "用于查找元素的查询选择器", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "点击所有匹配该选择器的元素,而不仅仅是第一个元素。如果没有元素匹配该选择器,也不会抛出错误。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "在输入框、文本区域或 contenteditable 元素中写入文本。注意:在写入之前,必须先通过一次“click”操作使该元素获得焦点。文本将以逐字符输入的方式进行,以模拟键盘敲击。" + }, + "text": { + "type": "string", + "description": "输入文本", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "请在页面上按下任意键。按键代码请参考:https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "在页面上按下任意键" + }, + "key": { + "type": "string", + "description": "按键", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "滚动页面或特定元素" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "滚动方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "需要滚动的元素的查询选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "抓取当前页面内容,同时返回其 URL 和 HTML。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "在页面上执行 JavaScript 代码" + }, + "script": { + "type": "string", + "description": "待执行的 JavaScript 代码", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "生成当前页面的 PDF。该 PDF 将在响应中的 `actions.pdfs` 数组里返回。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "生成的 PDF 的页面大小", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "是否以横向页面方向生成 PDF 文件", + "default": false + }, + "scale": { + "type": "number", + "description": "生成的 PDF 的缩放比例", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "请求的地理位置设置。指定后,如果可用,将使用合适的代理服务器,并模拟相应的语言和时区设置。如果未指定,默认值为“US”。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 两位字母国家代码(例如:“US”、“AU”、“DE”、“JP”)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "按照优先级为本次请求指定首选语言和区域设置。默认使用所指定地区的语言。详见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "从输出中移除所有 Base64 图片,以避免内容过于冗长。图片的替代文本(alt 文本)会保留在输出中,但其 URL 会被占位符替换。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "启用广告拦截和 Cookie 弹窗屏蔽。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "指定要使用的代理类型。\n\n - **basic**:用于抓取没有或仅有基础反爬虫机制的网站的代理。速度快,通常可用。\n - **stealth**:用于抓取具备高级反爬虫机制的网站的隐身代理。速度较慢,但在某些网站上更可靠。每次请求最多消耗 5 点积分。\n - **auto**:如果 basic 代理抓取失败,Firecrawl 将自动改用 stealth 代理重试抓取。如果使用 stealth 的重试成功,本次抓取将收取 5 点积分;如果首次使用 basic 抓取就成功,则仅收取常规费用。\n\n如果你未指定代理类型,Firecrawl 将默认使用 basic。" + }, + "storeInCache": { + "type": "boolean", + "description": "如果为 true,该页面将被存储到 Firecrawl 的索引和缓存中。若你的抓取活动可能涉及数据保护方面的问题,将其设置为 false 会更合适。使用某些与敏感抓取相关的参数(如 actions、headers)时,该参数会被强制设为 false。", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "输出中要包含的formats。", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "用于 changeTracking 的选项(Beta)。仅当在 formats 中包含 'changeTracking' 时才适用。使用 changeTracking 时,还必须同时指定 'markdown' 格式。", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "用于更改跟踪的模式。`git-diff` 提供详细的差异对比,而 `json` 用于比较提取的 JSON 数据。" + }, + "schema": { + "type": "object", + "description": "在使用 `json` 模式时用于 JSON 提取的 schema。用于定义要提取和对比的数据结构。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "prompt": { + "type": "string", + "description": "在使用 JSON 模式进行变更跟踪时要使用的提示。如果未提供,则会使用默认提示。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "用于变更跟踪的标签。标签可以将变更跟踪历史划分为不同的「分支」,使用特定标签的变更跟踪只会与同一标签下的抓取结果进行比较。如果未提供,则会使用默认标签(null)。" + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `formats` 中包含 `html` 时,返回该页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `formats` 中包含 `rawHtml`,则为页面的原始 HTML 内容" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 `formats` 中包含 `screenshot`,将返回该页面的截图。截图将在 24 小时后失效,之后将无法再下载。" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "当 `formats` 中包含 `links` 时,页面上的链接列表" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` 参数中各项 actions 的执行结果。仅当请求中提供了 `actions` 参数时才会包含此字段。", + "properties": { + "screenshots": { + "type": "array", + "description": "截图 URL,与提供的截图 actions 顺序一致。截图将在 24 小时后过期,之后将无法再下载。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "按照提供的 scrape actions 的顺序抓取内容。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "JavaScript 的返回值,其顺序与提供的 executeJavascript actions 相同。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "生成的 PDF,其顺序与提供的 pdf actions 保持一致。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的关键词,可以为字符串或字符串数组" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "此页面的其他语言版本" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "在使用 LLM 提取时显示。根据定义的 schema 从页面中提取的数据。", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "在使用 LLM Extraction 时显示。警告信息会提示你提取过程中的任何问题。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "当 `formats` 中包含 `changeTracking` 时,会返回变更追踪信息。仅在请求 `changeTracking` format 时才会提供。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "用于与当前页面进行比较的上一次抓取时间戳。如果不存在之前的抓取记录,则为 null。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "两个页面版本比较的结果。`new` 表示该页面之前不存在,`same` 表示内容没有变化,`changed` 表示内容发生了变化,`removed` 表示该页面已被移除。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "当前页面/URL 的可见性。\"visible\" 表示该 URL 是通过自然路径(链接或 sitemap)发现的,\"hidden\" 表示该 URL 是通过之前抓取结果的记忆发现的。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "在使用“git-diff”模式时生成的 Git 风格差异(diff)。仅在模式设置为“git-diff”时才会出现。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "在使用 `json` 模式时的 JSON 比较结果。仅在模式设置为 `json` 时可用。它会根据 `schema` 中定义的类型,返回 `previous` 和 `current` 抓取结果中所有键及其对应值的列表。示例参见[这里](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "当前爬取任务的状态。可能为 `scraping`、`completed` 或 `failed` 之一。" + }, + "total": { + "type": "integer", + "description": "尝试爬取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "成功爬取的页面数量。" + }, + "creditsUsed": { + "type": "integer", + "description": "本次爬取所消耗的额度数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "抓取任务到期的日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取后续 10MB 数据的 URL。如果抓取尚未完成或响应大小超过 10MB,则会返回该字段。" + }, + "data": { + "type": "array", + "description": "爬取数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,页面内容的 HTML 格式版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则返回页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "当 `includeLinks` 为 true 时,页面上的链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` 为 true 时的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的标题,可以是一个字符串或字符串数组" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的描述信息,可以是字符串或字符串数组" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "从页面中提取的语言,可以是字符串或字符串数组" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的关键词,可以是字符串或字符串数组。" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "页面的其他语言版本" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从 HTML 中提取的其他元数据,可以为字符串或字符串数组" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "抓取任务错误及其详情", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失败时间的 ISO 时间戳" + }, + "url": { + "type": "string", + "description": "已爬取 URL" + }, + "error": { + "type": "string", + "description": "错误信息" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "在抓取时尝试访问但被 robots.txt 阻止的 URL 列表", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "批量抓取的当前状态。状态可能为 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试抓取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "已成功抓取的页面数量。" + }, + "creditsUsed": { + "type": "integer", + "description": "该批量抓取所使用的积分数量。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "批量抓取任务的到期时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取后续 10MB 数据的 URL。如果批量抓取任务尚未完成,或响应数据大于 10MB,则会返回此 URL。" + }, + "data": { + "type": "array", + "description": "批量爬取的数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "`includeHtml` 为 true 时,页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则为页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果 `includeLinks` 为 true,则包含页面上的链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "当 `includeScreenshot` 为 true 时的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的标题,可以是字符串或字符串数组" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的描述,可以是一个字符串或字符串数组" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "从页面提取的语言,可以是一个字符串或字符串数组" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的关键词,可以为字符串或字符串数组" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "此页面的其他语言版本" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从 HTML 中提取的其他元数据,可以是字符串或字符串数组" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则该字段是一个数组,包含请求中指定的无效 URL。若没有无效 URL,则该数组为空。若 ignoreInvalidURLs 为 false,则该字段为 undefined。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则此字段是一个数组,包含请求中指定的无效 URL。若没有无效 URL,则该数组为空。若 ignoreInvalidURLs 为 false,则此字段为 undefined。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "提取作业的当前状态" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/zh/api-reference/v2-openapi.json b/zh/api-reference/v2-openapi.json new file mode 100644 index 00000000..57ef0680 --- /dev/null +++ b/zh/api-reference/v2-openapi.json @@ -0,0 +1,3814 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "用于与 Firecrawl 服务交互,执行网页抓取和爬取任务的 API。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "抓取单个 URL,并可选用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要爬取的 URL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果为 true,则本次抓取将不保留任何数据。要启用此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "抓取多个 URL,并可选择使用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "要爬取的 URL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于接收 webhook 的 URL。它会在批量抓取开始时触发(batch_scrape.started)、每个页面被抓取时触发(batch_scrape.page),以及在批量抓取完成时触发(batch_scrape.completed 或 batch_scrape.failed)。响应与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "发送到 webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将添加到此次爬取的所有 webhook 有效载荷中的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "要发送到该 webhook URL 的事件类型。(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数。此参数用于为本次批量抓取设置并发上限。若未指定,批量抓取将遵循你的团队的并发限制。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "如果在 urls 数组中指定了无效的 URL,这些 URL 会被忽略。它们不会导致整个请求失败,而是会使用剩余的有效 URL 创建一次批量抓取任务,并在响应的 invalidURLs 字段中返回这些无效的 URL。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果设为 true,将为本次批量抓取启用零数据留存。要启用此功能,请联系 help@firecrawl.dev。" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取作业的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取作业状态", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消批量抓取任务", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "取消成功", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "未找到批量抓取作业", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量爬取任务的错误信息", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要支付", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "爬取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取爬取任务状态", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消抓取任务", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "已成功取消", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "未找到抓取任务", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "爬取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取抓取任务的错误详情", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "根据参数爬取多个 URL", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于开始爬取的基础 URL" + }, + "prompt": { + "type": "string", + "description": "用于根据自然语言生成爬虫选项(包括下方的所有参数)的提示词。显式指定的参数会覆盖生成的对应参数。" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于将匹配的 URL 排除在爬取之外的 URL 路径名正则表达式模式。例如,如果你为基础 URL firecrawl.dev 设置 `\"excludePaths\": [\"blog/.*\"]`,那么所有匹配该模式的结果都会被排除,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于在抓取中指定要包含哪些 URL 的 URL 路径名正则表达式模式。只有路径与指定模式匹配的 URL 才会出现在响应中。比如,如果你为基础 URL firecrawl.dev 设置 `\"includePaths\": [\"blog/.*\"]`,则只有匹配该模式的结果会被返回,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "根据页面被发现的顺序设定的最大爬取深度。根站点和 sitemap 中的页面的发现深度为 0。比如,如果你将其设置为 1,并将 `sitemap` 设置为 `'skip'`,则只会爬取你输入的 URL 以及该页面上链接到的所有 URL。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "爬取时使用的 sitemap 模式。如果将其设置为「skip」,爬虫将忽略网站的 sitemap,只爬取你输入的 URL,并从该页面开始继续发现和爬取后续页面。", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "不要对同一路径使用不同(或没有)查询参数重复抓取", + "default": false + }, + "limit": { + "type": "integer", + "description": "最大爬取页数。默认值为 10000。", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "允许爬虫不仅跟踪子路径,还能跟踪同级或父级的站内链接。\n\nfalse:只爬取更深层(子级)URL。\n→ 例如 /features/feature-1 → /features/feature-1/tips ✅\n→ 不会跟踪 /pricing 或 / ❌\n\ntrue:会爬取任意站内链接,包括同级和父级。\n→ 例如 /features/feature-1 → /pricing、/ 等 ✅\n\n如需在嵌套路径之外更广泛地覆盖站内页面,请将其设置为 true。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "允许爬虫通过链接访问外部网站。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "允许爬虫通过链接继续爬取主域名下的子域名。", + "default": false + }, + "delay": { + "type": "number", + "description": "两次抓取之间的延迟时间(以秒为单位)。有助于遵守网站的速率限制。" + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数量。此参数允许你为本次抓取设置并发上限。如果未指定,则本次抓取将遵循你所在团队的并发限制。" + }, + "webhook": { + "type": "object", + "description": "一个 Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于接收 webhook 的 URL。该 webhook 会在以下事件触发:爬取开始时(crawl.started)、每当有页面被爬取时(crawl.page)、以及爬取结束时(crawl.completed 或 crawl.failed)。其响应将与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "发送到 webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将包含在本次抓取所有 webhook 负载中的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "应发送到 webhook URL 的事件类型。(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果设置为 true,将为本次抓取任务启用零数据保留。要启用此功能,请联系 help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "需要支付", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/params-preview": { + "post": { + "summary": "预览由自然语言提示词生成的爬取参数", + "operationId": "crawlParamsPreview", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要抓取的 URL" + }, + "prompt": { + "type": "string", + "maxLength": 10000, + "description": "用自然语言编写的、描述你想爬取内容的提示词" + } + }, + "required": [ + "url", + "prompt" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应(包含生成的爬取参数)", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要爬取的 URL" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "包含的 URL 模式" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "排除的 URL 模式" + }, + "maxDepth": { + "type": "integer", + "description": "最大爬取深度" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "最大探索深度" + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "是否爬取整个域名" + }, + "allowExternalLinks": { + "type": "boolean", + "description": "是否允许外部链接" + }, + "allowSubdomains": { + "type": "boolean", + "description": "是否允许子域名" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "站点地图处理策略" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "是否忽略查询参数" + }, + "deduplicateSimilarURLs": { + "type": "boolean", + "description": "是否对相似 URL 去重" + }, + "delay": { + "type": "number", + "description": "请求间隔(毫秒)" + }, + "limit": { + "type": "integer", + "description": "最大抓取页面数" + } + } + } + } + } + } + } + }, + "400": { + "description": "错误请求", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid request parameters" + } + } + } + } + } + }, + "401": { + "description": "未授权", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Unauthorized" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Failed to process natural language prompt" + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "基于选项对多个 URL 进行映射", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于开始爬取的起始 URL" + }, + "search": { + "type": "string", + "description": "指定搜索查询,以按相关性对结果排序。示例:使用“blog”将返回在 URL 中包含单词“blog”的网址,并按相关性排序。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "用于映射(mapping)时的 sitemap 模式。若设置为 `skip`,则不会使用 sitemap 来发现 URL。若设置为 `only`,则只会返回出现在 sitemap 中的 URL。默认值为 `include`,此时会同时使用 sitemap 和其他方式来发现 URL。", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "包含此网站的子域名", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "不要返回包含查询参数的 URL", + "default": true + }, + "limit": { + "type": "integer", + "description": "返回的最大链接数量", + "default": 5000, + "maximum": 100000 + }, + "timeout": { + "type": "integer", + "description": "以毫秒为单位的超时时间。默认情况下不设置超时。" + }, + "location": { + "type": "object", + "description": "请求的地域设置。指定后,如果有可用代理,将使用相应代理,并模拟对应的语言和时区设置。若未指定,则默认为“US”。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 两位字母国家/地区代码(例如:'US'、'AU'、'DE'、'JP')", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "按优先级排列的本次请求的首选语言和区域设置。默认使用指定位置对应的语言。参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "利用 LLM 从页面提取结构化数据", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "要从中提取数据的 URL。URL 应为 glob 格式。" + } + }, + "prompt": { + "type": "string", + "description": "用于引导提取过程的提示词" + }, + "schema": { + "type": "object", + "description": "用于定义提取后数据结构的 Schema。必须符合 [JSON Schema](https://json-schema.org/) 标准。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "为 true 时,提取过程将通过 Web 搜索获取更多数据", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "如果为 true,则在网站扫描过程中会忽略 sitemap.xml 文件", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "设为 true 时,也会扫描所提供 URL 的子域名", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "当为 true 时,用于提取数据的来源将作为 `sources` 键包含在响应中", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "如果在 urls 数组中指定了无效的 URL,这些 URL 将被忽略。请求不会因此整体失败,系统会改为使用剩余的有效 URL 执行提取操作,并在响应的 invalidURLs 字段中返回这些无效的 URL。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "提取成功", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "无效请求", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "提取作业的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取提取任务的状态", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "获取当前认证团队的所有进行中的爬取任务", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "爬取任务的唯一标识符" + }, + "teamId": { + "type": "string", + "description": "此爬取任务所属团队的 ID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "爬取的起始 URL" + }, + "options": { + "type": "object", + "description": "本次抓取使用的爬虫配置", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "获取当前已认证团队的剩余额度", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "团队剩余额度", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "套餐中自带的额度数量。不包括优惠券额度、额度包或自动充值获得的额度。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期。使用免费套餐时为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期。若使用免费套餐,则为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到额度使用信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "获取已认证团队的历史额度使用记录", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "按 API 密钥查询历史额度用量", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "该计费周期中使用的 API 密钥名称。若 byApiKey 为 false(默认),则为 null", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "账单周期内使用的积分总数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "获取已认证团队的剩余 tokens(仅限 Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "团队剩余 Token 数量", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "方案内包含的 token 数量。不包括优惠券赠送的 token。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "计费周期的开始日期。如果使用免费套餐,则为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期。使用免费套餐时为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到 Token 使用信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "获取已认证团队的历史 token 用量(仅限 Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "通过 API 密钥获取历史 Token 用量", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "当前计费周期所使用的 API 密钥名称。若 byApiKey 为 false(默认值),则为 null", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "计费周期内使用的总代币数量", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/team/queue-status": { + "get": { + "summary": "团队抓取队列指标", + "operationId": "getQueueStatus", + "tags": [ + "Miscellaneous" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "jobsInQueue": { + "type": "number", + "description": "当前队列中的任务数量" + }, + "activeJobsInQueue": { + "type": "number", + "description": "当前正在运行的任务数量" + }, + "waitingJobsInQueue": { + "type": "number", + "description": "当前等待中的任务数" + }, + "maxConcurrency": { + "type": "number", + "description": "根据您的套餐所允许的最大并发运行任务数" + }, + "mostRecentSuccess": { + "type": "string", + "format": "date-time", + "description": "最近一次成功作业的时间戳", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "搜索,并可选择抓取搜索结果", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "搜索查询语句" + }, + "limit": { + "type": "integer", + "description": "返回结果的最大数量", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "基于时间的搜索参数。支持预定义时间范围(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)以及自定义日期范围(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)。" + }, + "location": { + "type": "string", + "description": "用于搜索结果的 location 参数" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "要搜索的数据源。将决定响应中可用的数组。", + "default": [ + "web" + ] + }, + "categories": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "GitHub", + "properties": { + "type": { + "type": "string", + "enum": [ + "github" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Research", + "properties": { + "type": { + "type": "string", + "enum": [ + "research" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "用于筛选结果的分类" + }, + "tbs": { + "type": "string", + "description": "按时间筛选的搜索参数。支持预定义时间范围(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)和自定义日期范围(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "用于搜索结果的位置参数(例如 `San Francisco,California,United States`)。为获得最佳效果,请同时设置该参数和 `country` 参数。" + }, + "country": { + "type": "string", + "description": "用于按地域定向搜索结果的 ISO 国家代码(例如 `US`)。为获得最佳效果,请同时设置此参数和 `location` 参数。", + "default": "US" + }, + "timeout": { + "type": "integer", + "description": "超时(毫秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "从搜索结果中排除对其他 Firecrawl 端点无效的 URL。这样在将搜索结果数据输送到其他 Firecrawl API 端点时,有助于减少错误。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "抓取搜索结果的选项", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "搜索结果标题" + }, + "description": { + "type": "string", + "description": "搜索结果中的描述" + }, + "url": { + "type": "string", + "description": "搜索结果的URL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "在请求抓取时返回的 Markdown 内容" + }, + "html": { + "type": "string", + "nullable": true, + "description": "在 formats 中请求时返回 HTML 内容" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求,则为原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果在指定的 formats 中请求,将返回找到的链接" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求截图,则会返回截图 URL。截图在 24 小时后过期,届时将无法再下载。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "搜索结果中的标题" + }, + "imageUrl": { + "type": "string", + "description": "图片 URL" + }, + "imageWidth": { + "type": "integer", + "description": "图片宽度" + }, + "imageHeight": { + "type": "integer", + "description": "图像高度" + }, + "url": { + "type": "string", + "description": "搜索结果的URL" + }, + "position": { + "type": "integer", + "description": "搜索结果的位置" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "文章标题" + }, + "snippet": { + "type": "string", + "description": "文章摘录" + }, + "url": { + "type": "string", + "description": "文章的 URL 地址" + }, + "date": { + "type": "string", + "description": "文章日期" + }, + "imageUrl": { + "type": "string", + "description": "文章图片的 URL" + }, + "position": { + "type": "integer", + "description": "文章位置" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "在请求抓取时返回的 Markdown 内容" + }, + "html": { + "type": "string", + "nullable": true, + "description": "在 formats 中请求时返回的 HTML 内容" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "在 formats 中请求时返回的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果在 formats 中请求,则返回找到的链接" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求截图,将返回其 URL。截图会在 24 小时后过期,之后将无法再下载。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "搜索结果。可用的数组取决于你在请求中指定的源。默认情况下会返回 `web` 数组。" + }, + "warning": { + "type": "string", + "nullable": true, + "description": "在出现任何问题时显示的警告消息" + } + } + } + } + } + }, + "408": { + "description": "请求超时", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "是否截取整页截图,或仅限于当前视口。", + "default": false + }, + "quality": { + "type": "integer", + "description": "截图质量,范围为 1 到 100,100 为最高质量。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "视口宽度(像素)" + }, + "height": { + "type": "integer", + "description": "视口高度(像素)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "用于 JSON 输出的 Schema,必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "prompt": { + "type": "string", + "description": "用于生成 JSON 输出的提示" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "用于变更跟踪的模式。`git-diff` 提供详细的差异对比,而 `json` 则对比提取出的 JSON 数据。" + }, + "schema": { + "type": "object", + "description": "在使用「json」模式进行 JSON 提取时所用的 schema。用于定义要提取和对比的数据结构。必须符合 [JSON Schema](https://json-schema.org/) 标准。" + }, + "prompt": { + "type": "string", + "description": "在使用 `json` 模式进行变更跟踪时要使用的提示词。如果未提供,将使用默认提示词。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "用于变更跟踪的标签。标签可以将变更跟踪历史划分为不同的「分支」,带有特定标签的变更跟踪只会与同一标签下的抓取结果进行比较。如果未提供,则会使用默认标签(null)。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Branding", + "properties": { + "type": { + "type": "string", + "enum": [ + "branding" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "要在响应中包含的输出 formats。你可以指定一个或多个 formats,既可以使用字符串(例如:`'markdown'`),也可以使用带有其他选项的对象(例如:`{ type: 'json', schema: {...} }`)。某些 formats 需要配置特定选项。示例:`['markdown', { type: 'json', schema: {...} }]`。", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "仅返回页面的主要内容,不包含 header、nav、footer 等元素。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "在输出中要包含的标签。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "在输出中需要排除的标签。" + }, + "maxAge": { + "type": "integer", + "description": "如果页面的缓存版本的生成时间距今少于该毫秒数,则返回该缓存页面;如果缓存版本距今超过该时间,则会重新抓取页面。若你不需要特别新的数据,启用此选项可将抓取速度提升至 5 倍。默认值为 2 天。", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "随请求发送的请求头。可用于传递 cookies、User-Agent 等信息。" + }, + "waitFor": { + "type": "integer", + "description": "指定在抓取内容前的延迟时间(毫秒),以便页面有足够时间完成加载。该等待时间是在 Firecrawl 的智能等待功能基础上的额外等待。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "若要模拟在移动设备上进行抓取,请将其设置为 true。适用于测试响应式页面并获取移动端截图。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "在发起请求时跳过 TLS 证书验证", + "default": true + }, + "timeout": { + "type": "integer", + "description": "请求的超时时间(毫秒)。" + }, + "parsers": { + "type": "array", + "description": "控制在抓取过程中如何处理文件。包含 \"pdf\" 时(默认),会提取 PDF 内容并转换为 Markdown 格式,计费基于页数(每页 1 个积分)。当传入空数组时,会以 base64 编码返回 PDF 文件,按总计 1 个积分的固定费用计费。", + "items": { + "oneOf": [ + { + "type": "string", + "enum": [ + "pdf" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "maxPages": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "description": "从该 PDF 中最多解析的页数。必须是 1 到 10000 之间的正整数。" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "在抓取页面内容之前需要执行的页面 actions", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "等待指定的毫秒数" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "等待的毫秒数" + }, + "selector": { + "type": "string", + "description": "用于查找元素的查询选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "截取屏幕截图。链接将在响应的 `actions.screenshots` 数组中返回。" + }, + "fullPage": { + "type": "boolean", + "description": "是截取整页截图还是仅截取当前视口。", + "default": false + }, + "quality": { + "type": "integer", + "description": "截图质量,取值范围为 1 到 100,100 为最高质量。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "以像素为单位的视口宽度" + }, + "height": { + "type": "integer", + "description": "视口高度(以像素为单位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "单击一个元素" + }, + "selector": { + "type": "string", + "description": "用于查找元素的查询选择器", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "点击所有匹配该选择器的元素,而不仅仅是第一个。即使没有任何元素匹配该选择器,也不会抛出错误。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "向输入框、文本区域或 contenteditable 元素写入文本。注意:在写入之前,你必须先使用「click」操作使该元素获得焦点。文本将以逐字符方式输入,以模拟键盘输入。" + }, + "text": { + "type": "string", + "description": "要键入的文本", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "请在页面上按下一个按键。按键代码请参见:https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "在页面上按下任意键" + }, + "key": { + "type": "string", + "description": "要按的键", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "滚动整个页面或某个特定元素" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "滚动方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "用于滚动的元素选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "抓取当前页面内容,并返回其 URL 和 HTML。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "在页面上执行 JavaScript 代码" + }, + "script": { + "type": "string", + "description": "待执行的 JavaScript 代码", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "生成当前页面的 PDF 文件。该 PDF 文件会通过响应中的 `actions.pdfs` 数组返回。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "生成的 PDF 的页面大小", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "是否以横向方向生成 PDF", + "default": false + }, + "scale": { + "type": "number", + "description": "生成 PDF 的缩放比例", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "请求的地理位置设置。指定后,如果有可用的代理,将使用合适的代理,并模拟相应的语言和时区设置。如果未指定,则默认为“US”。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 国家/地区代码(例如:“US”、“AU”、“DE”、“JP”)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "按优先级排序的请求首选语言和区域设置。默认为指定位置的语言。详情请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "从输出中移除所有 Base64 编码图片,以避免内容过于冗长。图片的 alt 文本会保留在输出中,但其 URL 会被占位符替换。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "启用广告拦截和 Cookie 弹窗拦截功能。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "指定要使用的代理类型。\n\n - **basic**:用于抓取未使用或仅使用基础级反爬虫方案的网站的代理。速度快,通常能正常工作。\n - **stealth**:用于抓取采用高级反爬虫方案的网站的隐身代理。速度较慢,但在某些网站上更可靠。每次请求最高消耗 5 个积分。\n - **auto**:如果 basic 代理抓取失败,Firecrawl 会自动使用 stealth 代理重试抓取。如果使用 stealth 重试成功,该次抓取将按 5 个积分计费;如果首次使用 basic 就成功,则只按常规费用计费。\n\n如果未指定代理类型,Firecrawl 将默认使用 auto。", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "如果为 true,页面将会存储在 Firecrawl 的索引和缓存中。当你的抓取活动可能涉及数据保护方面的顾虑时,将其设置为 false 会很有用。使用某些与敏感抓取相关的参数(actions、headers)时,会强制将该参数设为 false。", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "如果 `formats` 中包含 `summary`,则返回页面摘要" + }, + "html": { + "type": "string", + "nullable": true, + "description": "如果在 `formats` 中包含 `html`,则返回页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "页面的原始 HTML 内容(如果 `formats` 中包含 `rawHtml`)" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 `formats` 中包含 `screenshot`,则会返回页面截图。截图将在 24 小时后过期,届时将无法再下载。" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "当 `formats` 中包含 `links` 时,页面上的链接列表" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` 参数中指定的 actions 的执行结果。仅当请求中提供了 `actions` 参数时才会返回。", + "properties": { + "screenshots": { + "type": "array", + "description": "截图 URL,顺序与提供的 screenshot actions 保持一致。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "按照所提供的 scrape actions 顺序抓取内容。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "与所提供的 executeJavascript actions 顺序一致的 JavaScript 返回值。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "按提供的 pdf actions 的顺序生成的 PDF。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的标题,可以是一个字符串或字符串数组" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的描述,可以是字符串或字符串数组。" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "从页面提取的语言,可以是字符串或字符串数组" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的关键词,可以是字符串或字符串数组" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "页面的其他可用语言版本" + }, + " ": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从 HTML 提取的其他元数据,可以是字符串或字符串数组" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "在使用 LLM Extraction 时会显示。警告信息会提示你提取过程中的任何问题。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "当 `formats` 中包含 `changeTracking` 时的变更追踪信息。仅在请求 `changeTracking` 格式时才会返回。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "当前页面用于对比的上一次抓取时间戳。如果不存在之前的抓取,则为 null。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "两个页面版本之间的比较结果。`new` 表示该页面之前不存在,`same` 表示内容没有变化,`changed` 表示内容已发生变化,`removed` 表示该页面已被移除。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "当前页面/URL 的可见性。`visible` 表示该 URL 是通过自然途径(链接或站点地图)发现的,`hidden` 表示该 URL 是通过之前抓取的历史记录(“记忆”)发现的。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "在使用“git-diff”模式时的 Git 风格变更 diff。仅在模式设置为“git-diff”时返回。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "使用 `json` 模式时的 JSON 比较结果。仅在模式设置为 `json` 时返回。该字段会根据 `schema` 中定义的类型,输出一个列表,包含 `previous` 和 `current` 抓取结果中的所有键及其对应的值。示例见 [此处](/features/change-tracking)" + } + } + }, + "branding": { + "type": "object", + "nullable": true, + "description": "如果在 `formats` 中包含 `branding`,则会从页面中提取品牌相关信息,包括颜色、字体、版式、间距、组件等。" + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "当前爬取任务的状态。状态可能为 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试爬取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "已成功爬取的页面数量。" + }, + "creditsUsed": { + "type": "integer", + "description": "本次爬取所使用的积分数量。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "此抓取任务的到期日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取后续 10MB 数据的 URL。当抓取尚未完成,或响应内容超过 10MB 时,会返回该字段。" + }, + "data": { + "type": "array", + "description": "本次爬取的数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "如果 `includeHtml` 为 true,则返回页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则为页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果 `includeLinks` 为 true,则包含页面上的链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` 为 true 时的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的标题,可以是字符串或字符串数组。" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的描述,可以是字符串或字符串数组" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "从页面中提取的语言,可以是一个字符串或字符串数组" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的关键词,可以是字符串或字符串数组" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "此页面的其他本地化版本" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "出错的抓取任务和错误详情", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失败的 ISO 时间戳" + }, + "url": { + "type": "string", + "description": "已抓取 URL" + }, + "error": { + "type": "string", + "description": "错误信息" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "尝试抓取但被 robots.txt 阻止的 URL 列表", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "批量抓取任务的当前状态。可能为 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试爬取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "成功抓取的页面数。" + }, + "creditsUsed": { + "type": "integer", + "description": "本次批量抓取消耗的额度数量。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "批量抓取过期的日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取下一个 10 MB 数据的 URL。如果批量抓取未完成,或响应内容超过 10 MB,则会返回该字段。" + }, + "data": { + "type": "array", + "description": "批量爬取的数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "当 `includeRawHtml` 为 true 时,页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "若 `includeLinks` 为 true,则为页面上的链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "当 `includeScreenshot` 为 true 时的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的标题,可以是字符串或字符串数组" + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面提取的描述,可以是字符串或字符串数组" + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "nullable": true, + "description": "从页面提取的语言,可以是字符串或字符串数组" + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + "keywords": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "从页面中提取的关键词,可以是一个字符串或字符串数组" + }, + "ogLocaleAlternate": { + "type": "array", + "items": { + "type": "string" + }, + "description": "此页面的其他语言版本" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则该字段是一个数组,包含请求中指定的所有无效 URL。若没有无效 URL,则该数组为空。如果 ignoreInvalidURLs 为 false,则该字段为 undefined。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string", + "description": "页面标题(如有)。" + }, + "description": { + "type": "string", + "description": "页面描述(如有)。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则该字段将是一个数组,包含请求中指定的无效 URL。若没有无效 URL,则该数组为空。如果 ignoreInvalidURLs 为 false,则该字段为 undefined。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "当前提取任务的状态" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "提取任务使用的 token 数量。仅在任务完成后可查看。" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/zh/contributing/guide.mdx b/zh/contributing/guide.mdx index 1f54f647..174face2 100644 --- a/zh/contributing/guide.mdx +++ b/zh/contributing/guide.mdx @@ -77,7 +77,6 @@ POSTHOG_HOST= # 如需发送 PostHog 事件(如作业日志),请设置 ``` -
### 安装依赖项
@@ -89,7 +88,6 @@ POSTHOG_HOST= # 如需发送 PostHog 事件(如作业日志),请设置 pnpm install # 确保 pnpm 版本为 9 或更高! ``` -
### 运行项目
@@ -106,7 +104,6 @@ pnpm install # 确保 pnpm 版本为 9 或更高! redis-server ``` -
### 终端 2 - 配置服务
@@ -120,7 +117,6 @@ pnpm start 这将启动用于处理爬取任务的 workers。 -
### 终端 3 - 发送我们的首个请求。
@@ -143,7 +139,6 @@ curl -X POST http://localhost:3002/v1/crawl \ }' ``` -
### 备选方案:使用 Docker Compose
@@ -160,7 +155,6 @@ docker compose up 这将按正确配置自动启动 Redis、API 服务器和工作进程。 -
## 测试:
diff --git a/zh/contributing/self-host.mdx b/zh/contributing/self-host.mdx index 0e654587..dc1ad594 100644 --- a/zh/contributing/self-host.mdx +++ b/zh/contributing/self-host.mdx @@ -175,7 +175,6 @@ This will run a local instance of Firecrawl which can be accessed at `http://loc You should be able to see the Bull Queue Manager UI on `http://localhost:3002/admin/@/queues`. - 5. *(可选)* 测试 API 如果你想测试 crawl 端点,可以运行以下命令: @@ -190,7 +189,6 @@ You should be able to see the Bull Queue Manager UI on `http://localhost:3002/ad }' ``` -
## 疑难解答
@@ -211,7 +209,6 @@ You should be able to see the Bull Queue Manager UI on `http://localhost:3002/ad **解释:** 出现此错误是因为 Supabase 客户端尚未完成配置。你仍然可以正常进行抓取和爬取。目前,自托管实例不支持配置 Supabase。 -
### 你正在绕过身份验证
@@ -225,7 +222,6 @@ You should be able to see the Bull Queue Manager UI on `http://localhost:3002/ad **解释:** 出现此错误是因为尚未完成 Supabase 客户端的设置。你仍然可以正常执行抓取和爬取操作。目前,自托管实例不支持配置 Supabase。 -
### Docker 容器无法启动
@@ -243,7 +239,6 @@ docker logs [容器名称] * 确保在 .env 文件中正确设置所有必需的环境变量。 * 确认 docker-compose.yml 中定义的所有 Docker 服务均已正确配置,且所需镜像已就绪可用。 -
### 与 Redis 的连接问题
diff --git a/zh/developer-guides/advanced-guides/authenticated-scraping.mdx b/zh/developer-guides/advanced-guides/authenticated-scraping.mdx index e8a1982e..81150969 100644 --- a/zh/developer-guides/advanced-guides/authenticated-scraping.mdx +++ b/zh/developer-guides/advanced-guides/authenticated-scraping.mdx @@ -108,7 +108,6 @@ auth-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJleGFtcGxlLXVzZXIt **重要:** Cookie 属于敏感凭证。切勿公开分享或提交到版本控制系统。请像对待密码一样对待它们。 -
### 第 2 步:在 Firecrawl 中使用 Cookie
@@ -131,7 +130,6 @@ const result = await app.scrape("https://firecrawl-auth.vercel.app/dashboard", { console.log("=== Markdown ===\n" + result.markdown + "\n\n=== Screenshot URL ===\n" + result.screenshot); ``` -
## 最佳实践
diff --git a/zh/developer-guides/common-sites/amazon.mdx b/zh/developer-guides/common-sites/amazon.mdx index 262f4fa9..01e96d88 100644 --- a/zh/developer-guides/common-sites/amazon.mdx +++ b/zh/developer-guides/common-sites/amazon.mdx @@ -15,7 +15,6 @@ Amazon 是被抓取最频繁的电商网站之一。本指南将演示如何利 npm install @mendable/firecrawl-js zod ``` -
## 概览
@@ -64,7 +63,6 @@ console.log('✅ 已验证的产品数据:'); console.log(validated); ``` - @@ -87,7 +85,6 @@ const searchResult = await firecrawl.search('gaming laptop site:amazon.com', { console.log(searchResult); ``` -
## 抓取
@@ -107,7 +104,6 @@ const result = await firecrawl.scrape('https://www.amazon.com/ASUS-ROG-Strix-Gam console.log(result); ``` -
## Map
@@ -125,7 +121,6 @@ console.log(mapResult.links); // 返回不含内容的 URL 数组 ``` -
## 爬取
@@ -147,7 +142,6 @@ const crawlResult = await firecrawl.crawl('https://www.amazon.com/s?k=mechanical console.log(crawlResult.data); ``` -
## 批量抓取
diff --git a/zh/developer-guides/common-sites/etsy.mdx b/zh/developer-guides/common-sites/etsy.mdx index fda91809..e8a2b8e4 100644 --- a/zh/developer-guides/common-sites/etsy.mdx +++ b/zh/developer-guides/common-sites/etsy.mdx @@ -15,7 +15,6 @@ Etsy 是一个汇集独特与创意商品的全球市场。本文将演示如何 npm install @mendable/firecrawl-js zod ``` -
## 概述
@@ -63,7 +62,6 @@ console.log('✅ 已验证的商品数据:'); console.log(validated); ``` - @@ -86,7 +84,6 @@ const searchResult = await firecrawl.search('handmade jewelry site:etsy.com', { console.log(searchResult); ``` -
## 抓取
@@ -106,7 +103,6 @@ const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/h console.log(result); ``` -
## Map
@@ -124,7 +120,6 @@ console.log(mapResult.links); // 返回不含内容的 URL 数组 ``` -
## 爬取
@@ -146,7 +141,6 @@ const crawlResult = await firecrawl.crawl('https://www.etsy.com/c/jewelry', { console.log(crawlResult.data); ``` -
## 批量抓取
diff --git a/zh/developer-guides/common-sites/github.mdx b/zh/developer-guides/common-sites/github.mdx index b7c16b8b..df7da36b 100644 --- a/zh/developer-guides/common-sites/github.mdx +++ b/zh/developer-guides/common-sites/github.mdx @@ -13,7 +13,6 @@ description: "了解如何使用 Firecrawl 的核心功能抓取 GitHub" npm install @mendable/firecrawl-js zod ``` -
## 使用 JSON 模式进行抓取
@@ -43,7 +42,6 @@ const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', console.log(result.json); ``` - @@ -66,7 +64,6 @@ const searchResult = await firecrawl.search('machine learning site:github.com', console.log(searchResult); ``` -
## 抓取
@@ -85,7 +82,6 @@ const result = await firecrawl.scrape('https://github.com/mendableai/firecrawl', console.log(result); ``` -
## Map
@@ -103,7 +99,6 @@ console.log(mapResult.links); // 返回不含内容的 URL 数组 ``` -
## 抓取
@@ -125,7 +120,6 @@ const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wik console.log(crawlResult.data); ``` -
## 批量抓取
@@ -157,7 +151,6 @@ console.log(job.status, job.completed, job.total); console.log(job); ``` -
## 使用 JSON 模式进行批量抓取
diff --git a/zh/developer-guides/common-sites/wikipedia.mdx b/zh/developer-guides/common-sites/wikipedia.mdx index 37a5dbfe..7aa456e8 100644 --- a/zh/developer-guides/common-sites/wikipedia.mdx +++ b/zh/developer-guides/common-sites/wikipedia.mdx @@ -13,7 +13,6 @@ description: "从 Wikipedia 提取文章与信息框,构建知识图谱" npm install @mendable/firecrawl-js zod ``` -
## 适用场景
@@ -52,7 +51,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/JavaScript' console.log(result.json); ``` - @@ -75,7 +73,6 @@ const searchResult = await firecrawl.search('quantum computing site:en.wikipedia console.log(searchResult); ``` -
## 抓取
@@ -95,7 +92,6 @@ const result = await firecrawl.scrape('https://en.wikipedia.org/wiki/Artificial_ console.log(result); ``` -
## Map
@@ -113,7 +109,6 @@ console.log(mapResult.links); // 返回不含内容的 URL 数组 ``` -
## 爬取
@@ -135,7 +130,6 @@ const crawlResult = await firecrawl.crawl('https://en.wikipedia.org/wiki/Portal: console.log(crawlResult.data); ``` -
## 批量抓取
diff --git a/zh/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx b/zh/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx index bec8d291..d94df46a 100644 --- a/zh/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx +++ b/zh/developer-guides/cookbooks/ai-research-assistant-cookbook.mdx @@ -740,7 +740,6 @@ const result = streamText({ AI SDK 通过同一套 API 支持 20 多家提供商。了解更多:[ai-sdk.dev/docs/foundations/providers-and-models](https://ai-sdk.dev/docs/foundations/providers-and-models)。 -
### 自定义 UI
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/anthropic.mdx b/zh/developer-guides/llm-sdks-and-frameworks/anthropic.mdx index 80e3a142..40cf10dd 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/anthropic.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/anthropic.mdx @@ -22,7 +22,6 @@ ANTHROPIC_API_KEY=your_anthropic_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv`,并在代码中添加 `import 'dotenv/config'`。 -
## 抓取 + 摘要
@@ -53,7 +52,6 @@ const message = await anthropic.messages.create({ console.log('响应:', message); ``` -
## 工具使用
@@ -108,7 +106,6 @@ if (toolUse && toolUse.type === 'tool_use') { } ``` -
## 结构化抽取
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/gemini.mdx b/zh/developer-guides/llm-sdks-and-frameworks/gemini.mdx index d7bb7b81..9eedd3eb 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/gemini.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/gemini.mdx @@ -22,7 +22,6 @@ GEMINI_API_KEY=your_gemini_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv`,并在代码中添加 `import 'dotenv/config'`。 -
## 抓取 + 摘要
@@ -50,7 +49,6 @@ const response = await ai.models.generateContent({ console.log('摘要:', response.text); ``` -
## 内容分析
@@ -87,7 +85,6 @@ const result2 = await chat.sendMessage({ console.log('第 4 和第 5 条热门内容:', result2.text); ``` -
## 结构化提取
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/google-adk.mdx b/zh/developer-guides/llm-sdks-and-frameworks/google-adk.mdx index 7b4b5d54..84570f1e 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/google-adk.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/google-adk.mdx @@ -174,7 +174,6 @@ response = research_agent.run("Python 3.13 有哪些最新特性?") print(response) ``` -
## 最佳实践
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/langchain.mdx b/zh/developer-guides/llm-sdks-and-frameworks/langchain.mdx index d5ba6abf..4c471b05 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/langchain.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/langchain.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv`,并在代码中添加 `import 'dotenv/config'`。 -
## 抓取 + 对话
@@ -53,7 +52,6 @@ const response = await chat.invoke([ console.log('摘要:', response.content); ``` -
## Chains
@@ -94,7 +92,6 @@ const result = await chain.invoke({ console.log('链执行结果:', result); ``` -
## 工具调用
@@ -137,7 +134,6 @@ console.log('响应:', response.content); console.log('工具调用:', response.tool_calls); ``` -
## 结构化数据提取
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/langgraph.mdx b/zh/developer-guides/llm-sdks-and-frameworks/langgraph.mdx index ed9f8335..0c6b00aa 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/langgraph.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/langgraph.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv` 并在代码中添加 `import 'dotenv/config'`。 -
## 基本工作流
@@ -81,7 +80,6 @@ const result = await app.invoke({ console.log(JSON.stringify(result, null, 2)); ``` -
## 多步工作流
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx b/zh/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx index f59b8bd7..a25a0cbc 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/llamaindex.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv`,并在代码中添加 `import 'dotenv/config'`。 - diff --git a/zh/developer-guides/llm-sdks-and-frameworks/mastra.mdx b/zh/developer-guides/llm-sdks-and-frameworks/mastra.mdx index cfeffd8e..e7899b2c 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/mastra.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/mastra.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv`,并在代码中添加 `import 'dotenv/config'`。 -
## 多步工作流
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/openai.mdx b/zh/developer-guides/llm-sdks-and-frameworks/openai.mdx index f3e4811f..8d2a5616 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/openai.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/openai.mdx @@ -22,7 +22,6 @@ OPENAI_API_KEY=your_openai_key > **注意:** 如果使用 Node 版本低于 20,请安装 `dotenv`,并在代码中添加 `import 'dotenv/config'`。 -
## 抓取 + 摘要
@@ -54,7 +53,6 @@ const completion = await openai.chat.completions.create({ console.log('摘要:', completion.choices[0]?.message.content); ``` -
## 函数调用
@@ -130,7 +128,6 @@ if (message?.tool_calls && message.tool_calls.length > 0) { } ``` -
## 结构化数据提取
@@ -185,7 +182,6 @@ const companyInfo = content ? CompanyInfoSchema.parse(JSON.parse(content)) : nul console.log('验证后的公司信息:', companyInfo); ``` -
## 搜索 + 分析
@@ -220,7 +216,6 @@ const analysis = await openai.chat.completions.create({ console.log('分析:', analysis.choices[0]?.message?.content); ``` -
## 搭配 MCP 的 Responses API
diff --git a/zh/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx b/zh/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx index f4788ff1..92052ae0 100644 --- a/zh/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx +++ b/zh/developer-guides/llm-sdks-and-frameworks/vercel-ai-sdk.mdx @@ -24,7 +24,6 @@ OPENAI_API_KEY=sk-your-key 这些示例使用的是 OpenAI,但 Firecrawl 工具适用于 Vercel AI SDK 支持的任意提供商,包括 Anthropic、Google、Mistral 等。请参阅[支持的提供商完整列表](https://ai-sdk.dev/providers/ai-sdk-providers)。 -
## 快速开始
@@ -41,7 +40,6 @@ const { text } = await generateText({ }); ``` -
## 可用工具
@@ -60,7 +58,6 @@ import { } from 'firecrawl-aisdk'; ``` -
## 示例
@@ -83,7 +80,6 @@ const { text } = await generateText({ console.log(text); ``` - @@ -102,7 +98,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 映射
@@ -121,7 +116,6 @@ const { text } = await generateText({ console.log(text); ``` -
### Crawl
@@ -142,7 +136,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 批量抓取
@@ -163,7 +156,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 提取
@@ -184,7 +176,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 搜索 + 爬取
@@ -203,7 +194,6 @@ const { text } = await generateText({ console.log(text); ``` -
### 流式传输
diff --git a/zh/developer-guides/mcp-setup-guides/chatgpt.mdx b/zh/developer-guides/mcp-setup-guides/chatgpt.mdx new file mode 100644 index 00000000..608753de --- /dev/null +++ b/zh/developer-guides/mcp-setup-guides/chatgpt.mdx @@ -0,0 +1,124 @@ +--- +title: "在 ChatGPT 中使用 MCP 进行网页搜索与抓取" +description: "在 2 分钟内为 ChatGPT 添加网页抓取和搜索功能" +--- + + +ChatGPT 中的 MCP 支持目前处于测试阶段。随着 OpenAI 持续开发,界面和可用性可能会发生变化。 + + + +**可用性:** 带 MCP 连接器的开发者模式在免费套餐中不可用,需要付费 ChatGPT 订阅。不同套餐和地区的可用性和功能各不相同。请参阅 [OpenAI 关于 Developer Mode 的文档](https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta),了解当前的可用性和设置说明。 + + +使用 Firecrawl MCP 为 ChatGPT 添加网页抓取和搜索功能。 + +
+ ## 快速开始 +
+ +
+ ### 1. 获取你的 API 密钥 +
+ +在 [firecrawl.dev/app/api-keys](https://www.firecrawl.dev/app/api-keys) 注册并复制你的 API 密钥。 + +
+ ### 2. 启用开发者模式 +
+ +点击左下角的用户名打开 ChatGPT 设置,或者直接访问 [chatgpt.com/#settings](https://chatgpt.com/#settings)。 + +在设置弹窗中,滚动到页面底部并选择 **Advanced Settings(高级设置)**。将 **Developer mode(开发者模式)** 切换为开启。 + + + ChatGPT 设置中显示带有 Developer mode 开关的 Advanced Settings + + +
+ ### 3. 创建 Connector +
+ +启用 Developer 模式后,在同一个设置弹窗中打开 **Apps & Connectors** 选项卡。 + +点击页面右上角的 **Create** 按钮。 + + + Apps & Connectors 选项卡中高亮显示的 Create 按钮 + + +填写 Connector 详情: + +- **Name:** `Firecrawl MCP` +- **Description:** `Web scraping, crawling, search, and content extraction`(可选) +- **MCP Server URL:** `https://mcp.firecrawl.dev/YOUR_API_KEY_HERE/v2/mcp` +- **Authentication:** `None` + +将 URL 中的 `YOUR_API_KEY_HERE` 替换为你的实际 [Firecrawl API key](https://www.firecrawl.dev/app/api-keys)。 + + + 已填写 Firecrawl MCP 详情的新 Connector 表单 + + +勾选 **"I understand and want to continue"** 复选框,然后点击 **Create**。 + +
+ ### 4. 验证设置 +
+ +返回 ChatGPT 主界面。你应该会看到显示 **开发者模式(Developer mode)**,这表示 MCP 连接器已启用。 + +如果你没有看到开发者模式,请刷新页面。如果仍未出现,请再次打开设置,并在 Advanced Settings 中确认开发者模式的开关已打开。 + +
+ ### 5. 使用 Firecrawl 工具 +
+ +要在对话中使用 Firecrawl,点击聊天输入框中的 **+** 按钮,然后选择 **More**,再选择 **Firecrawl MCP**。 + + + ChatGPT 聊天输入框中展开的 + 菜单,显示 More 子菜单和 Firecrawl MCP 选项 + + +
+ ## 快速演示 +
+ +在选中 Firecrawl MCP 后,尝试使用以下提示词: + +**搜索:** + +``` +Search for the latest React Server Components updates +``` + +**抓取:** + +``` +Scrape firecrawl.dev and tell me what it does +``` + +**获取文档:** + +``` +抓取 Vercel 的 Edge Functions 文档并进行总结 +``` + + +
+ ## 工具确认 +
+ +当 ChatGPT 使用 Firecrawl MCP 工具时,你会看到一个确认提示,要求你进行授权。 + + + ChatGPT 工具确认对话框,显示 Firecrawl MCP 请求 + + +你可以勾选 **“Remember for this conversation”**,以避免在同一聊天会话中重复确认。这个安全措施由 OpenAI 实施,以确保 MCP 工具不会执行非预期的 actions。 + +确认后,ChatGPT 会执行请求并返回结果。 + + + 在 ChatGPT 中显示的 Firecrawl 搜索结果示例 + \ No newline at end of file diff --git a/zh/developer-guides/mcp-setup-guides/claude-code.mdx b/zh/developer-guides/mcp-setup-guides/claude-code.mdx index 108fecec..8428b41f 100644 --- a/zh/developer-guides/mcp-setup-guides/claude-code.mdx +++ b/zh/developer-guides/mcp-setup-guides/claude-code.mdx @@ -27,7 +27,6 @@ claude mcp add firecrawl -e FIRECRAWL_API_KEY=your-api-key -- npx -y firecrawl-m 完成!现在你可以在 Claude Code 中搜索并抓取网页了。 -
## 快速演示
diff --git a/zh/developer-guides/mcp-setup-guides/cursor.mdx b/zh/developer-guides/mcp-setup-guides/cursor.mdx index c2c76593..1537374c 100644 --- a/zh/developer-guides/mcp-setup-guides/cursor.mdx +++ b/zh/developer-guides/mcp-setup-guides/cursor.mdx @@ -37,7 +37,6 @@ description: "用 2 分钟为 Cursor 接入网页抓取与搜索功能" 将 `your_api_key_here` 替换为你的实际 Firecrawl API 密钥。 -
### 3. 重启 Cursor
diff --git a/zh/developer-guides/mcp-setup-guides/factory-ai.mdx b/zh/developer-guides/mcp-setup-guides/factory-ai.mdx index dee6c350..c253dee8 100644 --- a/zh/developer-guides/mcp-setup-guides/factory-ai.mdx +++ b/zh/developer-guides/mcp-setup-guides/factory-ai.mdx @@ -33,7 +33,6 @@ curl -fsSL https://app.factory.ai/cli | sh iwr https://app.factory.ai/cli/install.ps1 -useb | iex ``` -
### 3. 添加 Firecrawl MCP 服务器
@@ -46,7 +45,6 @@ iwr https://app.factory.ai/cli/install.ps1 -useb | iex 将 `your-api-key-here` 替换为你实际的 Firecrawl API 密钥。 -
### 4. 完成!
diff --git a/zh/developer-guides/mcp-setup-guides/windsurf.mdx b/zh/developer-guides/mcp-setup-guides/windsurf.mdx index 07e11cd1..2ab55584 100644 --- a/zh/developer-guides/mcp-setup-guides/windsurf.mdx +++ b/zh/developer-guides/mcp-setup-guides/windsurf.mdx @@ -37,7 +37,6 @@ description: "用 2 分钟为 Windsurf 添加网页抓取与搜索功能" 将 `YOUR_API_KEY` 替换为你的实际 Firecrawl API 密钥。 -
### 3. 重启 Windsurf
diff --git a/zh/features/alpha/llmstxt-npx.mdx b/zh/features/alpha/llmstxt-npx.mdx index acccf5d6..29c3c8eb 100644 --- a/zh/features/alpha/llmstxt-npx.mdx +++ b/zh/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ sidebarTitle: "使用 NPX 生成" npx generate-llmstxt --api-key YOUR_FIRECRAWL_API_KEY ``` -
### 2. 使用环境变量
@@ -47,7 +46,6 @@ FIRECRAWL_API_KEY=your_api_key_here npx generate-llmstxt ``` -
### 选项
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## 系统要求
diff --git a/zh/features/change-tracking.mdx b/zh/features/change-tracking.mdx index d53f31e3..07434f46 100644 --- a/zh/features/change-tracking.mdx +++ b/zh/features/change-tracking.mdx @@ -82,7 +82,6 @@ og:description: "Firecrawl 可比较当前页面与先前版本的差异,并 } ``` -
### 高级选项
@@ -170,7 +169,6 @@ if 'json' in result.change_tracking: ... ``` -
### JSON 对比结果示例:
@@ -184,7 +182,6 @@ if 'json' in result.change_tracking: } ``` -
### 数据模型
@@ -278,7 +275,6 @@ class ChangeTrackingData(BaseModel): * `chunks`:文件内的变更片段 * `changes`:按类型(add、delete、normal)标注的单行变更 -
### JSON 模式
@@ -302,7 +298,6 @@ class ChangeTrackingData(BaseModel): 要使用 JSON 模式,你需要提供一个 schema,用于定义要提取和对比的字段。 -
## 重要说明
@@ -353,7 +348,6 @@ class ChangeTrackingData(BaseModel): } ``` -
### 爬网示例
@@ -368,7 +362,6 @@ class ChangeTrackingData(BaseModel): } ``` -
### 跟踪商品价格变动
diff --git a/zh/features/extract.mdx b/zh/features/extract.mdx index bad81e20..449e7cb5 100644 --- a/zh/features/extract.mdx +++ b/zh/features/extract.mdx @@ -32,7 +32,6 @@ import ExtractWithoutURLsCURL from "/snippets/zh/v2/extract/base/curl.mdx"; 我们已简化计费:Extract 现在与其他端点一样使用积分。每个积分相当于 15 个 token。 -
## 使用 `/extract`
diff --git a/zh/features/search-v0.mdx b/zh/features/search-v0.mdx index 347be69e..0f3385cf 100644 --- a/zh/features/search-v0.mdx +++ b/zh/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### 使用 Python SDK
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` - #### 搜索查询 ```python @@ -92,7 +90,6 @@ result = app.search(query="什么是 Firecrawl?") 响应将与上方 curl 命令示例中的结果类似。 -
### 使用 JavaScript SDK
@@ -105,7 +102,6 @@ result = app.search(query="什么是 Firecrawl?") npm install @mendable/firecrawl-js ``` - #### 搜索请求 ```javascript @@ -120,7 +116,6 @@ const result = await app.search('What is firecrawl?'); 响应将与上面的 curl 命令所示类似。 -
### 使用 Go SDK
@@ -133,7 +128,6 @@ const result = await app.search('What is firecrawl?'); go get github.com/mendableai/firecrawl-go ``` - #### 搜索查询 ```go @@ -159,7 +153,6 @@ func main() { } ``` -
### 使用 Rust SDK
@@ -182,7 +175,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### 搜索查询语句
diff --git a/zh/integrations/camelai.mdx b/zh/integrations/camelai.mdx index 3571cf1f..89d85c7a 100644 --- a/zh/integrations/camelai.mdx +++ b/zh/integrations/camelai.mdx @@ -14,7 +14,6 @@ pip install camel-ai ``` -
## 使用
@@ -36,7 +35,6 @@ mock_app.crawl_url.return_value = respons result = firecrawl.markdown_crawl(url) ``` -
### 使用 Firecrawl 抓取单个页面
diff --git a/zh/integrations/crewai.mdx b/zh/integrations/crewai.mdx index dcbbfb87..d7a58046 100644 --- a/zh/integrations/crewai.mdx +++ b/zh/integrations/crewai.mdx @@ -22,7 +22,6 @@ Firecrawl 已与 [CrewAI(用于编排 AI 代理的框架)](https://www.crewa pip install firecrawl-py 'crewai[tools]' ``` -
## 工具
@@ -43,7 +42,6 @@ from crewai_tools import FirecrawlCrawlWebsiteTool tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev') ``` -
#### 参数
@@ -79,7 +77,6 @@ from crewai_tools import FirecrawlScrapeWebsiteTool tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev') ``` -
#### 参数
@@ -111,7 +108,6 @@ from crewai_tools import FirecrawlSearchTool tool = FirecrawlSearchTool(query='什么是 Firecrawl?') ``` -
#### 参数
diff --git a/zh/mcp-server.mdx b/zh/mcp-server.mdx index e5ead9bd..8da1eedd 100644 --- a/zh/mcp-server.mdx +++ b/zh/mcp-server.mdx @@ -32,7 +32,6 @@ sidebarTitle: 'MCP 服务器' https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp ``` -
### 使用 npx 运行
@@ -41,14 +40,12 @@ https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp ``` - ### 手动安装 ```bash npm install -g firecrawl-mcp ``` -
### 在 Cursor 中运行
@@ -126,7 +123,6 @@ npm install -g firecrawl-mcp } ``` -
### 以可流式 HTTP 模式运行
@@ -139,7 +135,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecra 使用以下 URL:http://localhost:3000/v2/mcp 或 https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp -
### 通过 Smithery 安装(旧版)
@@ -150,7 +145,6 @@ env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecra npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude ``` -
### 在 VS Code 中运行
@@ -216,7 +210,6 @@ npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude 通过其他扩展调用时,MCP 服务器仍可正常工作;但当直接将其注册到 MCP 服务器列表时会出现该问题。我们计划在 VS Code 更新其 schema 验证后提供相关指导。 -
### 在 Claude Desktop 上运行
@@ -236,7 +229,6 @@ npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude } ``` -
### 在 Claude Code 上运行
@@ -247,7 +239,6 @@ npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude claude mcp add firecrawl -e FIRECRAWL_API_KEY=your-api-key -- npx -y firecrawl-mcp ``` -
### 在 n8n 上运行
@@ -279,7 +270,6 @@ env HTTP_STREAMABLE_SERVER=true \ 这会在 `http://localhost:3000/v2/mcp` 启动服务器,你可以在 n8n 工作流中将其用作端点。由于 n8n 需要使用 HTTP 传输,因此必须设置环境变量 `HTTP_STREAMABLE_SERVER=true`。 -
## 配置
@@ -354,7 +344,6 @@ export FIRECRAWL_RETRY_MAX_ATTEMPTS=10 export FIRECRAWL_RETRY_INITIAL_DELAY=500 # 以更短的间隔开始重试 ``` -
### 在 Claude Desktop 中进行自定义配置
@@ -383,7 +372,6 @@ export FIRECRAWL_RETRY_INITIAL_DELAY=500 # 以更短的间隔开始重试 } ``` -
### 系统配置
@@ -424,7 +412,6 @@ const CONFIG = { * 剩余 1000 额度时发出警告 * 剩余 100 额度时发出严重警报 -
### 速率限制与批处理
@@ -463,7 +450,6 @@ const CONFIG = { } ``` -
### 2. 批量抓取工具 (`firecrawl_batch_scrape`)
@@ -497,7 +483,6 @@ const CONFIG = { } ``` -
### 3. 检查批次状态 (`firecrawl_check_batch_status`)
@@ -513,7 +498,6 @@ const CONFIG = { } ``` -
### 4. 映射工具(`firecrawl_map`)
@@ -534,7 +518,6 @@ const CONFIG = { } ``` -
#### Map 工具选项:
@@ -571,7 +554,6 @@ const CONFIG = { } ``` -
### 6. Crawl 工具(`firecrawl_crawl`)
@@ -591,7 +573,6 @@ const CONFIG = { } ``` -
### 7. 检查爬取状态(`firecrawl_check_crawl_status`)
@@ -609,7 +590,6 @@ const CONFIG = { **返回:** 抓取任务的状态与进度,并在可用时包含结果。 -
### 8. 提取工具 (`firecrawl_extract`)
@@ -657,7 +637,6 @@ const CONFIG = { } ``` -
#### 提取工具选项:
@@ -694,7 +673,6 @@ const CONFIG = { [ERROR] 超出速率限制,2 秒后重试… ``` -
## 错误处理
@@ -721,7 +699,6 @@ const CONFIG = { } ``` -
## 开发
@@ -737,7 +714,6 @@ npm run build npm test ``` -
### 参与贡献
diff --git a/zh/v0/advanced-scraping-guide.mdx b/zh/v0/advanced-scraping-guide.mdx index aefc2293..e24aade2 100644 --- a/zh/v0/advanced-scraping-guide.mdx +++ b/zh/v0/advanced-scraping-guide.mdx @@ -169,7 +169,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ 对应的 API 参考文档:[Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## 提取器选项
@@ -262,7 +261,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ } ``` -
## 调整超时
@@ -284,7 +282,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ }' ``` -
## 爬取多个页面
@@ -306,7 +303,6 @@ curl -X POST https://api.firecrawl.dev/v0/crawl \ { "jobId": "1234-5678-9101" } ``` -
### 检查抓取任务
@@ -319,7 +315,6 @@ curl -X GET https://api.firecrawl.dev/v0/crawl/status/1234-5678-9101 \ -H 'Authorization: Bearer YOUR_API_KEY' ``` -
### 爬取器选项
@@ -405,7 +400,6 @@ curl -X POST https://api.firecrawl.dev/v0/crawl \ * 使用快速抓取模式。 * 最多抓取 1000 个页面。 -
## 页面选项 + 爬虫选项
@@ -446,7 +440,6 @@ curl -X POST https://api.firecrawl.dev/v0/crawl \ * 最多爬取至深度 2。 * 使用快速爬取模式。 -
## 提取器选项 + 爬虫选项
diff --git a/zh/v0/api-reference/endpoint/crawl-cancel.mdx b/zh/v0/api-reference/endpoint/crawl-cancel.mdx index 759e2ea1..9eb157ae 100644 --- a/zh/v0/api-reference/endpoint/crawl-cancel.mdx +++ b/zh/v0/api-reference/endpoint/crawl-cancel.mdx @@ -1,4 +1,4 @@ --- title: "取消爬取任务" -openapi: 'v0-openapi DELETE /crawl/cancel/{jobId}' +openapi: '/zh/api-reference/v1-openapi.json V0-OPENAPI DELETE /crawl/cancel/{jobId}' --- \ No newline at end of file diff --git a/zh/v0/api-reference/endpoint/crawl.mdx b/zh/v0/api-reference/endpoint/crawl.mdx index a355a9e2..3d37b4e9 100644 --- a/zh/v0/api-reference/endpoint/crawl.mdx +++ b/zh/v0/api-reference/endpoint/crawl.mdx @@ -1,4 +1,4 @@ --- title: "抓取" -openapi: 'v0-openapi POST /crawl' +openapi: '/zh/api-reference/v1-openapi.json V0-OPENAPI POST /crawl' --- \ No newline at end of file diff --git a/zh/v0/api-reference/endpoint/scrape.mdx b/zh/v0/api-reference/endpoint/scrape.mdx index 512a9def..44bb5307 100644 --- a/zh/v0/api-reference/endpoint/scrape.mdx +++ b/zh/v0/api-reference/endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: '抓取' -openapi: 'v0-openapi POST /scrape' +openapi: '/zh/api-reference/v1-openapi.json V0-OPENAPI POST /scrape' --- \ No newline at end of file diff --git a/zh/v0/api-reference/endpoint/search.mdx b/zh/v0/api-reference/endpoint/search.mdx index 33d39674..10bdce42 100644 --- a/zh/v0/api-reference/endpoint/search.mdx +++ b/zh/v0/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "Search(Beta)" -openapi: 'v0-openapi POST /search' +openapi: '/zh/api-reference/v1-openapi.json V0-OPENAPI POST /search' --- 该 /search 端点将搜索 API 与 Firecrawl 的能力结合,为任意查询提供强大的搜索体验。 diff --git a/zh/v0/api-reference/endpoint/status.mdx b/zh/v0/api-reference/endpoint/status.mdx index eb6ec2ba..773f8e14 100644 --- a/zh/v0/api-reference/endpoint/status.mdx +++ b/zh/v0/api-reference/endpoint/status.mdx @@ -1,6 +1,6 @@ --- title: '获取爬取状态' -openapi: 'v0-openapi GET /crawl/status/{jobId}' +openapi: '/zh/api-reference/v1-openapi.json V0-OPENAPI GET /crawl/status/{jobId}' --- 此端点用于获取爬取任务的状态。若任务尚未完成,响应会在 `partial_data` 中返回内容。任务完成后,内容将位于 `data` 中。 diff --git a/zh/v0/api-reference/introduction.mdx b/zh/v0/api-reference/introduction.mdx index 17d2e171..286f7232 100644 --- a/zh/v0/api-reference/introduction.mdx +++ b/zh/v0/api-reference/introduction.mdx @@ -13,7 +13,6 @@ description: "Firecrawl API 参考" https://api.firecrawl.dev ``` -
## 身份验证
@@ -26,7 +25,6 @@ Authorization:Bearer fc_123456789 ​ -
## 响应代码
diff --git a/zh/v0/api-reference/v0-openapi.json b/zh/v0/api-reference/v0-openapi.json new file mode 100644 index 00000000..188fbb63 --- /dev/null +++ b/zh/v0/api-reference/v0-openapi.json @@ -0,0 +1,947 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v0", + "description": "用于与 Firecrawl 服务交互并执行网页抓取和爬取任务的 API。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v0" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "抓取单个 URL,并可选使用 LLM 进行信息抽取", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要抓取的 URL 地址" + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "随请求发送的请求头。可用于传递 cookies、User-Agent 等信息。" + }, + "includeHtml": { + "type": "boolean", + "description": "在页面中包含该内容的 HTML 版本。响应中会返回一个名为 html 的字段。", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "在响应中包含页面的原始 HTML 内容。响应中将包含一个 rawHtml 字段。", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "在最终输出中只包含页面中已有的标签、class 和 id。使用逗号分隔的值。示例:'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "只返回页面的主体内容,不包括页眉、导航栏、页脚等。", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "要从页面中移除的标签、class 和 id。使用逗号分隔多个值。示例:'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "将所有图像和链接中的相对路径替换为绝对路径", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "请附上一张所抓取页面顶部的截图。", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "附上你正在抓取页面的整页截图。", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "等待页面加载指定的毫秒时间后再获取内容", + "default": 0 + } + } + }, + "extractorOptions": { + "type": "object", + "description": "用于从页面内容中提取结构化信息的选项。注意:基于 LLM 的提取不会自动执行,只有在显式配置时才会运行。“markdown” 模式仅返回抓取到的 Markdown 内容,是抓取时的默认模式。", + "default": {}, + "properties": { + "mode": { + "type": "string", + "enum": [ + "markdown", + "llm-extraction", + "llm-extraction-from-raw-html", + "llm-extraction-from-markdown" + ], + "description": "要使用的提取模式。'markdown':返回抓取到的 Markdown 内容,不执行 LLM 提取。'llm-extraction':使用 LLM 从清洗和解析后的内容中提取信息。'llm-extraction-from-raw-html':使用 LLM 直接从原始 HTML 中提取信息。'llm-extraction-from-markdown':使用 LLM 从 Markdown 内容中提取信息。" + }, + "extractionPrompt": { + "type": "string", + "description": "用于描述应从页面中提取哪些信息的提示,在 LLM 提取模式下使用。" + }, + "extractionSchema": { + "type": "object", + "additionalProperties": true, + "description": "要提取数据的 schema,仅在 LLM 提取模式下才需要。", + "required": [ + "company_mission", + "supports_sso", + "is_open_source" + ] + } + } + }, + "timeout": { + "type": "integer", + "description": "请求超时时间(毫秒)", + "default": 30000 + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "基于选项抓取多个 URL", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于开始爬取的基础 URL" + }, + "crawlerOptions": { + "type": "object", + "properties": { + "includes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "要包含的 URL 模式" + }, + "excludes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "需排除的 URL 模式" + }, + "generateImgAltText": { + "type": "boolean", + "description": "使用 LLM 为图像生成替代文本(需付费套餐)", + "default": false + }, + "returnOnlyUrls": { + "type": "boolean", + "description": "如果为 true,则在抓取状态中仅返回 URL 列表。注意:返回的响应数据中包含的是一个由 URL 组成的列表,而不是文档列表。", + "default": false + }, + "maxDepth": { + "type": "integer", + "description": "相对于输入 URL 的最大抓取深度。maxDepth 为 0 时仅抓取该 URL。maxDepth 为 1 时抓取该 URL 以及所有一层深度的页面。maxDepth 为 2 时抓取该 URL 以及所有最多两层深度的页面。更大的取值以此类推。" + }, + "mode": { + "type": "string", + "enum": [ + "default", + "fast" + ], + "description": "要使用的爬取模式。Fast 模式在没有 sitemap 的网站上爬取速度可提升约 4 倍,但结果可能不够准确,且不应在大量依赖 JS 渲染的网站上使用。", + "default": "default" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "抓取时忽略网站站点地图", + "default": false + }, + "limit": { + "type": "integer", + "description": "最多爬取页面数", + "default": 10000 + }, + "allowBackwardCrawling": { + "type": "boolean", + "description": "使爬虫能够从特定 URL 导航到之前已链接的页面。例如,从 “example.com/product/123” 跳转回 “example.com/product”。", + "default": false + }, + "allowExternalContentLinks": { + "type": "boolean", + "description": "使爬虫可以跟随链接跳转到外部网站。", + "default": false + } + } + }, + "pageOptions": { + "type": "object", + "properties": { + "headers": { + "type": "object", + "description": "在请求中携带的请求头。可用于发送 Cookies、User-Agent 等信息。" + }, + "includeHtml": { + "type": "boolean", + "description": "在页面中包含内容的 HTML 版本。响应中会返回一个名为 html 的键。", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "在响应中包含页面的原始 HTML 内容。响应中将返回一个名为 rawHtml 的键。", + "default": false + }, + "onlyIncludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "最终输出中仅包含页面中存在的标签、class 和 id。使用逗号分隔的值。示例:'script, .ad, #footer'" + }, + "onlyMainContent": { + "type": "boolean", + "description": "仅返回页面的主要内容,不包括页眉、导航栏、页脚等部分。", + "default": false + }, + "removeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "要从页面中移除的标签、类和 ID。使用逗号分隔的值。示例:'script, .ad, #footer'" + }, + "replaceAllPathsWithAbsolutePaths": { + "type": "boolean", + "description": "将所有图片和链接中的相对路径替换为绝对路径", + "default": false + }, + "screenshot": { + "type": "boolean", + "description": "请附上一张你要抓取的页面顶部截图。", + "default": false + }, + "fullPageScreenshot": { + "type": "boolean", + "description": "请附上你正在抓取页面的全页截图。", + "default": false + }, + "waitFor": { + "type": "integer", + "description": "在获取内容前,先等待页面加载指定的毫秒数", + "default": 0 + } + } + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "在 Google 中搜索关键词,返回排名靠前的页面结果,并为每个页面提供对应的 Markdown 内容", + "operationId": "searchGoogle", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "format": "uri", + "description": "要执行的搜索查询" + }, + "pageOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "仅返回页面的主要内容,不包括页眉、导航栏、页脚等。", + "default": false + }, + "fetchPageContent": { + "type": "boolean", + "description": "获取每个页面的内容。如果为 false,则退回使用基础的快速 SERP API。", + "default": true + }, + "includeHtml": { + "type": "boolean", + "description": "在页面中包含内容的 HTML 版本。响应中会包含一个名为 html 的字段。", + "default": false + }, + "includeRawHtml": { + "type": "boolean", + "description": "在结果中包含页面的原始 HTML 内容。响应中将返回一个 rawHtml 键。", + "default": false + } + } + }, + "searchOptions": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "description": "结果数量上限。测试阶段最大为 20。" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/status/{jobId}": { + "get": { + "tags": [ + "Crawl" + ], + "summary": "获取爬取任务状态", + "operationId": "getCrawlStatus", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "抓取任务 ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "任务状态(已完成、进行中、失败、已暂停)" + }, + "current": { + "type": "integer", + "description": "当前页码" + }, + "total": { + "type": "integer", + "description": "页面总数" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "任务返回的数据(执行中时为 null)" + }, + "partial_data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + }, + "description": "在爬取过程中会以流式方式返回部分文档。**此功能当前处于 alpha 阶段——可能会有不兼容变更**。当某个页面准备就绪时,它会被追加到 `partial_data` 数组中,因此无需等待整个网站全部爬取完成。当爬取结束时,`partial_data` 将变为空,完整结果会出现在 `data` 中。数组响应最多包含 50 个元素;当有新元素加入数组时,最旧的元素(数组开头)会被移除。" + } + } + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/cancel/{jobId}": { + "delete": { + "tags": [ + "Crawl" + ], + "summary": "取消抓取任务", + "operationId": "cancelCrawlJob", + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "爬取任务 ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "退货已取消。" + } + } + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,该页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则为页面的原始 HTML 内容" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "页面状态码" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "在使用 LLM Extraction 功能时显示。页面中根据已定义的 schema 提取出的数据。", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "可在使用 LLM 提取时显示。警告消息会提示你提取过程中的任何问题。" + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则返回页面的原始 HTML 内容" + }, + "index": { + "type": "integer", + "description": "已抓取页面的编号。对于 `partial_data` 特别有用,这样你就能知道数据来自第几页。" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "pageStatusCode": { + "type": "integer", + "description": "页面状态码" + }, + "pageError": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + }, + "SearchResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "markdown": { + "type": "string" + }, + "content": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/zh/v0/features/crawl.mdx b/zh/v0/features/crawl.mdx index 92322299..603531b1 100644 --- a/zh/v0/features/crawl.mdx +++ b/zh/v0/features/crawl.mdx @@ -173,7 +173,6 @@ curl -X POST https://api.firecrawl.dev/v0/crawl \ { "jobId": "1234-5678-9101" } ``` -
### 检查爬取任务
diff --git a/zh/v0/features/extract.mdx b/zh/v0/features/extract.mdx index de293ca8..aa4bc6f9 100644 --- a/zh/v0/features/extract.mdx +++ b/zh/v0/features/extract.mdx @@ -98,7 +98,6 @@ curl -X POST https://api.firecrawl.dev/v0/scrape \ ``` -
### 使用 Python SDK
@@ -130,7 +129,6 @@ data = app.scrape_url('https://news.ycombinator.com', { print(data["llm_extraction"]) ``` -
### 使用 JavaScript SDK
@@ -166,7 +164,6 @@ const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", { console.log(scrapeResult.data["llm_extraction"]); ``` -
### 使用 Go SDK
@@ -222,7 +219,6 @@ func main() { } ``` -
### 使用 Rust SDK
diff --git a/zh/v1/advanced-scraping-guide.mdx b/zh/v1/advanced-scraping-guide.mdx index 79cee3eb..d4e1e6d4 100644 --- a/zh/v1/advanced-scraping-guide.mdx +++ b/zh/v1/advanced-scraping-guide.mdx @@ -195,7 +195,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ 这是该功能的 API 参考:[Scrape Endpoint Documentation](https://docs.firecrawl.dev/api-reference/endpoint/scrape) -
## 提取器选项
@@ -294,7 +293,6 @@ curl -X POST https://api.firecrawl.dev/v1/scrape \ } ``` -
## Actions
@@ -487,7 +485,6 @@ curl -X POST https://api.firecrawl.dev/v1/crawl \ { "id": "1234-5678-9101" } ``` -
### 检查抓取作业
@@ -500,7 +497,6 @@ curl -X GET https://api.firecrawl.dev/v1/crawl/1234-5678-9101 \ -H 'Authorization: Bearer YOUR_API_KEY' ``` -
#### 分页/下一页 URL
@@ -620,7 +616,6 @@ curl -X POST https://api.firecrawl.dev/v1/crawl \ * 最大爬取深度为 2。 * 最多爬取 1000 个页面。 - @@ -644,7 +639,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ 这将返回一个 JSON 对象,其中包含与该 URL 语境相关的链接。 -
### 示例响应
@@ -666,7 +660,6 @@ curl -X POST https://api.firecrawl.dev/v1/map \ } ``` -
### 映射选项
diff --git a/zh/v1/api-reference/endpoint/batch-scrape-delete.mdx b/zh/v1/api-reference/endpoint/batch-scrape-delete.mdx index 4f7fcf54..3133e70c 100644 --- a/zh/v1/api-reference/endpoint/batch-scrape-delete.mdx +++ b/zh/v1/api-reference/endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: '取消批量抓取' -openapi: 'v1-openapi DELETE /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI DELETE /batch/scrape/{id}' --- > 注意:此 API 的全新 [v2 版本](/zh/api-reference/endpoint/batch-scrape-delete) 已上线,功能更强大、性能更出色。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/batch-scrape-get-errors.mdx b/zh/v1/api-reference/endpoint/batch-scrape-get-errors.mdx index cdf209ec..91a92e1b 100644 --- a/zh/v1/api-reference/endpoint/batch-scrape-get-errors.mdx +++ b/zh/v1/api-reference/endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: '获取批量抓取错误' -openapi: 'v1-openapi GET /batch/scrape/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}/errors' --- > 注意:全新的 [v2 版 API](/zh/api-reference/endpoint/batch-scrape-get-errors) 已上线,具备更完善的错误报告与调试能力。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/batch-scrape-get.mdx b/zh/v1/api-reference/endpoint/batch-scrape-get.mdx index 28f6ddc8..72541874 100644 --- a/zh/v1/api-reference/endpoint/batch-scrape-get.mdx +++ b/zh/v1/api-reference/endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: '获取批量抓取状态' -openapi: 'v1-openapi GET /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /batch/scrape/{id}' --- > 注意:此 API 的全新 [v2 版本](/zh/api-reference/endpoint/batch-scrape-get) 现已发布,具备更完善的状态跟踪与监控功能。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/batch-scrape.mdx b/zh/v1/api-reference/endpoint/batch-scrape.mdx index e818cef7..dfe1767e 100644 --- a/zh/v1/api-reference/endpoint/batch-scrape.mdx +++ b/zh/v1/api-reference/endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: '批量抓取' -openapi: 'v1-openapi POST /batch/scrape' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /batch/scrape' --- > 注意:全新的 [v2 版本](/zh/api-reference/endpoint/batch-scrape) 现已提供,具备更高的批处理性能与可靠性。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/crawl-active.mdx b/zh/v1/api-reference/endpoint/crawl-active.mdx index 1bc07095..eb97082f 100644 --- a/zh/v1/api-reference/endpoint/crawl-active.mdx +++ b/zh/v1/api-reference/endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: '获取活跃爬取任务' -openapi: 'v1-openapi GET /crawl/active' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/active' --- > 注意:现已提供此 API 的全新 [v2 版本](/zh/api-reference/endpoint/crawl-active),功能更强大、性能更出色。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/crawl-delete.mdx b/zh/v1/api-reference/endpoint/crawl-delete.mdx index 8fcf5b7a..c197c5c9 100644 --- a/zh/v1/api-reference/endpoint/crawl-delete.mdx +++ b/zh/v1/api-reference/endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: '取消 Crawl' -openapi: 'v1-openapi DELETE /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI DELETE /crawl/{id}' --- > 注意:全新的 [v2 版 API](/zh/api-reference/endpoint/crawl-delete) 现已发布,功能更强大、性能更佳。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/crawl-get-errors.mdx b/zh/v1/api-reference/endpoint/crawl-get-errors.mdx index 8b24165b..f89c1d59 100644 --- a/zh/v1/api-reference/endpoint/crawl-get-errors.mdx +++ b/zh/v1/api-reference/endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: '获取爬取错误' -openapi: 'v1-openapi GET /crawl/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}/errors' --- > 注意:现已提供该 API 的 [v2 版本](/zh/api-reference/endpoint/crawl-get-errors),功能与性能均有提升。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/crawl-get.mdx b/zh/v1/api-reference/endpoint/crawl-get.mdx index 207087f7..05b6a043 100644 --- a/zh/v1/api-reference/endpoint/crawl-get.mdx +++ b/zh/v1/api-reference/endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: '查看 Crawl 状态' -openapi: 'v1-openapi GET /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /crawl/{id}' --- > 注意:我们已推出该 API 的全新 [v2 版本](/zh/api-reference/endpoint/crawl-get),功能与性能均有所提升。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/crawl-post.mdx b/zh/v1/api-reference/endpoint/crawl-post.mdx index 3e577022..31e7b0ce 100644 --- a/zh/v1/api-reference/endpoint/crawl-post.mdx +++ b/zh/v1/api-reference/endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: 'Crawl' -openapi: 'v1-openapi POST /crawl' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /crawl' --- > 注意:新的 [v2 版本 API](/zh/api-reference/endpoint/crawl-post) 现已上线,功能更强、性能更佳。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/credit-usage-historical.mdx b/zh/v1/api-reference/endpoint/credit-usage-historical.mdx index 97bc0218..cf0f4bda 100644 --- a/zh/v1/api-reference/endpoint/credit-usage-historical.mdx +++ b/zh/v1/api-reference/endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "历史点数使用情况" -openapi: 'v1-openapi GET /team/credit-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET + /team/credit-usage/historical' --- 按月返回历史点数使用情况。该端点还可选按 API 密钥细分使用数据。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/credit-usage.mdx b/zh/v1/api-reference/endpoint/credit-usage.mdx index c3072026..01ec9bae 100644 --- a/zh/v1/api-reference/endpoint/credit-usage.mdx +++ b/zh/v1/api-reference/endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: '额度使用' -openapi: 'v1-openapi GET /team/credit-usage' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/credit-usage' --- > 注意:全新的 [v2 版 API](/zh/api-reference/endpoint/credit-usage) 现已发布,功能与性能均有提升。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/deep-research-get.mdx b/zh/v1/api-reference/endpoint/deep-research-get.mdx index 3b85188e..7295086e 100644 --- a/zh/v1/api-reference/endpoint/deep-research-get.mdx +++ b/zh/v1/api-reference/endpoint/deep-research-get.mdx @@ -1,4 +1,4 @@ --- title: "深度调研" -openapi: 'v1-openapi GET /deep-research/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /deep-research/{id}' --- \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/deep-research.mdx b/zh/v1/api-reference/endpoint/deep-research.mdx index 9cd958e6..dc3b283f 100644 --- a/zh/v1/api-reference/endpoint/deep-research.mdx +++ b/zh/v1/api-reference/endpoint/deep-research.mdx @@ -1,6 +1,6 @@ --- title: "Deep Research" -openapi: 'v1-openapi POST /deep-research' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /deep-research' --- Deep Research 端点可对任意主题进行 AI 驱动的深度研究与分析。只需提供研究查询,Firecrawl 将自主探索全网、汇集相关信息,并将结果综合为全面洞见。 diff --git a/zh/v1/api-reference/endpoint/extract-get.mdx b/zh/v1/api-reference/endpoint/extract-get.mdx index b2b00e1f..9bcde85c 100644 --- a/zh/v1/api-reference/endpoint/extract-get.mdx +++ b/zh/v1/api-reference/endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: '获取提取状态' -openapi: 'v1-openapi GET /extract/{id}' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /extract/{id}' --- > 注意:现已推出此 API 的 [v2 版本](/zh/api-reference/endpoint/extract-get),并提供更强大的功能与更高的性能。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/extract.mdx b/zh/v1/api-reference/endpoint/extract.mdx index 4e2daf80..cccc98e6 100644 --- a/zh/v1/api-reference/endpoint/extract.mdx +++ b/zh/v1/api-reference/endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: 'Extract' -openapi: 'v1-openapi POST /extract' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /extract' --- > 注意:此 API 的 [v2 新版本](/zh/api-reference/endpoint/extract) 现已发布,功能更强、性能更佳。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/llmstxt-get.mdx b/zh/v1/api-reference/endpoint/llmstxt-get.mdx index dd41bd3a..eb1f7695 100644 --- a/zh/v1/api-reference/endpoint/llmstxt-get.mdx +++ b/zh/v1/api-reference/endpoint/llmstxt-get.mdx @@ -1,6 +1,6 @@ --- title: "LLMs.txt 状态" -openapi: "v1-openapi GET /llmstxt/{id}" +openapi: "/zh/api-reference/v1-openapi.json V1-OPENAPI GET /llmstxt/{id}" --- 获取 LLMs.txt 生成任务的状态和结果。通过此端点可检查生成是否完成,并获取生成的内容。 @@ -69,7 +69,6 @@ openapi: "v1-openapi GET /llmstxt/{id}" } ``` -
### 轮询建议
diff --git a/zh/v1/api-reference/endpoint/llmstxt.mdx b/zh/v1/api-reference/endpoint/llmstxt.mdx index 303a9ab1..0cdbad2c 100644 --- a/zh/v1/api-reference/endpoint/llmstxt.mdx +++ b/zh/v1/api-reference/endpoint/llmstxt.mdx @@ -1,6 +1,6 @@ --- title: "生成 LLMs.txt" -openapi: "v1-openapi POST /llmstxt" +openapi: "/zh/api-reference/v1-openapi.json V1-OPENAPI POST /llmstxt" --- LLMs.txt 生成端点会为任意网站创建 LLMs.txt 和 LLMs-full.txt 文件。这些文件以结构化、面向 LLM 的格式呈现网站内容,便于语言模型理解和处理信息。 diff --git a/zh/v1/api-reference/endpoint/map.mdx b/zh/v1/api-reference/endpoint/map.mdx index 90362307..4884de95 100644 --- a/zh/v1/api-reference/endpoint/map.mdx +++ b/zh/v1/api-reference/endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "Map" -openapi: 'v1-openapi POST /map' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /map' --- > 注意:现已推出 [v2 版本的此 API](/zh/api-reference/endpoint/map),功能更强大,性能更出色。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/scrape.mdx b/zh/v1/api-reference/endpoint/scrape.mdx index 982bc764..ce805402 100644 --- a/zh/v1/api-reference/endpoint/scrape.mdx +++ b/zh/v1/api-reference/endpoint/scrape.mdx @@ -1,6 +1,6 @@ --- title: 'Scrape' -openapi: 'v1-openapi POST /scrape' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /scrape' --- > 注意:全新的 [v2 版本](/zh/api-reference/endpoint/scrape) 已上线,功能与性能进一步提升。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/search.mdx b/zh/v1/api-reference/endpoint/search.mdx index c8560e17..7bdcc54b 100644 --- a/zh/v1/api-reference/endpoint/search.mdx +++ b/zh/v1/api-reference/endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: 'Search' -openapi: 'v1-openapi POST /search' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /search' --- > 注意:此 API 的全新 [v2 版本](/zh/api-reference/endpoint/search) 已上线,功能更强、性能更优。 diff --git a/zh/v1/api-reference/endpoint/token-usage-historical.mdx b/zh/v1/api-reference/endpoint/token-usage-historical.mdx index de0b5ea8..4fcb6766 100644 --- a/zh/v1/api-reference/endpoint/token-usage-historical.mdx +++ b/zh/v1/api-reference/endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "历史 Token 使用情况" -openapi: 'v1-openapi GET /team/token-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage/historical' --- 按月返回历史 Token 使用情况。该端点还可选按 API 密钥拆分使用量。 \ No newline at end of file diff --git a/zh/v1/api-reference/endpoint/token-usage.mdx b/zh/v1/api-reference/endpoint/token-usage.mdx index 9a1d6570..bd963584 100644 --- a/zh/v1/api-reference/endpoint/token-usage.mdx +++ b/zh/v1/api-reference/endpoint/token-usage.mdx @@ -1,6 +1,6 @@ --- title: 'Token 使用' -openapi: 'v1-openapi GET /team/token-usage' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI GET /team/token-usage' --- > 注意:全新的 [v2 版 API](/zh/api-reference/endpoint/token-usage) 现已上线,功能与性能都有所提升。 \ No newline at end of file diff --git a/zh/v1/api-reference/v1-openapi.json b/zh/v1/api-reference/v1-openapi.json new file mode 100644 index 00000000..99f14c16 --- /dev/null +++ b/zh/v1/api-reference/v1-openapi.json @@ -0,0 +1,3387 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v1", + "description": "用于与 Firecrawl 服务交互并执行 Web 抓取与爬取任务的 API。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v1" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "抓取单个 URL,并可选择使用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要爬取的 URL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "若设置为 true,将对本次抓取启用零数据留存。要启用此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "爬取多个 URL,并可选择使用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "待抓取的 URL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于发送 webhook 的 URL。它会在批量抓取开始时触发(batch_scrape.started)、每个页面抓取完成时触发(batch_scrape.page),以及批量抓取结束时触发(batch_scrape.completed 或 batch_scrape.failed)。其响应内容将与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "发送到 webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将在本次爬取的所有 webhook 请求负载中包含的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "要发送到 webhook URL 的事件类型。(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数。此参数用于为本次批量抓取设置并发上限。若未指定,本次批量抓取将遵循你所在团队的并发限制。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "如果在 urls 数组中指定了无效的 URL,这些 URL 将被忽略。它们不会导致整个请求失败,系统会使用剩余的有效 URL 创建一个批量抓取任务,并在响应的 invalidURLs 字段中返回这些无效的 URL。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果设为 true,将对本次批量抓取启用零数据保留(不保留任何数据)。要启用此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取任务的状态", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消批量抓取作业", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "已成功取消", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "未找到批量抓取作业", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取作业的错误信息", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "爬取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取爬取作业状态", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付款", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消爬取任务", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "已成功取消", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "未找到爬取任务", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抓取任务 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取爬取任务的错误信息", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要付款", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "根据选项批量爬取多个 URL", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于启动爬取的起始 URL" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于在爬取过程中排除匹配 URL 的 URL 路径正则表达式模式。例如,如果你为基础 URL firecrawl.dev 设置 `\"excludePaths\": [\"blog/.*\"]`,那么所有匹配该模式的结果都会被排除,比如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于在爬取过程中指定要包含哪些 URL 的 URL 路径名正则表达式模式。只有与指定模式匹配的路径才会包含在响应中。比如,如果你在基础 URL firecrawl.dev 上设置 `\"includePaths\": [\"blog/.*\"]`,则只有匹配该模式的结果会被包含,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "maxDepth": { + "type": "integer", + "description": "从输入 URL 的基础路径起可爬取的最大绝对深度。也就是说,被抓取 URL 的路径名中最多可以包含多少个 “/”。", + "default": 10 + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "根据发现顺序设置的最大抓取深度。根站点和站点地图中的页面的发现深度为 0。比如,如果你将其设置为 1,并且开启 ignoreSitemap,你将只会抓取输入的 URL 以及该页面上所有链接指向的 URL。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "在爬取网站时忽略网站地图", + "default": false + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "不要仅因为查询参数不同(或没有查询参数)就对同一路径重复抓取", + "default": false + }, + "limit": { + "type": "integer", + "description": "最大抓取页面数。默认上限为 10000。", + "default": 10000 + }, + "allowBackwardLinks": { + "type": "boolean", + "description": "⚠️ 已弃用:请改用 `crawlEntireDomain`。此选项允许爬虫不仅跟踪子路径,还能跟踪指向同级或父级 URL 的内部链接。", + "default": false, + "deprecated": true + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "允许爬虫不仅跟随子路径,还能跟随同级或父级的内部链接。\n\nfalse:只爬取更深层(子级)URL。\n→ 例如:/features/feature-1 → /features/feature-1/tips ✅\n→ 不会跟随 /pricing 或 / ❌\n\ntrue:会爬取任意内部链接,包括同级和父级。\n→ 例如:/features/feature-1 → /pricing、/ 等 ✅\n\n若需要在嵌套路径之外实现更广泛的站内覆盖,请使用 true。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "允许爬虫跟随链接跳转到外部网站。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "允许爬虫沿链接继续爬取主域名下的各个子域名。", + "default": false + }, + "delay": { + "type": "number", + "description": "两次抓取之间的间隔时间(秒)。有助于遵守网站的速率限制。" + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数。此参数用于为本次抓取设置并发上限;如果未设置,将默认使用你团队的并发限制。" + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于发送 webhook 请求的 URL。它会在以下情况下触发:爬取开始时(crawl.started)、每个页面被爬取时(crawl.page),以及爬取完成时(crawl.completed 或 crawl.failed)。响应内容与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "需发送到 webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将在此抓取任务的所有 webhook 负载中包含的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "要发送到该 webhook URL 的事件类型(默认:all)。", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果为 true,将对本次抓取启用零数据留存。要启用此功能,请联系 help@firecrawl.dev。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "基于选项映射多个 URL", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于开始爬取的基础 URL" + }, + "search": { + "type": "string", + "description": "用于映射的搜索查询。在 Alpha 阶段,搜索功能中的“智能”部分最多只会返回 500 条搜索结果。不过,如果映射过程中找到更多结果,则不会对其施加任何限制。" + }, + "ignoreSitemap": { + "type": "boolean", + "description": "在爬取时忽略网站的站点地图(sitemap)。", + "default": true + }, + "sitemapOnly": { + "type": "boolean", + "description": "仅返回在网站的 Sitemap 中找到的链接", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "包含此网站的子域名", + "default": true + }, + "limit": { + "type": "integer", + "description": "返回的最大链接数", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "超时时间(毫秒)。默认情况下不设置超时时间。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "利用 LLM 从页面中提取结构化数据", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "要从中提取数据的 URL。URL 应采用 glob 格式。" + } + }, + "prompt": { + "type": "string", + "description": "用于引导提取流程的提示词" + }, + "schema": { + "type": "object", + "description": "用于定义提取后数据结构的 Schema。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "当为 true 时,提取过程会通过网页搜索获取更多数据", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "为 true 时,将在网站扫描过程中忽略 sitemap.xml 文件", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "当为 true 时,还会扫描所提供的 URL 的子域名", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "为 true 时,用于提取数据的来源将作为 `sources` 键包含在响应中", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": false, + "description": "如果在 urls 数组中指定了无效 URL,这些 URL 将被忽略。请求不会因此整体失败,系统会使用剩余的有效 URL 执行提取操作,并在响应的 invalidURLs 字段中返回这些无效 URL。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "提取成功", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "无效请求", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "提取作业的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取提取任务状态", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "获取当前已认证团队的所有正在进行的抓取任务", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "该抓取任务的唯一标识符" + }, + "teamId": { + "type": "string", + "description": "拥有此抓取任务的团队 ID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "爬取任务的起始 URL" + }, + "options": { + "type": "object", + "description": "本次爬取使用的爬虫配置", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/deep-research": { + "post": { + "summary": "针对某个查询启动深度研究操作", + "operationId": "startDeepResearch", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "要研究的查询内容" + }, + "maxDepth": { + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 7, + "description": "最大迭代深度" + }, + "timeLimit": { + "type": "integer", + "minimum": 30, + "maximum": 600, + "default": 300, + "description": "时间限制(秒)" + }, + "maxUrls": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 20, + "description": "要分析的 URL 数量上限" + }, + "analysisPrompt": { + "type": "string", + "description": "用于最终分析的提示。可用于按特定方式格式化最终分析的 Markdown。" + }, + "systemPrompt": { + "type": "string", + "description": "供研究智能体使用的系统提示词。可用于将研究引导至特定方向。" + }, + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "default": [ + "markdown" + ] + } + }, + "jsonOptions": { + "type": "object", + "description": "JSON 输出选项", + "properties": { + "schema": { + "type": "object", + "description": "用于 JSON 输出的 schema。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "systemPrompt": { + "type": "string", + "description": "用于 JSON 输出的系统提示词" + }, + "prompt": { + "type": "string", + "description": "用于生成 JSON 输出的提示" + } + } + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "研究任务已成功开始", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "研究任务 ID" + } + } + } + } + } + }, + "400": { + "description": "无效的请求参数", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/deep-research/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "研究任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取深度研究任务的状态及结果", + "operationId": "getDeepResearchStatus", + "tags": [ + "Research" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "finalAnalysis": { + "type": "string" + }, + "json": { + "type": "object", + "description": "仅在使用 JSON 格式时显示", + "nullable": true + }, + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "depth": { + "type": "integer" + } + } + } + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "favicon": { + "type": "string" + } + } + } + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "error": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "currentDepth": { + "type": "integer" + }, + "maxDepth": { + "type": "integer" + }, + "totalUrls": { + "type": "integer" + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到 Research 作业", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Research job not found" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "获取当前已认证团队的剩余额度", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_credits": { + "type": "number", + "description": "团队剩余积分", + "example": 1000 + }, + "plan_credits": { + "type": "number", + "description": "套餐中自带的额度数量。不包括优惠券额度、额度包或自动充值获得的额度。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "计费周期的开始日期。使用免费方案时为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期。使用免费套餐时为 null。", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到额度使用信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "获取当前认证团队的历史额度使用记录", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "按 API 密钥获取历史额度使用情况", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "计费周期中使用的 API 密钥名称。若 byApiKey 为 false(默认),则为 null", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "计费周期内已使用的总积分", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "获取已认证团队的剩余 tokens(仅限 Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remaining_tokens": { + "type": "number", + "description": "团队剩余 Token 数", + "example": 1000 + }, + "plan_tokens": { + "type": "number", + "description": "套餐中的 token 数量。不包括优惠券提供的 token。", + "example": 500000 + }, + "billing_period_start": { + "type": "string", + "format": "date-time", + "description": "计费周期的开始日期。若使用免费计划,则为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billing_period_end": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期。在使用免费方案时为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到令牌用量信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "获取当前已认证团队的 Token 历史用量(仅限 Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "按 API 密钥获取历史 Token 用量", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "在该计费周期中使用的 API 密钥名称。当 byApiKey 为 false(默认值)时为 null。", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "计费周期内使用的 Token 总数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "搜索,并可选择抓取搜索结果", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "搜索查询" + }, + "limit": { + "type": "integer", + "description": "返回结果的最大数量", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "tbs": { + "type": "string", + "description": "基于时间的搜索参数。支持预定义的时间范围(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)以及自定义日期范围(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)。" + }, + "location": { + "type": "string", + "description": "搜索结果的 location 参数" + }, + "timeout": { + "type": "integer", + "description": "超时时间(毫秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "从搜索结果中排除对其他 Firecrawl API 端点无效的 URL。这样在将搜索数据传递给其他 Firecrawl API 端点时,有助于减少错误。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "extract" + ] + }, + "default": [] + } + } + } + ], + "description": "搜索结果抓取选项", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "搜索结果标题" + }, + "description": { + "type": "string", + "description": "搜索结果描述" + }, + "url": { + "type": "string", + "description": "搜索结果的URL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "如果请求了抓取,则为 Markdown 内容" + }, + "html": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求,则返回 HTML 内容" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求,则返回原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如在 formats 中请求,则返回发现的链接" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "截图 URL(如果在 formats 中请求)" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "出现问题时的警告信息" + } + } + } + } + } + }, + "408": { + "description": "请求超时", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/llmstxt": { + "post": { + "summary": "为网站生成 LLMs.txt", + "operationId": "generateLLMsTxt", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于生成 LLMs.txt 的 URL" + }, + "maxUrls": { + "type": "integer", + "description": "要分析的 URL 数量上限", + "default": 2 + }, + "showFullText": { + "type": "boolean", + "description": "在响应中包含全文内容", + "default": false + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "LLMs.txt 生成作业已成功启动", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "id": { + "type": "string", + "format": "uuid", + "description": "LLMs.txt 生成作业的 ID" + } + } + } + } + } + }, + "400": { + "description": "无效的请求参数", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Invalid parameters provided" + } + } + } + } + } + } + } + } + }, + "/llmstxt/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "LLMs.txt 生成作业的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取 LLMs.txt 生成任务的状态和结果", + "operationId": "getLLMsTxtStatus", + "tags": [ + "LLMs.txt" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": [ + "processing", + "completed", + "failed" + ] + }, + "data": { + "type": "object", + "properties": { + "llmstxt": { + "type": "string", + "description": "生成的 LLMs.txt 文件内容" + }, + "llmsfulltxt": { + "type": "string", + "description": "当 showFullText 为 true 时的完整文本内容" + } + } + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "生成内容的过期时间" + } + } + } + } + } + }, + "404": { + "description": "未找到 LLMs.txt 的生成任务", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "LLMs.txt generation job not found" + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "BaseScrapeOptions": { + "type": "object", + "properties": { + "onlyMainContent": { + "type": "boolean", + "description": "仅返回页面的主内容,不包括页眉、导航、页脚等。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "要包含在输出中的标签。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "在输出结果中要排除的标签。" + }, + "maxAge": { + "type": "integer", + "description": "如果页面的缓存版本距今的时间小于此处指定的毫秒数,则返回该缓存版本;如果缓存版本的时间超过该值,则会重新抓取页面。如果你不需要极其新鲜的数据,启用此选项可以将抓取速度提升最多 500%。默认值为 0,表示禁用缓存。", + "default": 0 + }, + "headers": { + "type": "object", + "description": "随请求发送的请求头,可用于传递 cookies、User-Agent 等信息。" + }, + "waitFor": { + "type": "integer", + "description": "指定在抓取内容前的延迟时间(毫秒),以便页面有足够时间加载完成。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "如果你想模拟从移动设备端进行抓取,请将其设置为 true。可用于测试响应式页面并获取移动端截图。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "在发送请求时跳过 TLS 证书验证", + "default": false + }, + "timeout": { + "type": "integer", + "description": "请求超时时间(单位:毫秒)", + "default": 30000 + }, + "parsePDF": { + "type": "boolean", + "description": "控制在抓取过程中如何处理 PDF 文件。为 true 时,将提取 PDF 内容并转换为 markdown 格式,费用按页数计费(每页 1 个积分)。为 false 时,将以 base64 编码返回 PDF 文件,统一按总计 1 个积分计费。", + "default": true + }, + "jsonOptions": { + "type": "object", + "description": "JSON 配置对象", + "properties": { + "schema": { + "type": "object", + "description": "用于抽取的数据模式(可选)。必须符合 [JSON Schema](https://json-schema.org/) 标准。" + }, + "systemPrompt": { + "type": "string", + "description": "用于抽取的系统提示词(可选)" + }, + "prompt": { + "type": "string", + "description": "用于无模式抽取的提示词(可选)" + } + } + }, + "actions": { + "type": "array", + "description": "在抓取内容前需要在页面上执行的 actions", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "等待指定的毫秒数" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "等待时间(毫秒)" + }, + "selector": { + "type": "string", + "description": "用于定位该元素的查询选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "进行屏幕截图。链接会出现在响应的 `actions.screenshots` 数组中。" + }, + "fullPage": { + "type": "boolean", + "description": "是否捕获整页截图,还是仅捕获当前视口。", + "default": false + }, + "quality": { + "type": "integer", + "description": "截图质量,从 1 到 100。100 表示最高质量。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "点击元素" + }, + "selector": { + "type": "string", + "description": "用于定位元素的查询选择器", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "点击所有与选择器匹配的元素,而不仅仅是第一个。如果没有任何元素匹配该选择器,也不会抛出错误。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "在输入框、文本区域或 contenteditable 元素中写入文本。注意:在输入之前,必须先使用 “click” 操作将光标聚焦到该元素上。文本将以逐字符方式输入,以模拟键盘输入。" + }, + "text": { + "type": "string", + "description": "要输入的文本", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "请在页面上按下任意按键。按键代码请参见:https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "在页面上按下一个键" + }, + "key": { + "type": "string", + "description": "要按下的键", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "滚动页面或特定元素" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "滚动方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "用于定位需要滚动元素的选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "抓取当前页面内容,并返回其 URL 和 HTML。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "在页面中执行 JavaScript 代码" + }, + "script": { + "type": "string", + "description": "要运行的 JavaScript 代码", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "生成当前页面的 PDF。该 PDF 将会在响应的 `actions.pdfs` 数组中返回。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "生成的 PDF 页面尺寸", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "是否以横向页面方向生成 PDF", + "default": false + }, + "scale": { + "type": "number", + "description": "生成的 PDF 的缩放倍数", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "请求的位置设置。指定后,如果可用,将使用相应的代理,并模拟对应的语言和时区设置。如果未指定,则默认为“US”。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 二位字母国家代码(例如:“US”、“AU”、“DE”、“JP”)", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "按优先级从高到低排列的请求首选语言和区域设置列表。默认为指定位置对应的语言。参见 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "从输出中移除所有 Base64 编码图片,以避免内容过于冗长。图片的替代文本(alt 文本)会保留在输出中,但其 URL 会被占位符替换。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "启用广告和 Cookie 弹窗拦截功能。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "指定要使用的代理类型。\n\n - **basic**:用于抓取几乎没有或仅有基础防爬/反机器人机制的网站的代理。速度快,通常可用。\n - **stealth**:用于抓取具有高级防爬/反机器人机制的网站的隐身代理。速度较慢,但在某些网站上更可靠。每个请求最多消耗 5 个积分。\n - **auto**:如果 basic 代理抓取失败,Firecrawl 会自动使用 stealth 代理重试抓取。如果使用 stealth 重试成功,该次抓取将收取 5 个积分;如果首次使用 basic 即抓取成功,则只按常规费用计费。\n\n如果你未指定代理,Firecrawl 将默认使用 basic。" + }, + "storeInCache": { + "type": "boolean", + "description": "如果为 true,该页面将被存储到 Firecrawl 的索引和缓存中。当你的抓取活动可能涉及数据保护方面的顾虑时,将其设为 false 会很有用。使用某些与敏感抓取相关的参数(actions、headers)时,会强制将此参数设为 false。", + "default": true + } + } + }, + "ScrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseScrapeOptions" + }, + { + "type": "object", + "properties": { + "formats": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "markdown", + "html", + "rawHtml", + "links", + "screenshot", + "screenshot@fullPage", + "json", + "changeTracking" + ] + }, + "description": "输出结果中要包含的 formats。", + "default": [ + "markdown" + ] + }, + "changeTrackingOptions": { + "type": "object", + "description": "用于变更跟踪的选项(Beta)。仅当 formats 中包含 “changeTracking” 时适用。使用变更跟踪时,还必须同时指定 “markdown” formats。", + "properties": { + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "用于变更跟踪的模式。`git-diff` 提供详细的差异对比,而 `json` 则用于比较提取出的 JSON 数据。" + }, + "schema": { + "type": "object", + "description": "在使用“json”模式时用于 JSON 抽取的模式(schema)。用于定义要提取和比较的数据结构。必须符合 [JSON Schema](https://json-schema.org/)。" + }, + "prompt": { + "type": "string", + "description": "在使用“json”模式进行变更跟踪时使用的提示词。如果未提供,则会使用默认提示词。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "用于变更追踪的标签。标签可以将变更追踪历史划分为彼此独立的“分支”,带有特定标签的变更追踪只会与同一标签下的抓取结果进行比较。如果未指定,将使用默认标签(null)。" + } + } + } + } + } + ] + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "如果在 `formats` 中包含 `html`,则返回页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "当 `formats` 中包含 `rawHtml` 时的页面原始 HTML 内容" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "当 `formats` 中包含 `screenshot` 时返回页面截图" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "当 `formats` 中包含 `links` 时,页面上的链接列表" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "仅当请求中提供了 `actions` 参数时,才会返回该参数中指定的 actions 的执行结果。", + "properties": { + "screenshots": { + "type": "array", + "description": "截图 URL,顺序与所提供的截图 actions 保持一致。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "按照提供的 scrape actions 顺序抓取内容。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "按提供的 executeJavascript actions 顺序排列的 JavaScript 返回值。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "生成的 PDF 文件,其顺序与提供的 pdf actions 相同。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + }, + "llm_extraction": { + "type": "object", + "description": "在使用 LLM Extraction 时显示。根据已定义的 schema 从页面中提取的结构化数据。", + "nullable": true + }, + "warning": { + "type": "string", + "nullable": true, + "description": "在使用 LLM 提取时会显示。警告信息会提示你提取过程中的任何问题。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "如果在 `formats` 中包含 `changeTracking`,则会返回变更跟踪信息。仅在请求 `changeTracking` 格式时才会返回。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "当前页面与之比较的上一次抓取时间戳。如果不存在之前的抓取,则为 null。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "两个页面版本对比的结果。`new` 表示该页面之前不存在,`same` 表示内容未变化,`changed` 表示内容已变化,`removed` 表示该页面已被删除。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "当前页面/URL 的可见性。`visible` 表示该 URL 是通过常规途径(链接或 sitemap)发现的,`hidden` 表示该 URL 是通过之前抓取的记录发现的。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "在使用“git-diff”模式时返回的 Git 风格差异内容。仅在模式设置为“git-diff”时才会出现。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "在使用 `json` 模式时的 JSON 比较结果。仅在模式设置为 `json` 时才会提供。它会根据 `schema` 中定义的类型,输出 `previous` 与 `current` 抓取结果中所有键及其对应的值列表。示例见[此处](/features/change-tracking)" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "爬取任务的当前状态。取值可以是 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试爬取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "已成功爬取的页面数量。" + }, + "creditsUsed": { + "type": "integer", + "description": "本次爬取消耗的积分数量。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "爬取任务过期的日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取后续 10MB 数据的 URL。当抓取尚未完成或响应超过 10MB 时会返回该字段。" + }, + "data": { + "type": "array", + "description": "爬取结果数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则为页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果 `includeLinks` 为 true,则返回页面上的链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "页面截图(当 `includeScreenshot` 为 true 时)" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "出错的抓取任务和错误详情", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "故障的 ISO 时间戳" + }, + "url": { + "type": "string", + "description": "已抓取的 URL" + }, + "error": { + "type": "string", + "description": "错误消息" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "在抓取过程中尝试访问但被 robots.txt 阻止的 URL 列表", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "批量抓取任务的当前状态。可以是 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试抓取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "成功抓取的页面数。" + }, + "creditsUsed": { + "type": "integer", + "description": "该批量抓取消耗的额度数。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "批量抓取任务的过期日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取下一个 10MB 数据块的 URL。当批量抓取尚未完成或响应大小超过 10MB 时,会返回该字段。" + }, + "data": { + "type": "array", + "description": "批量爬取的数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,该页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则为页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果 `includeLinks` 为 true,则返回页面中的链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "当 `includeScreenshot` 为 true 时的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则此字段是一个数组,其中包含请求中指定的无效 URL。若没有无效 URL,则该数组为空。若 ignoreInvalidURLs 为 false,则该字段将为 undefined。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,此字段是一个数组,包含请求中指定的所有无效 URL。若没有无效 URL,则该数组为空。若 ignoreInvalidURLs 为 false,则此字段为 undefined。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "提取作业当前状态" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/zh/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx b/zh/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx index a53c94a9..90a1d6cd 100644 --- a/zh/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx +++ b/zh/v1/api-reference/v2-endpoint/batch-scrape-delete.mdx @@ -1,6 +1,6 @@ --- title: "取消批量抓取任务" -openapi: 'v2-openapi DELETE /batch/scrape/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI DELETE /batch/scrape/{id}' ---
diff --git a/zh/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx b/zh/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx index b86da89b..a71487df 100644 --- a/zh/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx +++ b/zh/v1/api-reference/v2-endpoint/batch-scrape-get-errors.mdx @@ -1,6 +1,6 @@ --- title: "获取批量抓取错误信息" -openapi: 'v2-openapi GET /batch/scrape/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}/errors' ---
diff --git a/zh/v1/api-reference/v2-endpoint/batch-scrape-get.mdx b/zh/v1/api-reference/v2-endpoint/batch-scrape-get.mdx index 03d51598..a38c6398 100644 --- a/zh/v1/api-reference/v2-endpoint/batch-scrape-get.mdx +++ b/zh/v1/api-reference/v2-endpoint/batch-scrape-get.mdx @@ -1,6 +1,6 @@ --- title: "获取批量抓取的状态" -openapi: "v2-openapi GET /batch/scrape/{id}" +openapi: "/zh/api-reference/v1-openapi.json V2-OPENAPI GET /batch/scrape/{id}" ---
diff --git a/zh/v1/api-reference/v2-endpoint/batch-scrape.mdx b/zh/v1/api-reference/v2-endpoint/batch-scrape.mdx index dae5be27..61585b11 100644 --- a/zh/v1/api-reference/v2-endpoint/batch-scrape.mdx +++ b/zh/v1/api-reference/v2-endpoint/batch-scrape.mdx @@ -1,6 +1,6 @@ --- title: "批量爬取" -openapi: 'v2-openapi POST /batch/scrape' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /batch/scrape' ---
diff --git a/zh/v1/api-reference/v2-endpoint/crawl-active.mdx b/zh/v1/api-reference/v2-endpoint/crawl-active.mdx index c6503919..cc00a31d 100644 --- a/zh/v1/api-reference/v2-endpoint/crawl-active.mdx +++ b/zh/v1/api-reference/v2-endpoint/crawl-active.mdx @@ -1,6 +1,6 @@ --- title: "获取进行中的爬取任务" -openapi: 'v2-openapi GET /crawl/active' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/active' ---
diff --git a/zh/v1/api-reference/v2-endpoint/crawl-delete.mdx b/zh/v1/api-reference/v2-endpoint/crawl-delete.mdx index 21ace8c8..b9f67d8a 100644 --- a/zh/v1/api-reference/v2-endpoint/crawl-delete.mdx +++ b/zh/v1/api-reference/v2-endpoint/crawl-delete.mdx @@ -1,6 +1,6 @@ --- title: "取消爬取" -openapi: 'v2-openapi DELETE /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI DELETE /crawl/{id}' ---
diff --git a/zh/v1/api-reference/v2-endpoint/crawl-get-errors.mdx b/zh/v1/api-reference/v2-endpoint/crawl-get-errors.mdx index ca803501..ee1551e4 100644 --- a/zh/v1/api-reference/v2-endpoint/crawl-get-errors.mdx +++ b/zh/v1/api-reference/v2-endpoint/crawl-get-errors.mdx @@ -1,6 +1,6 @@ --- title: '获取抓取错误' -openapi: 'v2-openapi GET /crawl/{id}/errors' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}/errors' ---
diff --git a/zh/v1/api-reference/v2-endpoint/crawl-get.mdx b/zh/v1/api-reference/v2-endpoint/crawl-get.mdx index 1e004456..505a01a0 100644 --- a/zh/v1/api-reference/v2-endpoint/crawl-get.mdx +++ b/zh/v1/api-reference/v2-endpoint/crawl-get.mdx @@ -1,6 +1,6 @@ --- title: "获取爬取状态" -openapi: 'v2-openapi GET /crawl/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /crawl/{id}' ---
diff --git a/zh/v1/api-reference/v2-endpoint/crawl-post.mdx b/zh/v1/api-reference/v2-endpoint/crawl-post.mdx index cd315d44..9ca1b71a 100644 --- a/zh/v1/api-reference/v2-endpoint/crawl-post.mdx +++ b/zh/v1/api-reference/v2-endpoint/crawl-post.mdx @@ -1,6 +1,6 @@ --- title: "爬取" -openapi: 'v2-openapi POST /crawl' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /crawl' ---
@@ -20,7 +20,6 @@ openapi: 'v2-openapi POST /crawl' } ``` -
### 更灵活的站点地图控制
diff --git a/zh/v1/api-reference/v2-endpoint/credit-usage-historical.mdx b/zh/v1/api-reference/v2-endpoint/credit-usage-historical.mdx index 8005e996..419969e5 100644 --- a/zh/v1/api-reference/v2-endpoint/credit-usage-historical.mdx +++ b/zh/v1/api-reference/v2-endpoint/credit-usage-historical.mdx @@ -1,6 +1,7 @@ --- title: "历史额度使用" -openapi: 'v2-openapi GET /team/credit-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET + /team/credit-usage/historical' --- 按月返回历史额度使用情况。该端点还可选按 API 密钥细分使用情况。 \ No newline at end of file diff --git a/zh/v1/api-reference/v2-endpoint/credit-usage.mdx b/zh/v1/api-reference/v2-endpoint/credit-usage.mdx index 26ea654a..4898a8f2 100644 --- a/zh/v1/api-reference/v2-endpoint/credit-usage.mdx +++ b/zh/v1/api-reference/v2-endpoint/credit-usage.mdx @@ -1,6 +1,6 @@ --- title: "积分使用情况" -openapi: 'v2-openapi GET /team/credit-usage' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/credit-usage' ---
diff --git a/zh/v1/api-reference/v2-endpoint/extract-get.mdx b/zh/v1/api-reference/v2-endpoint/extract-get.mdx index 82df8ea1..088053b2 100644 --- a/zh/v1/api-reference/v2-endpoint/extract-get.mdx +++ b/zh/v1/api-reference/v2-endpoint/extract-get.mdx @@ -1,6 +1,6 @@ --- title: "获取提取状态" -openapi: 'v2-openapi GET /extract/{id}' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /extract/{id}' ---
diff --git a/zh/v1/api-reference/v2-endpoint/extract.mdx b/zh/v1/api-reference/v2-endpoint/extract.mdx index dab689d3..fa912219 100644 --- a/zh/v1/api-reference/v2-endpoint/extract.mdx +++ b/zh/v1/api-reference/v2-endpoint/extract.mdx @@ -1,6 +1,6 @@ --- title: "Extract" -openapi: 'v2-openapi POST /extract' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI POST /extract' ---
diff --git a/zh/v1/api-reference/v2-endpoint/map.mdx b/zh/v1/api-reference/v2-endpoint/map.mdx index c08c15d2..cdb2d669 100644 --- a/zh/v1/api-reference/v2-endpoint/map.mdx +++ b/zh/v1/api-reference/v2-endpoint/map.mdx @@ -1,6 +1,6 @@ --- title: "地图" -openapi: "v2-openapi POST /map" +openapi: "/zh/api-reference/v1-openapi.json V2-OPENAPI POST /map" ---
@@ -24,7 +24,6 @@ openapi: "v2-openapi POST /map" } ``` -
### 更智能的 URL 发现
diff --git a/zh/v1/api-reference/v2-endpoint/scrape.mdx b/zh/v1/api-reference/v2-endpoint/scrape.mdx index 4f001860..39ad2f4b 100644 --- a/zh/v1/api-reference/v2-endpoint/scrape.mdx +++ b/zh/v1/api-reference/v2-endpoint/scrape.mdx @@ -1,4 +1,4 @@ --- title: "抓取" -openapi: "v2-openapi POST /scrape" +openapi: "/zh/api-reference/v1-openapi.json V2-OPENAPI POST /scrape" --- \ No newline at end of file diff --git a/zh/v1/api-reference/v2-endpoint/search.mdx b/zh/v1/api-reference/v2-endpoint/search.mdx index a207e55e..df1d5f2e 100644 --- a/zh/v1/api-reference/v2-endpoint/search.mdx +++ b/zh/v1/api-reference/v2-endpoint/search.mdx @@ -1,6 +1,6 @@ --- title: "搜索" -openapi: "v2-openapi POST /search" +openapi: "/zh/api-reference/v1-openapi.json V2-OPENAPI POST /search" ---
@@ -24,7 +24,6 @@ openapi: "v2-openapi POST /search" } ``` -
### 响应格式已更改
@@ -42,7 +41,6 @@ v1:平铺的结果列表。v2:按来源类型组织: } ``` -
### 新功能
diff --git a/zh/v1/api-reference/v2-endpoint/token-usage-historical.mdx b/zh/v1/api-reference/v2-endpoint/token-usage-historical.mdx index 66d70ac3..4290de3e 100644 --- a/zh/v1/api-reference/v2-endpoint/token-usage-historical.mdx +++ b/zh/v1/api-reference/v2-endpoint/token-usage-historical.mdx @@ -1,6 +1,6 @@ --- title: "历史 Token 使用情况" -openapi: 'v2-openapi GET /team/token-usage/historical' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage/historical' --- 按月返回历史 Token 使用数据。该端点还可选择按 API key 细分用量。 \ No newline at end of file diff --git a/zh/v1/api-reference/v2-endpoint/token-usage.mdx b/zh/v1/api-reference/v2-endpoint/token-usage.mdx index 1e44e553..b291a6d8 100644 --- a/zh/v1/api-reference/v2-endpoint/token-usage.mdx +++ b/zh/v1/api-reference/v2-endpoint/token-usage.mdx @@ -1,4 +1,4 @@ --- title: "Token 使用情况" -openapi: 'v2-openapi GET /team/token-usage' +openapi: '/zh/api-reference/v1-openapi.json V2-OPENAPI GET /team/token-usage' --- \ No newline at end of file diff --git a/zh/v1/api-reference/v2-openapi.json b/zh/v1/api-reference/v2-openapi.json new file mode 100644 index 00000000..039ef303 --- /dev/null +++ b/zh/v1/api-reference/v2-openapi.json @@ -0,0 +1,3261 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Firecrawl API", + "version": "v2", + "description": "用于与 Firecrawl 服务交互,以执行网页抓取和爬取任务的 API。", + "contact": { + "name": "Firecrawl Support", + "url": "https://firecrawl.dev/support", + "email": "support@firecrawl.dev" + } + }, + "servers": [ + { + "url": "https://api.firecrawl.dev/v2" + } + ], + "paths": { + "/scrape": { + "post": { + "summary": "抓取单个 URL,并可选择使用 LLM 提取信息", + "operationId": "scrapeAndExtractFromUrl", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "要抓取的 URL" + } + }, + "required": [ + "url" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果设为 true,将为本次抓取启用零数据保留。要开启此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrapeResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape": { + "post": { + "summary": "抓取多个 URL,并可选用 LLM 进行信息抽取", + "operationId": "scrapeAndExtractFromUrls", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "要抓取的 URL" + } + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于接收 webhook 的目标 URL。它会在批量抓取开始时触发(batch_scrape.started)、每抓取一个页面时触发(batch_scrape.page),以及批量抓取完成时触发(batch_scrape.completed 或 batch_scrape.failed)。响应内容与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "要发送到 Webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将包含在本次抓取所有 webhook 负载中的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "要发送到该 webhook URL 的事件类型。(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数。此参数用于为本次批量抓取设置并发上限。如未指定,批量抓取将采用你团队的并发上限。" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "如果在 urls 数组中指定了无效 URL,这些 URL 将被忽略。它们不会导致整个请求失败,而是会基于剩余的有效 URL 创建一个批量抓取任务,并在响应的 invalidURLs 字段中返回这些无效的 URL。" + } + }, + "required": [ + "urls" + ] + }, + { + "$ref": "#/components/schemas/ScrapeOptions" + }, + { + "type": "object", + "properties": { + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果为 true,将为本次批量抓取启用零数据留存。要启用此功能,请联系 help@firecrawl.dev" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取作业的状态", + "operationId": "getBatchScrapeStatus", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消批量抓取任务", + "operationId": "cancelBatchScrape", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "已成功取消", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "message": { + "type": "string", + "example": "Batch scrape job successfully cancelled." + } + } + } + } + } + }, + "404": { + "description": "未找到批量爬取作业", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Batch scrape job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/batch/scrape/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "批量抓取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取批量抓取作业的错误信息", + "operationId": "getBatchScrapeErrors", + "tags": [ + "Scraping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要支付", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "爬取任务 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取爬取任务状态", + "operationId": "getCrawlStatus", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlStatusResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过于频繁", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + }, + "delete": { + "summary": "取消抓取任务", + "operationId": "cancelCrawl", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "取消成功", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "cancelled" + ], + "example": "cancelled" + } + } + } + } + } + }, + "404": { + "description": "未找到抓取任务", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Crawl job not found." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl/{id}/errors": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "抓取任务 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取抓取任务的错误", + "operationId": "getCrawlErrors", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlErrorsResponseObj" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/crawl": { + "post": { + "summary": "根据选项抓取多个 URL", + "operationId": "crawlUrls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于开始爬取的起始 URL" + }, + "prompt": { + "type": "string", + "description": "用于根据自然语言生成爬虫选项(下方所有参数)的提示。显式指定的参数会覆盖生成的对应参数。" + }, + "excludePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于在爬取过程中排除匹配 URL 的 URL 路径正则表达式模式。例如,如果你为基础 URL firecrawl.dev 设置 `\"excludePaths\": [\"blog/.*\"]`,那么任何与该模式匹配的结果都会被排除,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "includePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "用于在爬取过程中指定要包含的 URL 的路径名正则表达式模式。只有与这些指定模式匹配的路径才会包含在响应中。例如,如果为基础 URL firecrawl.dev 设置 `\"includePaths\": [\"blog/.*\"]`,则只会返回与该模式匹配的结果,例如:https://www.firecrawl.dev/blog/firecrawl-launch-week-1-recap。" + }, + "maxDiscoveryDepth": { + "type": "integer", + "description": "基于发现顺序的最大爬取深度。根站点以及 sitemap 中的页面的发现深度为 0。比如,如果你将该值设置为 1,并且将 ignoreSitemap 设为 true,则只会爬取你输入的 URL 以及该页面上从中链接到的所有 URL。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include" + ], + "description": "Sitemap 抓取模式。若将其设置为「skip」,爬虫将忽略网站的 sitemap,只抓取你输入的 URL,并从该页面开始继续发现和抓取后续页面。", + "default": "include" + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "不要在同一路径上仅通过修改(或省略)查询参数来重复抓取", + "default": false + }, + "limit": { + "type": "integer", + "description": "要爬取的最大页面数。默认上限为 10000。", + "default": 10000 + }, + "crawlEntireDomain": { + "type": "boolean", + "description": "允许爬虫不仅跟随子路径,还能跟随同级或父级的站内链接。\n\nfalse:只爬取更深层级(子级)URL。\n→ 例如:/features/feature-1 → /features/feature-1/tips ✅\n→ 不会跟随 /pricing 或 / ❌\n\ntrue:会爬取任意站内链接,包括同级和父级。\n→ 例如:/features/feature-1 → /pricing、/ 等 ✅\n\n在需要覆盖嵌套路径之外更广泛的站内链接时,将其设置为 true。", + "default": false + }, + "allowExternalLinks": { + "type": "boolean", + "description": "允许爬虫跟随链接跳转至外部网站。", + "default": false + }, + "allowSubdomains": { + "type": "boolean", + "description": "允许爬虫通过链接访问主域的各个子域名。", + "default": false + }, + "delay": { + "type": "number", + "description": "两次抓取之间的延迟时间(秒)。有助于遵守网站的请求频率限制。" + }, + "maxConcurrency": { + "type": "integer", + "description": "最大并发抓取数。此参数用于为本次抓取任务设置并发上限。如果未指定,将遵循你所在团队的并发限制。" + }, + "webhook": { + "type": "object", + "description": "Webhook 规范对象。", + "properties": { + "url": { + "type": "string", + "description": "用于发送 webhook 的 URL。该 webhook 会在爬取开始时(crawl.started)、每个页面被爬取时(crawl.page),以及爬取完成(crawl.completed)或失败(crawl.failed)时触发。其响应内容与 `/scrape` 端点相同。" + }, + "headers": { + "type": "object", + "description": "发送到 webhook URL 的请求头。", + "additionalProperties": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "description": "将添加到本次抓取所有 webhook 负载中的自定义元数据", + "additionalProperties": true + }, + "events": { + "type": "array", + "description": "应发送到 webhook URL 的事件类型。(默认:全部)", + "items": { + "type": "string", + "enum": [ + "completed", + "page", + "failed", + "started" + ] + } + } + }, + "required": [ + "url" + ] + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "zeroDataRetention": { + "type": "boolean", + "default": false, + "description": "如果设为 true,将对本次爬取启用零数据保留(不存储任何数据)。如需启用此功能,请联系 help@firecrawl.dev" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrawlResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/map": { + "post": { + "summary": "基于选项对多个 URL 进行映射", + "operationId": "mapUrls", + "tags": [ + "Mapping" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "用于开始爬取的起始 URL" + }, + "search": { + "type": "string", + "description": "用于映射的搜索查询。在 Alpha 阶段,搜索功能中的「智能」部分最多只会使用 500 条搜索结果。但如果 map 找到更多结果,则不会对结果数量进行限制。" + }, + "sitemap": { + "type": "string", + "enum": [ + "skip", + "include", + "only" + ], + "description": "映射(mapping)时的 sitemap 模式。如果设置为 `skip`,则不会使用 sitemap 来查找 URL。如果设置为 `only`,则只会返回 sitemap 中包含的 URL。默认情况下(`include`),会同时使用 sitemap 和其他方法来查找 URL。", + "default": "include" + }, + "includeSubdomains": { + "type": "boolean", + "description": "包含此网站的子域名", + "default": true + }, + "ignoreQueryParameters": { + "type": "boolean", + "description": "不要返回包含查询参数的 URL", + "default": true + }, + "limit": { + "type": "integer", + "description": "要返回的最大链接数", + "default": 5000, + "maximum": 30000 + }, + "timeout": { + "type": "integer", + "description": "超时时间(毫秒)。默认不设置超时。" + } + }, + "required": [ + "url" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MapResponse" + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求次数过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract": { + "post": { + "summary": "使用 LLM 从页面中提取结构化数据", + "operationId": "extractData", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri", + "description": "要从中提取数据的 URL。URL 应使用 glob 格式。" + } + }, + "prompt": { + "type": "string", + "description": "用于引导提取过程的提示" + }, + "schema": { + "type": "object", + "description": "用于定义提取后数据结构的 Schema。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "enableWebSearch": { + "type": "boolean", + "description": "为 true 时,提取过程将通过网页搜索获取更多数据", + "default": false + }, + "ignoreSitemap": { + "type": "boolean", + "description": "为 true 时,进行网站扫描时将忽略 sitemap.xml 文件", + "default": false + }, + "includeSubdomains": { + "type": "boolean", + "description": "设为 true 时,也会扫描提供的 URL 的子域名", + "default": true + }, + "showSources": { + "type": "boolean", + "description": "为 true 时,用于提取数据的来源将以 `sources` 键的形式包含在响应中", + "default": false + }, + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + }, + "ignoreInvalidURLs": { + "type": "boolean", + "default": true, + "description": "如果在 urls 数组中指定了无效的 URL,这些 URL 将会被忽略。请求不会因此整体失败,系统会改为基于剩余的有效 URL 执行提取操作,并在响应的 invalidURLs 字段中返回这些无效的 URL。" + } + }, + "required": [ + "urls" + ] + } + } + } + }, + "responses": { + "200": { + "description": "提取成功", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractResponse" + } + } + } + }, + "400": { + "description": "无效请求", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "Invalid input data." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/extract/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "description": "提取任务的 ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "summary": "获取提取任务状态", + "operationId": "getExtractStatus", + "tags": [ + "Extraction" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractStatusResponse" + } + } + } + } + } + } + }, + "/crawl/active": { + "get": { + "summary": "获取当前认证团队的所有进行中的爬取任务", + "operationId": "getActiveCrawls", + "tags": [ + "Crawling" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "crawls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "此爬取任务的唯一标识符" + }, + "teamId": { + "type": "string", + "description": "此抓取任务所属的团队 ID" + }, + "url": { + "type": "string", + "format": "uri", + "description": "抓取任务的起始 URL" + }, + "options": { + "type": "object", + "description": "本次抓取使用的爬虫配置选项", + "properties": { + "scrapeOptions": { + "$ref": "#/components/schemas/ScrapeOptions" + } + } + } + }, + "required": [ + "id", + "teamId", + "url", + "status", + "options" + ] + } + } + }, + "required": [ + "success", + "data" + ] + } + } + } + }, + "402": { + "description": "需要付费", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Payment required to access this resource." + } + } + } + } + } + }, + "429": { + "description": "请求过多", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request rate limit exceeded. Please wait and try again later." + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + }, + "/team/credit-usage": { + "get": { + "summary": "获取已认证团队的剩余可用额度", + "operationId": "getCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingCredits": { + "type": "number", + "description": "团队剩余额度", + "example": 1000 + }, + "planCredits": { + "type": "number", + "description": "套餐中包含的可用额度总数。不包括优惠券额度、额度包或自动充值获得的额度。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "计费周期的起始日期。如果使用免费套餐,则为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "计费周期的结束日期。如果使用免费方案,则为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "找不到额度使用信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find credit usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching credit usage" + } + } + } + } + } + } + } + } + }, + "/team/credit-usage/historical": { + "get": { + "summary": "获取当前已认证团队的历史额度使用记录", + "operationId": "getHistoricalCreditUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "按 API 密钥获取历史额度使用情况", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "计费周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "在该计费周期中使用的 API 密钥名称。若 byApiKey 为 false(默认值),则为 null", + "nullable": true + }, + "totalCredits": { + "type": "integer", + "description": "账单周期内使用的总额度", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical credit usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage": { + "get": { + "summary": "获取当前认证团队的剩余 token 数(仅 Extract)", + "operationId": "getTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "remainingTokens": { + "type": "number", + "description": "团队剩余的可用 token 数", + "example": 1000 + }, + "planTokens": { + "type": "number", + "description": "方案所含的代币数量。不包括优惠券赠送的代币。", + "example": 500000 + }, + "billingPeriodStart": { + "type": "string", + "format": "date-time", + "description": "计费周期的开始日期。若使用免费计划,则为 null", + "example": "2025-01-01T00:00:00Z", + "nullable": true + }, + "billingPeriodEnd": { + "type": "string", + "format": "date-time", + "description": "计费周期的结束日期。若使用免费方案,则为 null", + "example": "2025-01-31T23:59:59Z", + "nullable": true + } + } + } + } + } + } + } + }, + "404": { + "description": "未找到 Token 使用信息", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Could not find token usage information" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching token usage" + } + } + } + } + } + } + } + } + }, + "/team/token-usage/historical": { + "get": { + "summary": "获取已认证团队的历史 Token 使用量(仅限 Extract)", + "operationId": "getHistoricalTokenUsage", + "tags": [ + "Billing" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "name": "byApiKey", + "in": "query", + "description": "获取指定 API 密钥的历史 Token 用量", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "成功响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time", + "description": "计费周期开始日期", + "example": "2025-01-01T00:00:00Z" + }, + "endDate": { + "type": "string", + "format": "date-time", + "description": "账单周期结束日期", + "example": "2025-01-31T23:59:59Z" + }, + "apiKey": { + "type": "string", + "description": "在该计费周期中使用的 API 密钥名称。若 byApiKey 为 false(默认),则为 null", + "nullable": true + }, + "totalTokens": { + "type": "integer", + "description": "在计费周期内使用的总 token 数", + "example": 1000 + } + } + } + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Internal server error while fetching historical token usage" + } + } + } + } + } + } + } + } + }, + "/search": { + "post": { + "summary": "搜索,并可选择抓取搜索结果", + "operationId": "searchAndScrape", + "tags": [ + "Search" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "搜索查询语句" + }, + "limit": { + "type": "integer", + "description": "返回的最大结果数", + "default": 5, + "maximum": 100, + "minimum": 1 + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Web", + "properties": { + "type": { + "type": "string", + "enum": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "基于时间的搜索参数。支持预设时间范围(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)以及自定义日期范围(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)" + }, + "location": { + "type": "string", + "description": "搜索结果的 location 参数" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Images", + "properties": { + "type": { + "type": "string", + "enum": [ + "images" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "News", + "properties": { + "type": { + "type": "string", + "enum": [ + "news" + ] + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "搜索的来源。将决定响应中可用的数组。", + "default": [ + "web" + ] + }, + "tbs": { + "type": "string", + "description": "基于时间的搜索参数。支持预定义时间范围(`qdr:h`、`qdr:d`、`qdr:w`、`qdr:m`、`qdr:y`)和自定义日期范围(`cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`)。" + }, + "location": { + "type": "string", + "description": "搜索结果的 location 参数" + }, + "timeout": { + "type": "integer", + "description": "超时时间(毫秒)", + "default": 60000 + }, + "ignoreInvalidURLs": { + "type": "boolean", + "description": "从搜索结果中排除对其他 Firecrawl 端点无效的 URL。这有助于在将搜索结果数据传输到其他 Firecrawl API 端点时减少错误。", + "default": false + }, + "scrapeOptions": { + "allOf": [ + { + "$ref": "#/components/schemas/ScrapeOptions" + } + ], + "description": "搜索结果抓取选项", + "default": {} + } + }, + "required": [ + "query" + ] + } + } + } + }, + "responses": { + "200": { + "description": "成功的响应", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "搜索结果标题" + }, + "description": { + "type": "string", + "description": "搜索结果描述" + }, + "url": { + "type": "string", + "description": "搜索结果的 URL" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "如果请求了抓取,则返回的 Markdown 内容" + }, + "html": { + "type": "string", + "nullable": true, + "description": "在 formats 中请求时返回的 HTML 内容" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如在 formats 中请求时,返回原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果在 formats 中请求,则会返回找到的链接" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中请求,则返回截图 URL" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "images": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "来自搜索结果的标题" + }, + "imageUrl": { + "type": "string", + "description": "图片 URL" + }, + "imageWidth": { + "type": "integer", + "description": "图片宽度" + }, + "imageHeight": { + "type": "integer", + "description": "图片高度" + }, + "url": { + "type": "string", + "description": "搜索结果的 URL" + }, + "position": { + "type": "integer", + "description": "搜索结果位置" + } + } + } + }, + "news": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "文章标题" + }, + "snippet": { + "type": "string", + "description": "文章节选" + }, + "url": { + "type": "string", + "description": "文章 URL" + }, + "date": { + "type": "string", + "description": "文章日期" + }, + "imageUrl": { + "type": "string", + "description": "文章图片 URL" + }, + "position": { + "type": "integer", + "description": "文章位置" + }, + "markdown": { + "type": "string", + "nullable": true, + "description": "如果请求了抓取时返回的 Markdown 内容" + }, + "html": { + "type": "string", + "nullable": true, + "description": "在 formats 中请求时返回 HTML 内容" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "在 formats 中请求时返回原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "仅在通过 formats 请求时返回的链接" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "如果在 formats 中被请求,则返回截图 URL" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "sourceURL": { + "type": "string" + }, + "statusCode": { + "type": "integer" + }, + "error": { + "type": "string", + "nullable": true + } + } + } + } + } + } + }, + "description": "搜索结果。可用的数组取决于你在请求中指定的数据源。默认情况下会返回 `web` 数组。" + }, + "warning": { + "type": "string", + "nullable": true, + "description": "发生问题时显示的警告信息" + } + } + } + } + } + }, + "408": { + "description": "请求超时", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "string", + "example": "Request timed out" + } + } + } + } + } + }, + "500": { + "description": "服务器错误", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "code": { + "type": "string", + "example": "UNKNOWN_ERROR" + }, + "error": { + "type": "string", + "example": "An unexpected error occurred on the server." + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Formats": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Markdown", + "properties": { + "type": { + "type": "string", + "enum": [ + "markdown" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "html" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Raw HTML", + "properties": { + "type": { + "type": "string", + "enum": [ + "rawHtml" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Links", + "properties": { + "type": { + "type": "string", + "enum": [ + "links" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Summary", + "properties": { + "type": { + "type": "string", + "enum": [ + "summary" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ] + }, + "fullPage": { + "type": "boolean", + "description": "是否捕获整页截图,或仅截取当前视口。", + "default": false + }, + "quality": { + "type": "integer", + "description": "截图质量,取值范围为 1 到 100,100 为最高质量。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "视口宽度(像素)" + }, + "height": { + "type": "integer", + "description": "视口高度(以像素为单位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "JSON", + "properties": { + "type": { + "type": "string", + "enum": [ + "json" + ] + }, + "schema": { + "type": "object", + "description": "用于 JSON 输出的模式定义。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "prompt": { + "type": "string", + "description": "用于生成 JSON 输出的提示" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Change Tracking", + "properties": { + "type": { + "type": "string", + "enum": [ + "changeTracking" + ] + }, + "modes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "git-diff", + "json" + ] + }, + "description": "用于跟踪变更的模式。`git-diff` 会提供详细的差异信息,而 `json` 则会比较提取出的 JSON 数据。" + }, + "schema": { + "type": "object", + "description": "在使用“json”模式进行 JSON 提取时所用的 schema,用于定义要提取和对比的数据结构。必须符合 [JSON Schema](https://json-schema.org/) 规范。" + }, + "prompt": { + "type": "string", + "description": "在使用“json”模式进行变更跟踪时所用的提示词。如果未提供,则会使用默认提示词。" + }, + "tag": { + "type": "string", + "nullable": true, + "default": null, + "description": "用于变更跟踪的标签。标签可以将变更跟踪历史划分为不同的“分支”,带有特定标签的变更跟踪只会与同一标签下的抓取记录进行比较。如果未提供,将使用默认标签(null)。" + } + }, + "required": [ + "type" + ] + } + ] + }, + "description": "要在响应中包含的输出 formats。你可以指定一个或多个 formats,可以是字符串(例如 `'markdown'`),也可以是带有附加选项的对象(例如 `{ type: 'json', schema: {...} }`)。某些 formats 需要设置特定的选项。示例:`['markdown', { type: 'json', schema: {...} }]`。", + "default": [ + "markdown" + ] + }, + "ScrapeOptions": { + "type": "object", + "properties": { + "formats": { + "$ref": "#/components/schemas/Formats" + }, + "onlyMainContent": { + "type": "boolean", + "description": "仅返回页面的主要内容,不包括页眉、导航栏、页脚等。", + "default": true + }, + "includeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "在输出中需要包含的标签。" + }, + "excludeTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "要在输出中排除的标签。" + }, + "maxAge": { + "type": "integer", + "description": "如果页面的缓存版本距离现在的时间未超过此处指定的毫秒数,则返回该缓存页面;如果缓存版本早于该时间阈值,则会重新抓取页面。如果你不需要极其最新的数据,启用此选项可以将抓取速度提升至原来的 5 倍。默认值为 2 天。", + "default": 172800000 + }, + "headers": { + "type": "object", + "description": "随请求一同发送的 Headers,可用于携带 cookies、User-Agent 等信息。" + }, + "waitFor": { + "type": "integer", + "description": "指定在获取内容前的延迟时间(毫秒),以便页面有足够时间加载完成。", + "default": 0 + }, + "mobile": { + "type": "boolean", + "description": "若要模拟在移动设备上的抓取,请将其设置为 true。适用于测试响应式页面并获取移动端截图。", + "default": false + }, + "skipTlsVerification": { + "type": "boolean", + "description": "在发送请求时跳过 TLS 证书验证", + "default": true + }, + "timeout": { + "type": "integer", + "description": "请求超时时间(毫秒)。" + }, + "parsers": { + "type": "array", + "description": "控制在抓取过程中如何处理文件。当包含 \"pdf\"(默认)时,会提取 PDF 内容并转换为 Markdown 格式,按页数计费(每页 1 个积分)。当传入空数组时,PDF 文件将以 base64 编码形式返回,统一收取 1 个积分。", + "items": { + "type": "string", + "enum": [ + "pdf" + ] + }, + "default": [ + "pdf" + ] + }, + "actions": { + "type": "array", + "description": "在抓取页面内容之前需要执行的 actions", + "items": { + "oneOf": [ + { + "type": "object", + "title": "Wait", + "properties": { + "type": { + "type": "string", + "enum": [ + "wait" + ], + "description": "等待指定的毫秒数" + }, + "milliseconds": { + "type": "integer", + "minimum": 1, + "description": "等待的毫秒数" + }, + "selector": { + "type": "string", + "description": "用于定位该元素的查询选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Screenshot", + "properties": { + "type": { + "type": "string", + "enum": [ + "screenshot" + ], + "description": "进行截图。链接将位于响应的 `actions.screenshots` 数组中。" + }, + "fullPage": { + "type": "boolean", + "description": "是否捕获整页截图,还是仅限当前视口。", + "default": false + }, + "quality": { + "type": "integer", + "description": "截图质量,取值范围为 1 到 100,100 表示最高质量。" + }, + "viewport": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "description": "视口的宽度(像素)" + }, + "height": { + "type": "integer", + "description": "视口高度(以像素为单位)" + } + }, + "required": [ + "width", + "height" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Click", + "properties": { + "type": { + "type": "string", + "enum": [ + "click" + ], + "description": "单击某个元素" + }, + "selector": { + "type": "string", + "description": "用于定位该元素的查询选择器", + "example": "#load-more-button" + }, + "all": { + "type": "boolean", + "description": "点击所有与选择器匹配的元素,而不仅仅是第一个。如果没有元素匹配该选择器,也不会抛出错误。", + "default": false + } + }, + "required": [ + "type", + "selector" + ] + }, + { + "type": "object", + "title": "Write text", + "properties": { + "type": { + "type": "string", + "enum": [ + "write" + ], + "description": "在输入框、文本区域或 contenteditable 元素中写入文本。注意:在输入前,必须先通过“click”操作使该元素获得焦点。文本将按字符逐个输入,以模拟键盘输入。" + }, + "text": { + "type": "string", + "description": "要输入的文本", + "example": "Hello, world!" + } + }, + "required": [ + "type", + "text" + ] + }, + { + "type": "object", + "title": "Press a key", + "description": "在页面上按下一个按键。按键代码请参见:https://asawicki.info/nosense/doc/devices/keyboard/key_codes.html。", + "properties": { + "type": { + "type": "string", + "enum": [ + "press" + ], + "description": "在页面上按下任意键" + }, + "key": { + "type": "string", + "description": "按下的键", + "example": "Enter" + } + }, + "required": [ + "type", + "key" + ] + }, + { + "type": "object", + "title": "Scroll", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll" + ], + "description": "滚动整个页面或某个特定元素" + }, + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "滚动方向", + "default": "down" + }, + "selector": { + "type": "string", + "description": "用于滚动目标元素的查询选择器", + "example": "#my-element" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Scrape", + "properties": { + "type": { + "type": "string", + "enum": [ + "scrape" + ], + "description": "抓取当前页面的内容,并返回其 URL 和 HTML。" + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "title": "Execute JavaScript", + "properties": { + "type": { + "type": "string", + "enum": [ + "executeJavascript" + ], + "description": "在页面上执行 JavaScript 代码" + }, + "script": { + "type": "string", + "description": "要运行的 JavaScript 代码", + "example": "document.querySelector('.button').click();" + } + }, + "required": [ + "type", + "script" + ] + }, + { + "type": "object", + "title": "Generate PDF", + "properties": { + "type": { + "type": "string", + "enum": [ + "pdf" + ], + "description": "生成当前页面的 PDF 文件。该 PDF 文件会在响应的 `actions.pdfs` 数组中返回。" + }, + "format": { + "type": "string", + "enum": [ + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "Letter", + "Legal", + "Tabloid", + "Ledger" + ], + "description": "生成的 PDF 的页面大小", + "default": "Letter" + }, + "landscape": { + "type": "boolean", + "description": "是否以横向页面生成 PDF", + "default": false + }, + "scale": { + "type": "number", + "description": "生成的 PDF 的缩放倍数", + "default": 1 + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "location": { + "type": "object", + "description": "请求的地域设置。指定后,如果可用,将使用合适的代理,并模拟对应的语言和时区设置。如果未指定,默认值为“US”。", + "properties": { + "country": { + "type": "string", + "description": "ISO 3166-1 alpha-2 两字母国家代码(例如:'US'、'AU'、'DE'、'JP')", + "pattern": "^[A-Z]{2}$", + "default": "US" + }, + "languages": { + "type": "array", + "description": "按优先级排序的请求首选语言和区域设置。默认为指定位置的语言。详见 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language", + "items": { + "type": "string", + "example": "en-US" + } + } + } + }, + "removeBase64Images": { + "type": "boolean", + "description": "从输出中移除所有 base64 图片,因为它们可能非常长。图片的 alt 文本会保留在输出中,但其 URL 会被占位符替代。", + "default": true + }, + "blockAds": { + "type": "boolean", + "description": "启用广告拦截和 Cookie 弹窗拦截功能。", + "default": true + }, + "proxy": { + "type": "string", + "enum": [ + "basic", + "stealth", + "auto" + ], + "description": "指定要使用的代理类型。\n\n - **basic**:适用于抓取几乎没有或仅有基础反爬虫机制的网站的代理。速度快,通常能正常工作。\n - **stealth**:适用于抓取采用高级反爬虫机制的网站的隐身代理。速度较慢,但在某些站点上更可靠。每次请求最多消耗 5 个积分。\n - **auto**:如果 basic 代理抓取失败,Firecrawl 会自动改用 stealth 代理重试抓取。如果使用 stealth 的重试成功,本次抓取将收取 5 个积分;如果第一次使用 basic 就成功,则仅按常规费用计费。\n\n如果你不指定代理,Firecrawl 将默认使用 auto。", + "default": "auto" + }, + "storeInCache": { + "type": "boolean", + "description": "如果为 true,该页面会存储到 Firecrawl 的索引和缓存中。当您的抓取活动可能涉及数据保护问题时,将其设置为 false 会很有用。使用与敏感抓取相关的一些参数(actions、headers)时,会被强制将该参数设为 false。", + "default": true + } + } + }, + "ScrapeResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "summary": { + "type": "string", + "nullable": true, + "description": "如果 `formats` 中包含 `summary`,则返回页面摘要" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `formats` 中包含 `html` 时的页面内容 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `formats` 中包含 `rawHtml`,则返回页面的原始 HTML 内容" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "当 `formats` 中包含 `screenshot` 时的页面截图" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "如果 `formats` 中包含 `links`,则为页面上的链接列表" + }, + "actions": { + "type": "object", + "nullable": true, + "description": "`actions` 参数中指定的 actions 执行结果。仅当请求中包含 `actions` 参数时才会返回", + "properties": { + "screenshots": { + "type": "array", + "description": "截图 URL,按提供的 screenshot actions 的顺序排列。", + "items": { + "type": "string", + "format": "url" + } + }, + "scrapes": { + "type": "array", + "description": "按照提供的 actions 顺序依次抓取内容。", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "html": { + "type": "string" + } + } + } + }, + "javascriptReturns": { + "type": "array", + "description": "按提供的 executeJavascript actions 顺序排列的 JavaScript 返回值。", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": {} + } + } + }, + "pdfs": { + "type": "array", + "description": "生成的 PDF 文件,其顺序与提供的 pdf actions 保持一致。", + "items": { + "type": "string" + } + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + }, + "warning": { + "type": "string", + "nullable": true, + "description": "在使用 LLM Extraction 时可以显示。警告信息会告知你在提取过程中出现的任何问题。" + }, + "changeTracking": { + "type": "object", + "nullable": true, + "description": "如果在 `formats` 中包含 `changeTracking`,则会提供变更追踪信息。仅在请求 `changeTracking` 格式时才会返回。", + "properties": { + "previousScrapeAt": { + "type": "string", + "format": "date-time", + "nullable": true, + "description": "当前页面要对比的上一次抓取的时间戳。如果不存在之前的抓取,则为 Null。" + }, + "changeStatus": { + "type": "string", + "enum": [ + "new", + "same", + "changed", + "removed" + ], + "description": "两个页面版本比较的结果。`new` 表示该页面之前不存在,`same` 表示内容没有变化,`changed` 表示内容发生了变化,`removed` 表示该页面已被移除。" + }, + "visibility": { + "type": "string", + "enum": [ + "visible", + "hidden" + ], + "description": "当前页面/URL 的可见性。\"visible\" 表示该 URL 是通过自然途径(链接或 sitemap)发现的,\"hidden\" 表示该 URL 是通过此前抓取结果的记忆中发现的。" + }, + "diff": { + "type": "string", + "nullable": true, + "description": "在使用“git-diff”模式时的 Git 风格变更 diff。仅在模式设为“git-diff”时才会出现。" + }, + "json": { + "type": "object", + "nullable": true, + "description": "在使用 `json` 模式时的 JSON 比较结果。仅当模式设置为 `json` 时才会提供。它会根据 `schema` 中定义的类型,输出 `previous` 和 `current` 抓取结果中所有键及其对应值的列表。示例见[此处](/features/change-tracking)。" + } + } + } + } + } + } + }, + "CrawlStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "当前爬取任务的状态。可能为 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试爬取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "已成功爬取的页面数量。" + }, + "creditsUsed": { + "type": "integer", + "description": "本次爬取消耗的积分数量。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "抓取任务失效的日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取下一个 10MB 数据块的 URL。如果抓取尚未完成,或响应大于 10MB,则会返回该字段。" + }, + "data": { + "type": "array", + "description": "爬取结果数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,返回页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则为页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "页面上的链接列表(当 `includeLinks` 为 true 时)" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "`includeScreenshot` 为 true 时的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlErrorsResponseObj": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "抓取任务错误及其详细信息", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "timestamp": { + "type": "string", + "nullable": true, + "description": "失败时的 ISO 时间戳" + }, + "url": { + "type": "string", + "description": "已抓取 URL" + }, + "error": { + "type": "string", + "description": "错误信息" + } + } + } + }, + "robotsBlocked": { + "type": "array", + "description": "在抓取过程中尝试访问但被 robots.txt 拦截的 URL 列表", + "items": { + "type": "string" + } + } + } + }, + "BatchScrapeStatusResponseObj": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "批量抓取任务的当前状态。可能为 `scraping`、`completed` 或 `failed`。" + }, + "total": { + "type": "integer", + "description": "尝试爬取的页面总数。" + }, + "completed": { + "type": "integer", + "description": "已成功抓取的页面数量。" + }, + "creditsUsed": { + "type": "integer", + "description": "本次批量抓取消耗的积分数量。" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "description": "批量抓取的到期日期和时间。" + }, + "next": { + "type": "string", + "nullable": true, + "description": "用于获取下一段 10MB 数据的 URL。当批量抓取尚未完成,或响应内容大于 10MB 时,会返回该字段。" + }, + "data": { + "type": "array", + "description": "批量爬取的数据。", + "items": { + "type": "object", + "properties": { + "markdown": { + "type": "string" + }, + "html": { + "type": "string", + "nullable": true, + "description": "当 `includeHtml` 为 true 时,页面内容的 HTML 版本" + }, + "rawHtml": { + "type": "string", + "nullable": true, + "description": "如果 `includeRawHtml` 为 true,则页面的原始 HTML 内容" + }, + "links": { + "type": "array", + "items": { + "type": "string" + }, + "description": "`includeLinks` 为 true 时返回的页面链接列表" + }, + "screenshot": { + "type": "string", + "nullable": true, + "description": "当 `includeScreenshot` 为 true 时返回的页面截图" + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "language": { + "type": "string", + "nullable": true + }, + "sourceURL": { + "type": "string", + "format": "uri" + }, + " ": { + "type": "string" + }, + "statusCode": { + "type": "integer", + "description": "页面状态码" + }, + "error": { + "type": "string", + "nullable": true, + "description": "页面错误信息" + } + } + } + } + } + } + } + }, + "CrawlResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "BatchScrapeResponseObj": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则该字段是一个数组,包含请求中指定的所有无效 URL。若不存在无效 URL,则该数组为空。若 ignoreInvalidURLs 为 false,则该字段将为 undefined。" + } + } + }, + "MapResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "links": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExtractResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "invalidURLs": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + }, + "description": "如果 ignoreInvalidURLs 为 true,则此字段是一个数组,包含请求中指定的无效 URL。若没有无效 URL,则该数组为空。若 ignoreInvalidURLs 为 false,则该字段为 undefined。" + } + } + }, + "ExtractStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "data": { + "type": "object" + }, + "status": { + "type": "string", + "enum": [ + "completed", + "processing", + "failed", + "cancelled" + ], + "description": "当前提取任务的状态" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "tokensUsed": { + "type": "integer", + "description": "提取作业使用的 token 数量。仅在作业完成后可用。" + } + } + } + } + }, + "security": [ + { + "bearerAuth": [] + } + ] +} \ No newline at end of file diff --git a/zh/v1/features/alpha/llmstxt-npx.mdx b/zh/v1/features/alpha/llmstxt-npx.mdx index 0790d119..9d978644 100644 --- a/zh/v1/features/alpha/llmstxt-npx.mdx +++ b/zh/v1/features/alpha/llmstxt-npx.mdx @@ -30,7 +30,6 @@ sidebarTitle: "使用 NPX 生成" npx generate-llmstxt --api-key YOUR_FIRECRAWL_API_KEY ``` -
### 2. 使用环境变量
@@ -47,7 +46,6 @@ FIRECRAWL_API_KEY=your_api_key_here npx generate-llmstxt ``` -
### 选项
@@ -75,7 +73,6 @@ npx generate-llmstxt -k your_api_key -u https://your-website.com -o custom/path/ npx generate-llmstxt -u https://your-website.com -o content/llms ``` -
## 要求
diff --git a/zh/v1/features/change-tracking.mdx b/zh/v1/features/change-tracking.mdx index 113d2541..1c409fc9 100644 --- a/zh/v1/features/change-tracking.mdx +++ b/zh/v1/features/change-tracking.mdx @@ -69,7 +69,6 @@ console.log(result.changeTracking.previousScrapeAt); // 上次抓取的 ISO 时 } ``` -
### 高级选项
@@ -106,7 +105,6 @@ if (result.changeTracking.json) { } ``` -
### Git diff 结果示例:
@@ -120,7 +118,6 @@ if (result.changeTracking.json) { ... ``` -
### JSON 比较结果示例:
@@ -134,7 +131,6 @@ if (result.changeTracking.json) { } ``` -
### TypeScript 接口
@@ -183,7 +179,6 @@ interface ScrapeParams { } ``` -
## Python SDK
@@ -208,7 +203,6 @@ print("可见性:", result.changeTracking.visibility) # 'visible' 或 'hidden print("上次抓取时间:", result.changeTracking.previousScrapeAt) # 上次抓取的 ISO 时间戳 ``` -
### 高级选项
@@ -243,7 +237,6 @@ if 'json' in result.changeTracking: print(result.changeTracking.json.title.current) # 当前标题 ``` -
### Python 数据模型
@@ -262,7 +255,6 @@ class ChangeTrackingData(pydantic.BaseModel): json: Optional[Any] = None ``` -
## 变更跟踪模式
@@ -289,7 +281,6 @@ class ChangeTrackingData(pydantic.BaseModel): * `chunks`:文件中的变更片段 * `changes`:逐行变更,包含类型(add、delete、normal) -
### JSON 模式
@@ -313,7 +304,6 @@ class ChangeTrackingData(pydantic.BaseModel): 要使用 JSON 模式,你需要提供一个 schema,用于定义要提取和比较的字段。 -
## 重要提示
@@ -364,7 +354,6 @@ class ChangeTrackingData(pydantic.BaseModel): } ``` -
### 爬虫示例
@@ -379,7 +368,6 @@ class ChangeTrackingData(pydantic.BaseModel): } ``` -
### 跟踪商品价格变化
@@ -425,7 +413,6 @@ if result.changeTracking.changeStatus == 'changed': print(f"价格从 {result.changeTracking.json.price.previous} 变为 {result.changeTracking.json.price.current}") ``` -
### 使用 Git-Diff 监控内容更改
@@ -459,7 +446,6 @@ if result.changeTracking.changeStatus == 'changed': print(result.changeTracking.diff.text) ``` -
## 计费
diff --git a/zh/v1/features/extract.mdx b/zh/v1/features/extract.mdx index d36ec3e0..783e9739 100644 --- a/zh/v1/features/extract.mdx +++ b/zh/v1/features/extract.mdx @@ -33,7 +33,6 @@ import ExtractWithoutURLsCURL from "/snippets/zh/v1/extract/base/curl.mdx"; 我们已简化计费,现在 Extract 与其他端点一样使用积分。每个积分相当于 15 个 token。 -
## 使用 `/extract`
diff --git a/zh/v1/features/search-v0.mdx b/zh/v1/features/search-v0.mdx index 3e3dde48..05c95f81 100644 --- a/zh/v1/features/search-v0.mdx +++ b/zh/v1/features/search-v0.mdx @@ -66,7 +66,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ } ``` -
### 使用 Python SDK
@@ -79,7 +78,6 @@ curl -X POST https://api.firecrawl.dev/v0/search \ pip install firecrawl-py ``` -
#### 搜索查询语句
@@ -94,7 +92,6 @@ result = app.search(query="什么是 Firecrawl?") 响应将与上方 curl 命令所示示例的结果类似。 -
### 使用 JavaScript SDK
@@ -107,7 +104,6 @@ result = app.search(query="什么是 Firecrawl?") npm install @mendable/firecrawl-js ``` - #### 搜索查询 ```javascript @@ -122,7 +118,6 @@ const result = await app.search('什么是 Firecrawl?'); 响应将类似于上方 curl 命令所示的结果。 -
### 使用 Go SDK
@@ -135,7 +130,6 @@ const result = await app.search('什么是 Firecrawl?'); go get github.com/mendableai/firecrawl-go ``` - #### 搜索查询 ```go @@ -161,7 +155,6 @@ func main() { } ``` -
### 使用 Rust SDK
@@ -184,7 +177,6 @@ uuid = { version = "^1.10", features = ["v4"] } tokio = { version = "1", features = ["full"] } ``` -
#### 搜索查询语句
diff --git a/zh/webhooks/events.mdx b/zh/webhooks/events.mdx index ce85449e..16575d6f 100644 --- a/zh/webhooks/events.mdx +++ b/zh/webhooks/events.mdx @@ -24,7 +24,6 @@ icon: "bolt" } ``` -
### 通用字段
@@ -60,7 +59,6 @@ icon: "bolt" } ``` -
### `crawl.page`
@@ -99,7 +97,6 @@ icon: "bolt" 事件。 -
### `crawl.completed`
@@ -116,7 +113,6 @@ icon: "bolt" } ``` -
## 批量抓取事件
@@ -139,7 +135,6 @@ icon: "bolt" } ``` -
### `batch_scrape.page`
@@ -178,7 +173,6 @@ icon: "bolt" `batch_scrape.page` 事件。 -
### `batch_scrape.completed`
@@ -195,7 +189,6 @@ icon: "bolt" } ``` -
## 提取事件
@@ -218,7 +211,6 @@ icon: "bolt" } ``` -
### `extract.completed`
@@ -247,7 +239,6 @@ icon: "bolt" } ``` -
### `extract.failed`
@@ -265,7 +256,6 @@ icon: "bolt" } ``` -
## 事件过滤
diff --git a/zh/webhooks/testing.mdx b/zh/webhooks/testing.mdx index 4d8e6deb..ccffec9d 100644 --- a/zh/webhooks/testing.mdx +++ b/zh/webhooks/testing.mdx @@ -43,7 +43,6 @@ cloudflared tunnel --url localhost:3000 } ``` -
## 常见问题排查
diff --git a/zh/x402/search.mdx b/zh/x402/search.mdx index 8a6ac2ff..e5b3d904 100644 --- a/zh/x402/search.mdx +++ b/zh/x402/search.mdx @@ -1,6 +1,6 @@ --- title: '按需搜索' -openapi: 'v1-openapi POST /x402/search' +openapi: '/zh/api-reference/v1-openapi.json V1-OPENAPI POST /x402/search' ---