diff --git a/apify-docs-theme/src/config.js b/apify-docs-theme/src/config.js index ccd4577658..f5882ac6c3 100644 --- a/apify-docs-theme/src/config.js +++ b/apify-docs-theme/src/config.js @@ -19,91 +19,99 @@ const themeConfig = { target: '_self', }, items: [ + // Product zone { - label: 'Academy', - href: `${absoluteUrl}/academy`, - activeBasePath: 'academy', + label: 'Get Started', + href: `${absoluteUrl}/platform/get-started`, + activeBasePath: 'platform/get-started', position: 'left', target: '_self', rel: 'dofollow', }, { - label: 'Platform', - href: `${absoluteUrl}/platform`, - className: 'navbar__active', - activeBasePath: 'platform', + label: 'Actors', + href: `${absoluteUrl}/platform/actors`, + activeBasePath: 'platform/actors', position: 'left', target: '_self', rel: 'dofollow', }, { - label: 'API', - type: 'dropdown', - to: `${absoluteUrl}/api`, + label: 'Integrations', + href: `${absoluteUrl}/platform/integrations`, + activeBasePath: 'platform/integrations', + position: 'left', target: '_self', rel: 'dofollow', - activeBasePath: 'api', + }, + { + label: 'Account', + href: `${absoluteUrl}/platform/account`, + activeBasePath: 'platform/account', + position: 'left', + target: '_self', + rel: 'dofollow', + }, + { + label: 'Resources', + type: 'dropdown', position: 'left', items: [ { - label: 'Reference', + label: 'API Reference', href: `${absoluteUrl}/api/v2`, target: '_self', rel: 'dofollow', }, { - label: 'Client for JavaScript', - href: `${absoluteUrl}/api/client/js/docs`, + label: 'SDK for JavaScript', + href: `${absoluteUrl}/sdk/js/docs/overview`, target: '_self', rel: 'dofollow', }, { - label: 'Client for Python', - href: `${absoluteUrl}/api/client/python/docs/overview`, + label: 'SDK for Python', + href: `${absoluteUrl}/sdk/python/docs/overview`, target: '_self', rel: 'dofollow', }, - ], - }, - { - label: 'SDK', - type: 'dropdown', - to: `${absoluteUrl}/sdk`, - activeBasePath: 'sdk', - position: 'left', - target: '_self', - rel: 'dofollow', - items: [ { - label: 'SDK for JavaScript', - href: `${absoluteUrl}/sdk/js/docs/overview`, + label: 'Client for JavaScript', + href: `${absoluteUrl}/api/client/js/docs`, target: '_self', rel: 'dofollow', }, { - html: 'SDK for Python', - href: `${absoluteUrl}/sdk/python/docs/overview`, + label: 'Client for Python', + href: `${absoluteUrl}/api/client/python/docs/overview`, + target: '_self', + rel: 'dofollow', + }, + { + label: 'CLI', + href: `${absoluteUrl}/cli/docs`, target: '_self', rel: 'dofollow', }, ], }, + // Ecosystem zone { - label: 'CLI', - href: `${absoluteUrl}/cli/docs`, + label: 'Academy', + href: `${absoluteUrl}/academy`, + activeBasePath: 'academy', position: 'left', - activeBasePath: 'cli', target: '_self', rel: 'dofollow', + className: 'navbar__zone-separator', }, { - label: 'Open source', + label: 'Open Source', type: 'dropdown', to: `${absoluteUrl}/open-source`, activeBasePath: 'open-source', target: '_self', position: 'left', - className: 'navbar__item', items: [ { label: 'Crawlee', @@ -161,48 +169,43 @@ const themeConfig = { footer: { links: [ { - title: 'Learn', + title: 'Product', items: [ { - label: 'Academy', - href: `${absoluteUrl}/academy`, - target: '_self', - rel: 'dofollow', - }, - { - label: 'Platform', - href: `${absoluteUrl}/platform`, + label: 'Get Started', + href: `${absoluteUrl}/platform/get-started`, target: '_self', rel: 'dofollow', }, - ], - }, - { - title: 'API', - items: [ { - label: 'Reference', - href: `${absoluteUrl}/api/v2`, + label: 'Actors', + href: `${absoluteUrl}/platform/actors`, target: '_self', rel: 'dofollow', }, { - label: 'Client for JavaScript', - href: `${absoluteUrl}/api/client/js/docs`, + label: 'Integrations', + href: `${absoluteUrl}/platform/integrations`, target: '_self', rel: 'dofollow', }, { - label: 'Client for Python', - href: `${absoluteUrl}/api/client/python/docs/overview`, + label: 'Account', + href: `${absoluteUrl}/platform/account`, target: '_self', rel: 'dofollow', }, ], }, { - title: 'SDK', + title: 'Developer tools', items: [ + { + label: 'API Reference', + href: `${absoluteUrl}/api/v2`, + target: '_self', + rel: 'dofollow', + }, { label: 'SDK for JavaScript', href: `${absoluteUrl}/sdk/js/docs/overview`, @@ -215,33 +218,26 @@ const themeConfig = { target: '_self', rel: 'dofollow', }, - ], - }, - { - title: 'Other', - items: [ { label: 'CLI', href: `${absoluteUrl}/cli/docs`, - position: 'left', - target: '_self', - rel: 'dofollow', - }, - { - label: 'Open source', - href: `${absoluteUrl}/open-source`, - position: 'left', target: '_self', rel: 'dofollow', }, ], }, { - title: 'More', + title: 'Learn & community', items: [ + { + label: 'Academy', + href: `${absoluteUrl}/academy`, + target: '_self', + rel: 'dofollow', + }, { label: 'Crawlee', - to: 'https://crawlee.dev', + href: 'https://crawlee.dev', rel: 'dofollow', }, { @@ -252,6 +248,23 @@ const themeConfig = { href: 'https://discord.com/invite/jyEM2PRvMU', label: 'Discord', }, + ], + }, + { + title: 'Company', + items: [ + { + label: 'Security', + href: `${absoluteUrl}/platform/security`, + target: '_self', + rel: 'dofollow', + }, + { + label: 'Limits', + href: `${absoluteUrl}/platform/limits`, + target: '_self', + rel: 'dofollow', + }, { label: 'Trust Center', href: 'https://trust.apify.com', diff --git a/apify-docs-theme/src/theme/NavbarItem/NavbarNavLink.jsx b/apify-docs-theme/src/theme/NavbarItem/NavbarNavLink.jsx index 1abffd5c64..92bb5fd918 100644 --- a/apify-docs-theme/src/theme/NavbarItem/NavbarNavLink.jsx +++ b/apify-docs-theme/src/theme/NavbarItem/NavbarNavLink.jsx @@ -61,15 +61,17 @@ export default function NavbarNavLink({ .some((item) => (item.to || item.href).endsWith(location.pathname)); if (href) { + const hrefClassName = activeBaseUrl + ? (location.pathname.startsWith(`/${activeBasePath}`) || dropDownHasActiveItem + ? 'navbar__item navbar__link navbar__link--active' + : 'navbar__item navbar__link') + : undefined; + const combinedClassName = [hrefClassName, props.className].filter(Boolean).join(' ') || undefined; return ( ); diff --git a/apify-docs-theme/src/theme/custom.css b/apify-docs-theme/src/theme/custom.css index a9e4b89515..d523db718f 100644 --- a/apify-docs-theme/src/theme/custom.css +++ b/apify-docs-theme/src/theme/custom.css @@ -554,6 +554,22 @@ aside .icon svg[class*=iconExternalLink] { display: none; } +.navbar__zone-separator { + position: relative; + margin-left: 1.2rem !important; + padding-left: 1.6rem !important; +} + +.navbar__zone-separator::before { + content: ''; + position: absolute; + left: 0; + top: 25%; + height: 50%; + width: 1px; + background-color: var(--ifm-color-emphasis-400); +} + .navbar__items { gap: 0.4rem; } diff --git a/nginx.conf b/nginx.conf index 54a7020500..193ca35de1 100644 --- a/nginx.conf +++ b/nginx.conf @@ -268,12 +268,12 @@ server { rewrite ^/actors$ /platform/actors permanent; rewrite ^/tutorials/integrations$ /platform/integrations permanent; rewrite ^/integrations$ /platform/integrations permanent; - rewrite ^/monitoring$ /platform/monitoring permanent; - rewrite ^/proxy$ /platform/proxy permanent; + rewrite ^/monitoring$ /platform/actors/running/monitoring permanent; + rewrite ^/proxy$ /platform/actors/proxy permanent; rewrite ^/robotic-process-automation$ /platform/robotic-process-automation permanent; - rewrite ^/scheduler$ /platform/schedules permanent; - rewrite ^/schedules$ /platform/schedules permanent; - rewrite ^/storage$ /platform/storage permanent; + rewrite ^/scheduler$ /platform/actors/running/schedules permanent; + rewrite ^/schedules$ /platform/actors/running/schedules permanent; + rewrite ^/storage$ /platform/actors/storage permanent; rewrite ^/scraping$ /platform/tutorials permanent; rewrite ^/tutorials$ /platform/tutorials permanent; rewrite ^/web-scraping-101$ /platform/web-scraping-101 permanent; @@ -298,24 +298,24 @@ server { rewrite ^/integrations/slack$ /platform/integrations/slack permanent; rewrite ^/webhooks$ /platform/integrations/webhooks permanent; rewrite ^/integrations/webhooks$ /platform/integrations/webhooks permanent; - rewrite ^/monitoring/actor-or-task-run-failure$ /platform/monitoring/actor-or-task-run-failure permanent; - rewrite ^/monitoring/check-data-quality$ /platform/monitoring/check-data-quality permanent; - rewrite ^/monitoring/monitor-multiple-tasks$ /platform/monitoring/monitor-multiple-tasks permanent; + rewrite ^/monitoring/actor-or-task-run-failure$ /platform/actors/running/monitoring permanent; + rewrite ^/monitoring/check-data-quality$ /platform/actors/running/monitoring permanent; + rewrite ^/monitoring/monitor-multiple-tasks$ /platform/actors/running/monitoring permanent; rewrite ^/monitoring/monitor-shared-datasets$ /platform/monitoring/monitor-shared-datasets permanent; rewrite ^/robotic-process-automation/tips-and-tricks$ /platform/robotic-process-automation/tips-and-tricks permanent; - rewrite ^/proxy/connection-settings$ /platform/proxy/connection-settings permanent; - rewrite ^/proxy/datacenter-proxy$ /platform/proxy/datacenter-proxy permanent; - rewrite ^/proxy/google-serp-proxy$ /platform/proxy/google-serp-proxy permanent; - rewrite ^/proxy/residential-proxy/nodejs-examples$ /platform/proxy/residential-proxy permanent; - rewrite ^/proxy/residential-proxy/python-examples$ /platform/proxy/residential-proxy permanent; - rewrite ^/proxy/residential-proxy/php-examples$ /platform/proxy/residential-proxy permanent; - rewrite ^/proxy/residential-proxy$ /platform/proxy/residential-proxy permanent; - rewrite ^/proxy/troubleshooting$ /platform/proxy/troubleshooting permanent; + rewrite ^/proxy/connection-settings$ /platform/actors/proxy permanent; + rewrite ^/proxy/datacenter-proxy$ /platform/actors/proxy/datacenter-proxy permanent; + rewrite ^/proxy/google-serp-proxy$ /platform/actors/proxy/google-serp-proxy permanent; + rewrite ^/proxy/residential-proxy/nodejs-examples$ /platform/actors/proxy/residential-proxy permanent; + rewrite ^/proxy/residential-proxy/python-examples$ /platform/actors/proxy/residential-proxy permanent; + rewrite ^/proxy/residential-proxy/php-examples$ /platform/actors/proxy/residential-proxy permanent; + rewrite ^/proxy/residential-proxy$ /platform/actors/proxy/residential-proxy permanent; + rewrite ^/proxy/troubleshooting$ /platform/actors/proxy permanent; rewrite ^/web-scraping-101/anti-scraping-techniques$ /platform/web-scraping-101/anti-scraping-techniques permanent; rewrite ^/web-scraping-101/web-scraping-techniques$ /platform/web-scraping-101/web-scraping-techniques permanent; - rewrite ^/storage/dataset$ /platform/storage/dataset permanent; - rewrite ^/storage/key-value-store$ /platform/storage/key-value-store permanent; - rewrite ^/storage/request-queue$ /platform/storage/request-queue permanent; + rewrite ^/storage/dataset$ /platform/actors/storage/dataset permanent; + rewrite ^/storage/key-value-store$ /platform/actors/storage/key-value-store permanent; + rewrite ^/storage/request-queue$ /platform/actors/storage/request-queue permanent; rewrite ^/access-rights/organization-account/how-to-use$ /platform/access-rights/organization-account/how-to-use permanent; rewrite ^/access-rights/organization-account/setup$ /platform/access-rights/organization-account/setup permanent; rewrite ^/tutorials/analyze-pages-and-fix-errors$ /platform/tutorials/analyze-pages-and-fix-errors permanent; @@ -386,8 +386,8 @@ server { rewrite ^/proxy/google-serp-proxy/python-examples$ /platform/proxy/google-serp-proxy/examples permanent; rewrite ^/proxy/google-serp-proxy/php-examples$ /platform/proxy/google-serp-proxy/examples permanent; rewrite ^/proxy/google-serp-proxy/examples$ /platform/proxy/google-serp-proxy/examples permanent; - rewrite ^/proxy/residential-proxy/tips-and-tricks$ /platform/proxy/residential-proxy permanent; - rewrite ^/platform/proxy/residential-proxy/tips-and-tricks$ /platform/proxy/residential-proxy permanent; + rewrite ^/proxy/residential-proxy/tips-and-tricks$ /platform/actors/proxy/residential-proxy permanent; + rewrite ^/platform/proxy/residential-proxy/tips-and-tricks$ /platform/actors/proxy/residential-proxy permanent; rewrite ^/scraping/cheerio-scraper$ /platform/tutorials/apify-scrapers/cheerio-scraper permanent; rewrite ^/tutorials/apify-scrapers/cheerio-scraper$ /platform/tutorials/apify-scrapers/cheerio-scraper permanent; rewrite ^/scraping/getting-started$ /platform/tutorials/apify-scrapers/getting-started permanent; @@ -520,19 +520,25 @@ server { rewrite ^/platform/tutorials/quick-start$ /platform/actors/running redirect; rewrite ^/platform/tutorials$ /platform/actors/running redirect; - # Reorganization of docs: Access rights - rewrite ^/platform/access-rights$ /platform/collaboration/access-rights redirect; - rewrite ^/platform/access-rights/organization-account$ /platform/collaboration/organization-account redirect; - rewrite ^/platform/access-rights/organization-account/setup$ /platform/collaboration/organization-account/setup redirect; - rewrite ^/platform/access-rights/organization-account/how-to-use$ /platform/collaboration/organization-account/how-to-use redirect; - rewrite ^/platform/access-rights/list-of-permissions$ /platform/collaboration/list-of-permissions redirect; + # Reorganization of docs: Access rights (now under /account) + rewrite ^/platform/access-rights$ /platform/account/collaboration/access-rights redirect; + rewrite ^/platform/access-rights/organization-account$ /platform/account/collaboration/organization-account redirect; + rewrite ^/platform/access-rights/organization-account/setup$ /platform/account/collaboration/organization-account/setup redirect; + rewrite ^/platform/access-rights/organization-account/how-to-use$ /platform/account/collaboration/organization-account/how-to-use redirect; + rewrite ^/platform/access-rights/list-of-permissions$ /platform/account/collaboration/access-rights redirect; - # Reorganization of development section + # Reorganization of docs: Collaboration section (moved from /account to /account/collaboration) + rewrite ^/platform/account/access-rights$ /platform/account/collaboration/access-rights redirect; + rewrite ^/platform/account/general-resource-access(.*)$ /platform/account/collaboration/general-resource-access$1 redirect; + rewrite ^/platform/account/organization-account(.*)$ /platform/account/collaboration/organization-account$1 redirect; + rewrite ^/platform/account/list-of-permissions$ /platform/account/collaboration/access-rights redirect; + + # Reorganization of development section (schema paths updated for input-output-schemas) rewrite ^/platform/actors/development/actor-config$ /platform/actors/development/actor-definition/actor-json redirect; rewrite ^/platform/actors/development/base-docker-images$ /platform/actors/development/actor-definition/dockerfile redirect; - rewrite ^/platform/actors/development/secret-input$ /platform/actors/development/actor-definition/input-schema/secret-input redirect; - rewrite ^/platform/actors/development/input-schema$ /platform/actors/development/actor-definition/input-schema/specification/v1 redirect; - rewrite ^/platform/actors/development/output-schema$ /platform/actors/development/actor-definition/output-schema redirect; + rewrite ^/platform/actors/development/secret-input$ /platform/actors/development/input-output-schemas/secret-input redirect; + rewrite ^/platform/actors/development/input-schema$ /platform/actors/development/input-output-schemas/specification/v1 redirect; + rewrite ^/platform/actors/development/output-schema$ /platform/actors/development/input-output-schemas/output-schema redirect; rewrite ^/platform/actors/development/container-web-server$ /platform/actors/development/programming-interface/container-web-server redirect; rewrite ^/platform/actors/development/environment-variables$ /platform/actors/development/programming-interface/environment-variables redirect; rewrite ^/platform/actors/development/builds$ /platform/actors/development/builds-and-runs/builds redirect; @@ -541,6 +547,19 @@ server { rewrite ^/platform/actors/development/testing-and-maintenance$ /platform/actors/development/deployment/automated-tests redirect; rewrite ^/platform/actors/development/source-code$ /platform/actors/development/deployment/source-types redirect; + # IA v2 platform restructure + rewrite ^/platform/schedules$ /platform/actors/running/schedules redirect; + rewrite ^/platform/monitoring$ /platform/actors/running/monitoring redirect; + rewrite ^/platform/storage(.*)$ /platform/actors/storage$1 redirect; + rewrite ^/platform/proxy(.*)$ /platform/actors/proxy$1 redirect; + rewrite ^/platform/console(.*)$ /platform/account$1 redirect; + rewrite ^/platform/collaboration(.*)$ /platform/account$1 redirect; + rewrite ^/platform/actors/development/quick-start(.*)$ /platform/get-started/build-an-actor$1 redirect; + rewrite ^/platform/actors/development/actor-definition/input-schema(.*)$ /platform/actors/development/input-output-schemas/input-schema$1 redirect; + rewrite ^/platform/actors/development/actor-definition/output-schema(.*)$ /platform/actors/development/input-output-schemas/output-schema$1 redirect; + rewrite ^/platform/actors/development/actor-definition/dataset-schema(.*)$ /platform/actors/development/input-output-schemas/dataset-schema$1 redirect; + rewrite ^/platform/actors/development/actor-definition/key-value-store-schema$ /platform/actors/development/input-output-schemas/key-value-store-schema redirect; + # Academy restructuring rewrite ^/academy/advanced-web-scraping/scraping-paginated-sites$ /academy/advanced-web-scraping/crawling/crawling-with-search permanent; rewrite ^/academy/php$ /academy/php/use-apify-from-php redirect; # not permanent in case we want to reuse /php in the future diff --git a/sources/academy/ai/ai-agents.mdx b/sources/academy/ai/ai-agents.mdx index 8ccea0a205..403928ba7c 100644 --- a/sources/academy/ai/ai-agents.mdx +++ b/sources/academy/ai/ai-agents.mdx @@ -52,7 +52,7 @@ _Example input:_ _Example output:_ - Text response with insights -- Data stored in Apify [Dataset](/platform/storage/dataset) +- Data stored in Apify [Dataset](/platform/actors/storage/dataset) :::note Agent memory diff --git a/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx b/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx index 44896742dd..b9a5a742d0 100644 --- a/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx +++ b/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx @@ -59,7 +59,7 @@ You can Actorize various projects ranging from open-source libraries, throughout Use these criteria to decide if your project is a good candidate for Actorization: 1. _Is it self-contained?_ Does the project work non-interactively, with a well-defined, preferably structured input and output format? Positive examples include various data processing utilities, web scrapers and other automation scripts. Negative examples are GUI applications or applications that run indefinitely. If you want to run HTTP APIs on Apify, you can do so using [Actor Standby](/platform/actors/development/programming-interface/standby). -2. _Can the state be stored in Apify storages?_ If the application has state that can be stored in a small number of files it can utilize [key-value store](/platform/storage/key-value-store), or if it processes records that can be stored in Apify’s [request queue](/platform/storage/request-queue). If the output consists of one or many similar JSON objects, it can utilize [dataset](/platform/storage/dataset). +2. _Can the state be stored in Apify storages?_ If the application has state that can be stored in a small number of files it can utilize [key-value store](/platform/actors/storage/key-value-store), or if it processes records that can be stored in Apify’s [request queue](/platform/actors/storage/request-queue). If the output consists of one or many similar JSON objects, it can utilize [dataset](/platform/actors/storage/dataset). 3. _Can it be containerized?_ The project needs to be able to run in a Docker container. Apify currently does not support GPU workloads. External services (e.g., databases) need to be managed by developer. 4. _Can it use Apify tooling?_ Javascript/Typescript applications and Python applications can be Actorized with the help of the [Apify SDK](/sdk), which makes easy for your code to interacts with the Apify platform. Applications that can be run using just the CLI can also be Actorized using the Apify CLI by writing a simple shell script that retrieves user input using [Apify CLI](/cli/), then runs your application and sends the results back to Apify (also using the CLI). If your application is implemented differently, you can still call the [Apify API](/api/v2) directly - it’s just HTTP and pretty much every language has support for that but the implementation is less straightforward. @@ -83,7 +83,7 @@ In case you're starting a new project, we strongly advise to start with a [templ :::note Quick Start for beginners - For a step-by-step introduction to creating your first Actor (including tech stack choices and development paths), see [Quick Start](/platform/actors/development/quick-start). + For a step-by-step introduction to creating your first Actor (including tech stack choices and development paths), see [Quick Start](/platform/get-started/build-an-actor). ::: @@ -100,7 +100,7 @@ These steps are the bare minimum you need to run your code on Apify. The rest of Most Actors accept an input and produce an output. As part of Actorization, you need to define the input and output structure of your application. -For detailed information, read the docs for [input schema](/platform/actors/development/actor-definition/input-schema), [dataset schema](/platform/actors/development/actor-definition/dataset-schema), and general [storage](/platform/storage). +For detailed information, read the docs for [input schema](/platform/actors/development/input-output-schemas/input-schema), [dataset schema](/platform/actors/development/input-output-schemas/dataset-schema), and general [storage](/platform/actors/storage). #### Design guidelines @@ -113,7 +113,7 @@ For detailed information, read the docs for [input schema](/platform/actors/deve ### 3. Handle state persistence (optional) -If your application performs a number of well-defined subtasks, the [request queue](/platform/storage/request-queue) lets you pause and resume execution on job restart. This is important for long-running jobs that might be migrated between servers at some point. In addition, this allows the Apify platform to display the progress to your users in the UI. +If your application performs a number of well-defined subtasks, the [request queue](/platform/actors/storage/request-queue) lets you pause and resume execution on job restart. This is important for long-running jobs that might be migrated between servers at some point. In addition, this allows the Apify platform to display the progress to your users in the UI. A lightweight alternative to the request queue is simply storing the state of your application as a JSON object in the key-value store and checking for that when your Actor is starting. diff --git a/sources/academy/platform/deploying_your_code/input_schema.md b/sources/academy/platform/deploying_your_code/input_schema.md index 82eeab6b30..ea64c6d82a 100644 --- a/sources/academy/platform/deploying_your_code/input_schema.md +++ b/sources/academy/platform/deploying_your_code/input_schema.md @@ -9,7 +9,7 @@ slug: /deploying-your-code/input-schema --- -Though writing an [input schema](/platform/actors/development/actor-definition/input-schema) for an Actor is not a required step, it's definitely an ideal one. The Apify platform will read the `INPUT_SCHEMA.json` file within the root of your project and generate a user interface for entering input into your Actor, which makes it significantly easier for non-developers (and even developers) to configure and understand the inputs your Actor can receive. Because of this, we'll be writing an input schema for our example Actor. +Though writing an [input schema](/platform/actors/development/input-output-schemas/input-schema) for an Actor is not a required step, it's definitely an ideal one. The Apify platform will read the `INPUT_SCHEMA.json` file within the root of your project and generate a user interface for entering input into your Actor, which makes it significantly easier for non-developers (and even developers) to configure and understand the inputs your Actor can receive. Because of this, we'll be writing an input schema for our example Actor. :::note JSON requirement @@ -55,7 +55,7 @@ Each property's key corresponds to the name we're expecting within our code, whi ## Property types & editor types {#property-types} -Within our new **numbers** property, there are two more fields we must specify. Firstly, we must let the platform know that we're expecting an array of numbers with the **type** field. Then, we should also instruct Apify on which UI component to render for this input property. In our case, we have an array of numbers, which means we should use the **json** editor type that we discovered in the ["array" section](/platform/actors/development/actor-definition/input-schema/specification/v1#array) of the input schema documentation. We could also use **stringList**, but then we'd have to parse out the numbers from the strings. +Within our new **numbers** property, there are two more fields we must specify. Firstly, we must let the platform know that we're expecting an array of numbers with the **type** field. Then, we should also instruct Apify on which UI component to render for this input property. In our case, we have an array of numbers, which means we should use the **json** editor type that we discovered in the ["array" section](/platform/actors/development/input-output-schemas/specification/v1#array) of the input schema documentation. We could also use **stringList**, but then we'd have to parse out the numbers from the strings. ```json { @@ -106,8 +106,8 @@ Here is what the input schema we wrote will render on the platform: Later on, we'll be building more complex input schemas, as well as discussing how to write quality input schemas that allow the user to understand the Actor. -It's not expected to memorize all of the fields that properties can take or the different editor types available, which is why it's always good to reference the [input schema documentation](/platform/actors/development/actor-definition/input-schema) when writing a schema. +It's not expected to memorize all of the fields that properties can take or the different editor types available, which is why it's always good to reference the [input schema documentation](/platform/actors/development/input-output-schemas/input-schema) when writing a schema. ## Next up {#next} -In the [next lesson](/platform/actors/development/actor-definition/dataset-schema), we'll learn how to generate an appealing Overview table to display our Actor's results in real time, so users can get immediate feedback about the data being extracted. +In the [next lesson](/platform/actors/development/input-output-schemas/dataset-schema), we'll learn how to generate an appealing Overview table to display our Actor's results in real time, so users can get immediate feedback about the data being extracted. diff --git a/sources/academy/platform/deploying_your_code/inputs_outputs.md b/sources/academy/platform/deploying_your_code/inputs_outputs.md index db05c0338f..a26c8c021a 100644 --- a/sources/academy/platform/deploying_your_code/inputs_outputs.md +++ b/sources/academy/platform/deploying_your_code/inputs_outputs.md @@ -19,7 +19,7 @@ Understanding inputs and outputs is essential because they are read/written diff ## A bit about storage {#about-storage} -You can read/write your inputs/outputs: to the [key-value store](/platform/storage/key-value-store), or to the [dataset](/platform/storage/dataset). The key-value store can be used to store any sort of unorganized/unrelated data in any format, while the data pushed to a dataset typically resembles a table with columns (fields) and rows (items). Each Actor's run is allocated both a default dataset and a default key-value store. +You can read/write your inputs/outputs: to the [key-value store](/platform/actors/storage/key-value-store), or to the [dataset](/platform/actors/storage/dataset). The key-value store can be used to store any sort of unorganized/unrelated data in any format, while the data pushed to a dataset typically resembles a table with columns (fields) and rows (items). Each Actor's run is allocated both a default dataset and a default key-value store. When running locally, these storages are accessible through the **storage** folder within your project's root directory, while on the platform they are accessible via Apify's API. diff --git a/sources/academy/platform/deploying_your_code/output_schema.md b/sources/academy/platform/deploying_your_code/output_schema.md index ed3c6156ee..1ed6165b18 100644 --- a/sources/academy/platform/deploying_your_code/output_schema.md +++ b/sources/academy/platform/deploying_your_code/output_schema.md @@ -162,7 +162,7 @@ Great! Now that everything is set up, it's time to run the Actor and admire your :::tip Additional resources -Visit the [dataset schema documentation](/platform/actors/development/actor-definition/dataset-schema) for more detailed information about how to implement this feature. +Visit the [dataset schema documentation](/platform/actors/development/input-output-schemas/dataset-schema) for more detailed information about how to implement this feature. ::: diff --git a/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md b/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md index e5f034e1aa..375376d266 100644 --- a/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md +++ b/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md @@ -19,7 +19,7 @@ You might have already noticed that we've been using the **RESIDENTIAL** proxy g ## Learning 🧠 {#learning} - Skim [this page](https://apify.com/proxy) for a general idea of Apify Proxy. -- Give the [proxy documentation](/platform/proxy) a solid readover (feel free to skip most of the examples). +- Give the [proxy documentation](/platform/actors/proxy) a solid readover (feel free to skip most of the examples). - Check out the [anti-scraping guide](../../webscraping/anti_scraping/index.md). - Gain a solid understanding of the [SessionPool](https://crawlee.dev/api/core/class/SessionPool). - Look at a few Actors on the [Apify store](https://apify.com/store). How are they utilizing proxies? diff --git a/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md b/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md index ea5640c14d..949ab48808 100644 --- a/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md +++ b/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md @@ -23,8 +23,8 @@ Storage allows us to save persistent data for further processing. As you'll lear ## Learning 🧠 {#learning} - Check out [the docs about Actor tasks](/platform/actors/running/tasks). -- Read about the [two main storage options](/platform/storage/dataset) on the Apify platform. -- Understand the [crucial differences between named and unnamed storages](/platform/storage/usage#named-and-unnamed-storages). +- Read about the [two main storage options](/platform/actors/storage/dataset) on the Apify platform. +- Understand the [crucial differences between named and unnamed storages](/platform/actors/storage/usage#named-and-unnamed-storages). - Learn about the [`Dataset`](/sdk/js/reference/class/Dataset) and [`KeyValueStore`](/sdk/js/reference/class/KeyValueStore) objects in the Apify SDK. ## Knowledge check 📝 {#quiz} diff --git a/sources/academy/platform/getting_started/creating_actors.md b/sources/academy/platform/getting_started/creating_actors.md index a1c6505b43..87b8e0e517 100644 --- a/sources/academy/platform/getting_started/creating_actors.md +++ b/sources/academy/platform/getting_started/creating_actors.md @@ -56,7 +56,7 @@ You will end up on a template detail page where you can see all the important in ### Using the template in the Web IDE {#web-ide} -By clicking **Use this template** button you will create the Actor in Apify Console and you will be moved to the **Code** tab with the [Web IDE](/platform/actors/development/quick-start/web-ide) where you can see the code of the template and start editing it. +By clicking **Use this template** button you will create the Actor in Apify Console and you will be moved to the **Code** tab with the [Web IDE](/platform/get-started/build-an-actor/web-ide) where you can see the code of the template and start editing it. :::tip Web IDE @@ -143,7 +143,7 @@ The Actor takes the `url` from the input and then: 3. Extracts headings (H1 - H6) from the page. 4. Stores the extracted data. -The extracted data is stored in the [Dataset](/platform/storage/dataset) where you can preview it and download it. We'll show how to do that later in [Run the Actor](#run-the-actor) section. +The extracted data is stored in the [Dataset](/platform/actors/storage/dataset) where you can preview it and download it. We'll show how to do that later in [Run the Actor](#run-the-actor) section. :::tip Customize template diff --git a/sources/academy/platform/getting_started/inputs_outputs.md b/sources/academy/platform/getting_started/inputs_outputs.md index 1b942658df..621202fdd9 100644 --- a/sources/academy/platform/getting_started/inputs_outputs.md +++ b/sources/academy/platform/getting_started/inputs_outputs.md @@ -69,7 +69,7 @@ This step isn't necessary, as the Actor will still be able to take input in JSON :::tip Learn more -If you're interested in learning more about how the code works, and what the `INPUT_SCHEMA.json` means, read about [inputs](/sdk/js/docs/examples/accept-user-input) and [adding data to a dataset](/sdk/js/docs/examples/add-data-to-dataset) in the Apify SDK documentation, and refer to the [input schema docs](/platform/actors/development/actor-definition/input-schema/specification/v1#integer). +If you're interested in learning more about how the code works, and what the `INPUT_SCHEMA.json` means, read about [inputs](/sdk/js/docs/examples/accept-user-input) and [adding data to a dataset](/sdk/js/docs/examples/add-data-to-dataset) in the Apify SDK documentation, and refer to the [input schema docs](/platform/actors/development/input-output-schemas/specification/v1#integer). ::: @@ -96,7 +96,7 @@ On the results tab, there are a whole lot of options for which format to view/do There's our solution! Did it work for you as well? Now, we can download the data right from the Dataset tab to be used elsewhere, or even programmatically retrieve it by using [Apify's API](/api/v2) (we'll be discussing how to do this in the next lesson). -It's important to note that the default dataset of the Actor, which we pushed our solution to, will be retained for 7 days. If we wanted the data to be retained for an indefinite period of time, we'd have to use a named dataset. For more information about named storages vs unnamed storages, read a bit about [data retention on the Apify platform](/platform/storage/usage#data-retention). +It's important to note that the default dataset of the Actor, which we pushed our solution to, will be retained for 7 days. If we wanted the data to be retained for an indefinite period of time, we'd have to use a named dataset. For more information about named storages vs unnamed storages, read a bit about [data retention on the Apify platform](/platform/actors/storage/usage#data-retention). ## Next up {#next} diff --git a/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md b/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md index ad154cd126..98631048ad 100644 --- a/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md +++ b/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md @@ -149,7 +149,7 @@ If your synchronous run exceeds the 5-minute time limit, the response will be a ### Synchronous runs with dataset output {#synchronous-runs-with-dataset-output} -Most Actor runs will store their data in the default [dataset](/platform/storage/dataset). The Apify API provides **run-sync-get-dataset-items** endpoints for [Actors](/api/v2/act-run-sync-get-dataset-items-post) and [tasks](/api/v2/actor-task-run-sync-get-dataset-items-post), which allow you to run an Actor and receive the items from the default dataset once the run has finished. +Most Actor runs will store their data in the default [dataset](/platform/actors/storage/dataset). The Apify API provides **run-sync-get-dataset-items** endpoints for [Actors](/api/v2/act-run-sync-get-dataset-items-post) and [tasks](/api/v2/actor-task-run-sync-get-dataset-items-post), which allow you to run an Actor and receive the items from the default dataset once the run has finished. Here is a Node.js example of calling a task via the API and logging the dataset items to the console: @@ -186,7 +186,7 @@ items.forEach((item) => { ### Synchronous runs with key-value store output {#synchronous-runs-with-key-value-store-output} -[Key-value stores](/platform/storage/key-value-store) are useful for storing files like images, HTML snapshots, or JSON data. The Apify API provides **run-sync** endpoints for [Actors](/api/v2/act-run-sync-post) and [tasks](/api/v2/actor-task-run-sync-post), which allow you to run a specific task and receive the output. By default, they return the `OUTPUT` record from the default key-value store. +[Key-value stores](/platform/actors/storage/key-value-store) are useful for storing files like images, HTML snapshots, or JSON data. The Apify API provides **run-sync** endpoints for [Actors](/api/v2/act-run-sync-post) and [tasks](/api/v2/actor-task-run-sync-post), which allow you to run a specific task and receive the output. By default, they return the `OUTPUT` record from the default key-value store. ## Asynchronous flow {#asynchronous-flow} @@ -248,11 +248,11 @@ Once a status of `SUCCEEDED` or `FAILED` has been received, we know the run has Unless you used the [synchronous call](#synchronous-flow) mentioned above, you will have to make one additional request to the API to retrieve the data. -The **run info** JSON also contains the IDs of the default [dataset](/platform/storage/dataset) and [key-value store](/platform/storage/key-value-store) that are allocated separately for each run, which is usually everything you need. The fields are called `defaultDatasetId` and `defaultKeyValueStoreId`. +The **run info** JSON also contains the IDs of the default [dataset](/platform/actors/storage/dataset) and [key-value store](/platform/actors/storage/key-value-store) that are allocated separately for each run, which is usually everything you need. The fields are called `defaultDatasetId` and `defaultKeyValueStoreId`. #### Retrieving a dataset {#retrieve-a-dataset} -> If you are scraping products, or any list of items with similar fields, the [dataset](/platform/storage/dataset) should be your storage of choice. Don't forget though, that dataset items are immutable. This means that you can only add to the dataset, and not change the content that is already inside it. +> If you are scraping products, or any list of items with similar fields, the [dataset](/platform/actors/storage/dataset) should be your storage of choice. Don't forget though, that dataset items are immutable. This means that you can only add to the dataset, and not change the content that is already inside it. To retrieve the data from a dataset, send a GET request to the [**Get dataset items**](/api/v2/dataset-items-get) endpoint and pass the `defaultDatasetId` into the URL. For a GET request to the default dataset, no token is needed. @@ -272,7 +272,7 @@ https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&offset=250000 #### Retrieving a key-value store {#retrieve-a-key-value-store} -> [Key-value stores](/platform/storage/key-value-store) are mainly useful if you have a single output or any kind of files that cannot be [stringified](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) (such as images or PDFs). +> [Key-value stores](/platform/actors/storage/key-value-store) are mainly useful if you have a single output or any kind of files that cannot be [stringified](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) (such as images or PDFs). When you want to retrieve something from a key-value store, the `defaultKeyValueStoreId` is _not_ enough. You also need to know the name (or **key**) of the record you want to retrieve. diff --git a/sources/academy/tutorials/api/using_apify_from_php.md b/sources/academy/tutorials/api/using_apify_from_php.md index d890390429..af3dc613a4 100644 --- a/sources/academy/tutorials/api/using_apify_from_php.md +++ b/sources/academy/tutorials/api/using_apify_from_php.md @@ -79,7 +79,7 @@ $data = $parsedResponse['data']; echo \json_encode($data, JSON_PRETTY_PRINT); ``` -You should see information about the run, including its ID and the ID of its default [dataset](/platform/storage/dataset). Take note of these, we will need them later. +You should see information about the run, including its ID and the ID of its default [dataset](/platform/actors/storage/dataset). Take note of these, we will need them later. ## Getting the results from dataset @@ -125,7 +125,7 @@ All the available parameters are described in [our API reference](/api/v2/datase ## Getting the results from key-value stores -Datasets are great for structured data, but are not suited for binary files like images or PDFs. In these cases, Actors store their output in [key-value stores](/platform/storage/key-value-store). One such Actor is the **HTML String To PDF** ([mhamas/html-string-to-pdf](https://apify.com/mhamas/html-string-to-pdf)) converter. Let's run it. +Datasets are great for structured data, but are not suited for binary files like images or PDFs. In these cases, Actors store their output in [key-value stores](/platform/actors/storage/key-value-store). One such Actor is the **HTML String To PDF** ([mhamas/html-string-to-pdf](https://apify.com/mhamas/html-string-to-pdf)) converter. Let's run it. ```php $response = $client->post('acts/mhamas~html-string-to-pdf/runs', [ @@ -227,7 +227,7 @@ $response = $client->post('acts/mhamas~html-string-to-pdf/runs', [ ## How to use Apify Proxy -Let's use another important feature: [proxy](/platform/proxy). If you want to make sure that your server's IP address won't get blocked somewhere when making requests, you can use the automatic proxy selection mode. +Let's use another important feature: [proxy](/platform/actors/proxy). If you want to make sure that your server's IP address won't get blocked somewhere when making requests, you can use the automatic proxy selection mode. ```php $client = new \GuzzleHttp\Client([ @@ -258,7 +258,7 @@ $response = $client->get("https://api.apify.com/v2/browser-info"); echo $response->getBody(); ``` -[See the proxy docs](/platform/proxy/usage) for more details on using specific proxies. +[See the proxy docs](/platform/actors/proxy/usage) for more details on using specific proxies. ## Feedback diff --git a/sources/academy/tutorials/apify_scrapers/getting_started.md b/sources/academy/tutorials/apify_scrapers/getting_started.md index 9b05130eba..7f6aefed2d 100644 --- a/sources/academy/tutorials/apify_scrapers/getting_started.md +++ b/sources/academy/tutorials/apify_scrapers/getting_started.md @@ -254,7 +254,7 @@ When a **Pseudo URL** is set, the scraper attempts to enqueue matching links on The `pageFunction` may only return nothing, `null`, `Object` or `Object[]`. If an `Object` is returned, it will be saved as a single result. Returning an `Array` of `Objects` will save each item in the array as a result. -The scraping results are saved in a [dataset](/platform/storage/dataset) (one of the tabs in the run console, as you may remember). It behaves like a table. Each item is a row in the table and its properties are its columns. Returning the following `Object`: +The scraping results are saved in a [dataset](/platform/actors/storage/dataset) (one of the tabs in the run console, as you may remember). It behaves like a table. Each item is a row in the table and its properties are its columns. Returning the following `Object`: ```js async function pageFunction(context) { diff --git a/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md b/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md index d2314a7bd7..8683d150b3 100644 --- a/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md +++ b/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md @@ -123,7 +123,7 @@ Logging and snapshotting are great tools but once you reach a certain run size, ## With the Apify SDK {#with-the-apify-sdk} -This example extends our snapshot solution above by creating a [named dataset](/platform/storage/usage#named-and-unnamed-storages) (named datasets have infinite retention), where we will accumulate error reports. Those reports will explain what happened and will link to a saved snapshot, so we can do a quick visual check. +This example extends our snapshot solution above by creating a [named dataset](/platform/actors/storage/usage#named-and-unnamed-storages) (named datasets have infinite retention), where we will accumulate error reports. Those reports will explain what happened and will link to a saved snapshot, so we can do a quick visual check. ```js import { Actor } from 'apify'; diff --git a/sources/academy/tutorials/node_js/apify_free_google_serp_api.md b/sources/academy/tutorials/node_js/apify_free_google_serp_api.md index ac643b365b..b26bb79bd3 100644 --- a/sources/academy/tutorials/node_js/apify_free_google_serp_api.md +++ b/sources/academy/tutorials/node_js/apify_free_google_serp_api.md @@ -10,7 +10,7 @@ You need to regularly grab SERP data about your target keywords? Apify provides ![Apify Google SERP API](./images/gserp-api.png) -Hit `Save & Run` and you'll have the downloaded data as soon as the query finishes. To have it run at a regular frequency, you can set up the task to run on an [automatic schedule](/platform/schedules#setting-up-a-new-schedule). +Hit `Save & Run` and you'll have the downloaded data as soon as the query finishes. To have it run at a regular frequency, you can set up the task to run on an [automatic schedule](/platform/actors/running/schedules#setting-up-a-new-schedule). To run from the API, send a [synchronous POST request](/api/v2/actor-task-run-sync-get-dataset-items-post) to an endpoint such as `https://api.apify.com/v2/acts/TASK_NAME_OR_ID/runs?token=YOUR_TOKEN`. Include any required input in a JSON object in the request's body. diff --git a/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md b/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md index 13fcdb4f4c..a286971b0e 100644 --- a/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md +++ b/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md @@ -21,13 +21,13 @@ You want to crawl a website with a proxy pool, but most of your proxies are bloc 5. The proxies actually got banned before anyone used them to crawl the website because they use anti-bot protection that bans proxies across websites (e.g. Cloudflare). -Nobody can make sure that a proxy will work infinitely. The only real solution to this problem is to use [residential proxies](/platform/proxy/residential-proxy), but they can sometimes be too costly. +Nobody can make sure that a proxy will work infinitely. The only real solution to this problem is to use [residential proxies](/platform/actors/proxy/residential-proxy), but they can sometimes be too costly. However, usually, at least some of our proxies work. To crawl successfully, it is therefore imperative to handle blocked requests properly. You first need to discover that you are blocked, which usually means that either your request returned status greater or equal to 400 (it didn't return the proper response) or that the page displayed a captcha. To ensure that this bad request is retried, you usually throw an error and it gets automatically retried later (our [SDK](/sdk/js/) handles this for you). Check out [this article](https://docs.apify.com/academy/node-js/handle-blocked-requests-puppeteer) as inspiration for how to handle this situation with `PuppeteerCrawler` class. ## Solution -Now we are able to retry bad requests and eventually unless all of our proxies get banned, we should be able to successfully crawl what we want. The problem is that it takes too long and our log is full of errors. Fortunately, we can overcome this with [proxy sessions](/platform/proxy/datacenter-proxy#username-parameters) (look at the proxy and SDK documentation for how to use them in your Actors.) +Now we are able to retry bad requests and eventually unless all of our proxies get banned, we should be able to successfully crawl what we want. The problem is that it takes too long and our log is full of errors. Fortunately, we can overcome this with [proxy sessions](/platform/actors/proxy/datacenter-proxy#username-parameters) (look at the proxy and SDK documentation for how to use them in your Actors.) First we define `sessions`  object at the top of our code (in global scope) to hold the state of our working sessions. diff --git a/sources/academy/tutorials/python/process_data_using_python.md b/sources/academy/tutorials/python/process_data_using_python.md index d6030597c2..d2067ace1e 100644 --- a/sources/academy/tutorials/python/process_data_using_python.md +++ b/sources/academy/tutorials/python/process_data_using_python.md @@ -17,7 +17,7 @@ In this tutorial, we will use the Actor we created in the [previous tutorial](/a ## Processing previously scraped data -In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/platform/storage/dataset) on the Apify platform. +In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/platform/actors/storage/dataset) on the Apify platform. Now, we need to process the scraped data and make a visualization that will help us decide which location has the best weather, and will therefore become our next holiday destination. @@ -108,7 +108,7 @@ axes.legend(loc='best') axes.figure.tight_layout() ``` -As the last step, we need to save the plot to a record in a [key-value store](/platform/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. +As the last step, we need to save the plot to a record in a [key-value store](/platform/actors/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. ```py # Get the resource sub-client for working with the default key-value store of the run diff --git a/sources/academy/tutorials/python/scrape_data_python.md b/sources/academy/tutorials/python/scrape_data_python.md index 440d296958..84bf479136 100644 --- a/sources/academy/tutorials/python/scrape_data_python.md +++ b/sources/academy/tutorials/python/scrape_data_python.md @@ -217,7 +217,7 @@ Earlier in this tutorial, we learned how to scrape data from the web in Python u ## Processing previously scraped data -In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/platform/storage/dataset) on the Apify platform. +In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/platform/actors/storage/dataset) on the Apify platform. Now, we need to process the scraped data and make a visualization that will help us decide which location has the best weather, and will therefore become our next holiday destination. @@ -308,7 +308,7 @@ axes.legend(loc='best') axes.figure.tight_layout() ``` -As the last step, we need to save the plot to a record in a [key-value store](/platform/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. +As the last step, we need to save the plot to a record in a [key-value store](/platform/actors/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. ```py # Get the resource sub-client for working with the default key-value store of the run diff --git a/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md b/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md index 618b605fb8..7c2a257fda 100644 --- a/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md +++ b/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md @@ -73,7 +73,7 @@ Some sites will allow you to construct non-overlapping ranges. For example, you Non-overlapping ranges should remove the possibility of duplicate products (unless a [listing has multiple values](#can-a-listing-have-more-values)) and the lowest number of pages. -If the website supports only overlapping ranges (e.g. **$0-$5**, **$5–10**), it is not a big problem. Only a small portion of the listings will be duplicates, and they can be removed using a [request queue](/platform/storage/request-queue). +If the website supports only overlapping ranges (e.g. **$0-$5**, **$5–10**), it is not a big problem. Only a small portion of the listings will be duplicates, and they can be removed using a [request queue](/platform/actors/storage/request-queue). #### Can a listing have more values? {#can-a-listing-have-more-values} diff --git a/sources/academy/webscraping/anti_scraping/index.md b/sources/academy/webscraping/anti_scraping/index.md index 45b081b50e..3826c2b7a8 100644 --- a/sources/academy/webscraping/anti_scraping/index.md +++ b/sources/academy/webscraping/anti_scraping/index.md @@ -20,7 +20,7 @@ In development, it is crucial to check and adjust the configurations related to If you don't have time to read about the theory behind anti-scraping protections to fine-tune your scraping project and instead you need to get unblocked ASAP, here are some quick tips: -- Use high-quality proxies. [Residential proxies](/platform/proxy/residential-proxy) are the least blocked. You can find many providers out there like Apify, BrightData, Oxylabs, NetNut, etc. +- Use high-quality proxies. [Residential proxies](/platform/actors/proxy/residential-proxy) are the least blocked. You can find many providers out there like Apify, BrightData, Oxylabs, NetNut, etc. - Set **real-user-like HTTP settings** and **browser fingerprints**. [Crawlee](https://crawlee.dev/) uses statistically generated realistic HTTP headers and browser fingerprints by default for all of its crawlers. - Use a browser to pass bot capture challenges. We recommend [Playwright with Firefox](https://crawlee.dev/docs/examples/playwright-crawler-firefox) because it is not that common for scraping. You can also play with [non-headless mode](https://crawlee.dev/api/playwright-crawler/interface/PlaywrightCrawlerOptions#headless) and adjust other [fingerprint settings](https://crawlee.dev/api/browser-pool/interface/FingerprintGeneratorOptions). - Consider extracting data from **[private APIs](../api_scraping/index.md)** or **mobile app APIs**. They are usually much less protected. diff --git a/sources/platform/console/billing.md b/sources/platform/account/billing.md similarity index 99% rename from sources/platform/console/billing.md rename to sources/platform/account/billing.md index 223f937cff..7f0f35e384 100644 --- a/sources/platform/console/billing.md +++ b/sources/platform/account/billing.md @@ -3,7 +3,7 @@ title: Billing description: The Billings page is the central place for all information regarding your invoices, billing information regarding current usage, historical usage, subscriptions & limits. sidebar_position: 3 category: platform -slug: /console/billing +slug: /account/billing --- **The Billings page is the central place for all information regarding your invoices, billing information regarding usage in the current billing cycle, historical usage, subscriptions & limits.** diff --git a/sources/platform/collaboration/list_of_permissions.md b/sources/platform/account/collaboration/access_rights.md similarity index 63% rename from sources/platform/collaboration/list_of_permissions.md rename to sources/platform/account/collaboration/access_rights.md index 9b7d3b227e..d1707c21a9 100644 --- a/sources/platform/collaboration/list_of_permissions.md +++ b/sources/platform/account/collaboration/access_rights.md @@ -1,21 +1,33 @@ --- -title: List of permissions -description: Learn about the access rights you can grant to other users. See a list of all access options for Apify resources such as Actors, Actor runs/tasks and storage. -sidebar_position: 12.2 -slug: /collaboration/list-of-permissions +title: Access rights +description: Manage permissions for your private resources such as Actors, Actor runs, and storages. Allow other users to read, run, modify, or build new versions. +sidebar_position: 2 +category: platform +slug: /account/collaboration/access-rights --- -**Learn about the access rights you can grant to other users. See a list of all access options for Apify resources such as Actors, Actor runs/tasks and storage.** +**Manage permissions for your private resources such as Actors, Actor runs, and storages. Allow other users to read, run, modify, or build new versions.** --- -This document contains all the access options that can be granted to resources on the Apify platform. +You can easily and securely share your own resources - Actors, tasks, key-value stores, datasets, and request queues - with other users by using a [granular](https://www.google.com/search?q=define+granular+permissions) permissions system. This enables you, for example, to let your colleague run an [Actor](../../actors/index.mdx) or view a [dataset](../../actors/storage/dataset.md) but not modify it. -## Actors +You can also grant permission to update an Actor and build a new version. +[Storages](../../actors/storage/index.md) (key-value stores, request queues, and datasets) are sharable in the same way as a **read** permission or a combination of both **read** and **write** permissions. -To learn about Apify Actors, check out the [documentation](../actors/index.mdx). +To share an Actor, task, key-value store, request queue, or dataset, click on the **Actions** button in the top-right corner and select **Share**. You can add a collaborator by using their **user ID**, **email**, or **username**. Once you have added the collaborator, you can configure their permissions. -### Actor +![Access rights configuration](../images/access-rights/access-rights.png) + +## Permissions reference + +This section lists all access options that can be granted to resources on the Apify platform. + +### Actors + +To learn about Apify Actors, check out the [documentation](../../actors/index.mdx). + +#### Actor | Permission | Description | |----------------------|------------------------------------------------------------| @@ -25,7 +37,7 @@ To learn about Apify Actors, check out the [documentation](../actors/index.mdx). | View runs | View a list of Actor runs and their details. | | Manage access rights | Manage Actor access rights. | -### Actor task +#### Actor task | Permission | Description | |----------------------|------------------------------------------------------------| @@ -34,13 +46,13 @@ To learn about Apify Actors, check out the [documentation](../actors/index.mdx). | View runs | View a list of Actor task runs and their details. | | Manage access rights | Manage Actor task access rights. | -To learn about Actor tasks, see the [documentation](../actors/running/tasks.md). +To learn about Actor tasks, see the [documentation](../../actors/running/tasks.md). -## Storage +### Storage -For more information about Storage, see its [documentation](../storage/index.md). +For more information about storage, see its [documentation](../../actors/storage/index.md). -### Dataset +#### Dataset | Permission | Description | |----------------------|-----------------------------------------------------------------| @@ -48,9 +60,9 @@ For more information about Storage, see its [documentation](../storage/index.md) | Write | Edit dataset settings, push data to it, and remove the dataset. | | Manage access rights | Manage dataset access rights. | -To learn about dataset storage, see its [documentation](../storage/dataset.md). +To learn about dataset storage, see its [documentation](../../actors/storage/dataset.md). -### Key-value-store +#### Key-value store | Permission | Description | |----------------------|---------------------------------------------------------------------------------------------------| @@ -58,9 +70,9 @@ To learn about dataset storage, see its [documentation](../storage/dataset.md). | Write | Edit key-value store settings, add, update or remove its records, and delete the key-value store. | | Manage access rights | Manage key-value store access rights. | -To learn about key-value stores, see the [documentation](../storage/key_value_store.md). +To learn about key-value stores, see the [documentation](../../actors/storage/key_value_store.md). -### Request queue +#### Request queue | Permission | Description | |----------------------|------------------------------------------------------------------------------------------------| @@ -68,19 +80,19 @@ To learn about key-value stores, see the [documentation](../storage/key_value_st | Write | Edit request queue settings, add, update, or remove its records, and delete the request queue. | | Manage access rights | Manage request queue access rights. | -To learn about request queue storage, see the [documentation](../storage/request_queue.md). +To learn about request queue storage, see the [documentation](../../actors/storage/request_queue.md). -## Proxy +### Proxy | Permission | Description | |------------|---------------------------| | Proxy | Allow to use Apify Proxy. | -To learn about Apify Proxy, see its [documentation](../proxy/index.md). +To learn about Apify Proxy, see its [documentation](../../actors/proxy/index.md). -## User permissions +### User permissions -Permissions that can be granted to members of organizations. To learn about the organization account, see its [documentation](./organization_account/index.md). +Permissions that can be granted to members of organizations. To learn about the organization account, see its [documentation](./organization/index.md). | Permission | Description | |---------------------|-----------------------------------------------------------------------| diff --git a/sources/platform/collaboration/general-resource-access.md b/sources/platform/account/collaboration/general-resource-access.md similarity index 96% rename from sources/platform/collaboration/general-resource-access.md rename to sources/platform/account/collaboration/general-resource-access.md index 5e3d695b74..d27e4572a2 100644 --- a/sources/platform/collaboration/general-resource-access.md +++ b/sources/platform/account/collaboration/general-resource-access.md @@ -3,7 +3,7 @@ title: General resource access description: Control how Apify resources are shared. Set default access (Anyone with ID can read or Restricted), and learn about link sharing, exceptions, and pre-signed URLs. sidebar_position: 1 category: platform -slug: /collaboration/general-resource-access +slug: /account/collaboration/general-resource-access --- Some resources, like storages, Actor runs or Actor builds, can be shared simply by sending their unique resource ID or Console link and the recipient can then view the data in Console or fetch it via API without needing an API token. This is very useful for ad-hoc collaboration, integrating third party tools that connect to data in your Apify account or quick prototypes. @@ -26,7 +26,7 @@ This setting affects the following resources: Access to resources that require explicit access — such as Actors, tasks or schedules are not affected by this setting. -![Setup account-level general resources access setting](./images/general-resouce-access//account-setting.png) +![Setup account-level general resources access setting](../images/general-resouce-access//account-setting.png) ## How Restricted Access works @@ -103,13 +103,13 @@ The access is granted through explicit, behind-the-scenes permissions (not anony This means you don’t need to manually adjust permissions or share multiple links when reporting an Actor issue — **just including the run URL in your issue is enough** -![Sharing a run link in create Actor issue dialog makes it accessible to the developer automatically](./images/general-resouce-access/creating-actor-issue.png) +![Sharing a run link in create Actor issue dialog makes it accessible to the developer automatically](../images/general-resouce-access/creating-actor-issue.png) ## Per-resource access control The account level access control can be changed on individual resources. This can be done by setting the general access level to other than Restricted in the share dialog for a given resource. This way the resource level setting takes precedence over the account setting. -![Setup resource level access control](./images/general-resouce-access/share-resource-dialog.png) +![Setup resource level access control](../images/general-resouce-access/share-resource-dialog.png) :::tip Using Apify API You can also set the general access on a resource programmatically using the Apify API or Apify client. Read more in the API reference and client documentation. @@ -182,7 +182,7 @@ The link will include a signature _only if the general resource access is set to 1. Click the **Export** button. 2. In the modal that appears, click **Copy shareable link**. -![Generating shareable link for a restricted storage resource](./images/general-resouce-access/copy-shareable-link.png) +![Generating shareable link for a restricted storage resource](../images/general-resouce-access/copy-shareable-link.png) ##### Key-value store records @@ -190,7 +190,7 @@ The link will include a signature _only if the general resource access is set to 2. Navigate to the record you want to share. 3. In the **Actions** column, click the link icon to copy signed link. -![Copy pre-signed URL for KV store record](./images/general-resouce-access/copy-record-url-kv-store.png) +![Copy pre-signed URL for KV store record](../images/general-resouce-access/copy-record-url-kv-store.png) #### How to generate pre-signed URLs using Apify Client @@ -305,7 +305,7 @@ const recordUrl = await storeClient.getRecordPublicUrl(recordKey); await Actor.pushData({ recordUrl }); ``` -To learn more about generating pre-signed URLs, refer to the section [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +To learn more about generating pre-signed URLs, refer to the section [Sharing restricted resources with pre-signed URLs](/platform/account/collaboration/general-resource-access#pre-signed-urls). :::note Using Console URLs diff --git a/sources/platform/account/collaboration/index.mdx b/sources/platform/account/collaboration/index.mdx new file mode 100644 index 0000000000..b446135583 --- /dev/null +++ b/sources/platform/account/collaboration/index.mdx @@ -0,0 +1,30 @@ +--- +title: Overview +description: Share Apify resources with teammates, manage access permissions, and set up organization accounts for your team. +sidebar_label: Collaboration +sidebar_position: 6 +slug: /account/collaboration +--- + +import Card from "@site/src/components/Card"; +import CardGrid from "@site/src/components/CardGrid"; + +Apify lets you share resources with other users and manage access at both the account and resource level. Use organization accounts to centralize billing and manage team permissions. + + + + + + diff --git a/sources/platform/collaboration/organization_account/how_to_use.md b/sources/platform/account/collaboration/organization/how_to_use.md similarity index 84% rename from sources/platform/collaboration/organization_account/how_to_use.md rename to sources/platform/account/collaboration/organization/how_to_use.md index ee54ae198b..ddaef880e3 100644 --- a/sources/platform/collaboration/organization_account/how_to_use.md +++ b/sources/platform/account/collaboration/organization/how_to_use.md @@ -2,7 +2,7 @@ title: Using the organization account description: Learn to use and manage your organization account using the Apify Console or API. View the organizations you are in and manage your memberships. sidebar_position: 2 -slug: /collaboration/organization-account/how-to-use +slug: /account/collaboration/organization-account/how-to-use sidebar_label: How to use --- @@ -20,11 +20,11 @@ While you can't manage an organization account via [API](/api/v2), you can still You can switch into **Organization account** view using the account button in the top-left corner. -![Switch to organization account](../images/organizations/switch-to-organization.png) +![Switch to organization account](../../images/organizations/switch-to-organization.png) In the menu, the account you are currently using is displayed at the top, with all the accounts you can switch to displayed below. When you need to get back to your personal account, you can just switch right back to it—no need to log in and out. -The resources you can access and account details you can edit will depend on your [permissions](../list_of_permissions.md) in the organization. +The resources you can access and account details you can edit will depend on your [permissions](../access_rights.md#permissions-reference) in the organization. > When switching between accounts, beware which account you start an Actor run in. If you accidentally start an organization's Actor run in your personal account, the run will be billed to your account (and vice versa). @@ -34,7 +34,7 @@ You can view and manage the organizations you are a member of from the **Organiz If you want to leave an organization you own, you must first transfer ownership to someone else. -![My organizations](../images/organizations/my-organizations.png) +![My organizations](../../images/organizations/my-organizations.png) ### Transfer ownership @@ -44,9 +44,9 @@ The organization, its Actors, and its integrations will keep running as they are While you cannot manage an organization account's settings and members via API, you can access its Actor and task runs, webhooks, schedules, and storages just as you would with any other account. -As a member of an organization, you are assigned an [API token](../../integrations/index.mdx) (under the **Integrations** tab) and proxy password (click the **Proxy** button in the left menu) for accessing the Apify platform via REST API. +As a member of an organization, you are assigned an [API token](../../../integrations/index.mdx) (under the **Integrations** tab) and proxy password (click the **Proxy** button in the left menu) for accessing the Apify platform via REST API. -![Integration tokens](../images/organizations/integrations.png) +![Integration tokens](../../images/organizations/integrations.png) The API tokens' functionality reflects your account's permissions in the organization, so if you only have the **read** and **run** permissions for Actors, you will only be able to view and run Actors via API. Only you can view your API token and password. diff --git a/sources/platform/collaboration/organization_account/index.md b/sources/platform/account/collaboration/organization/index.md similarity index 84% rename from sources/platform/collaboration/organization_account/index.md rename to sources/platform/account/collaboration/organization/index.md index f38e1c34f4..e0afb3e3a0 100644 --- a/sources/platform/collaboration/organization_account/index.md +++ b/sources/platform/account/collaboration/organization/index.md @@ -1,22 +1,22 @@ --- title: Organization account description: Create a specialized account for your organization to encourage collaboration and manage permissions. Convert an existing account, or create one from scratch. -sidebar_position: 12.1 -slug: /collaboration/organization-account +sidebar_position: 3 +slug: /account/collaboration/organization-account --- **Create a specialized account for your organization to encourage collaboration and manage permissions. Convert an existing account, or create one from scratch.** --- -Organization accounts allow groups to collaborate on projects. It enables you to manage your team members' [permissions](../list_of_permissions.md) and to centralize your billing without having to share the credentials of a single personal account. +Organization accounts allow groups to collaborate on projects. It enables you to manage your team members' [permissions](../access_rights.md) and to centralize your billing without having to share the credentials of a single personal account. You can [switch](./how_to_use.md) between your personal and organization accounts in just two clicks: in [Apify Console](https://console.apify.com), click the account button in the top-left corner, then select the organization. You can set up an organization in two ways. * [Create a new organization](#create-a-new-organization). If you don't have integrations set up yet, or if they are easy to change, you can create a new organization, preserving your personal account. -* [Convert an existing account](#convert-an-existing-account) into an organization. If your Actors and [integrations](../../integrations/index.mdx) are set up in a personal account, it is probably best to convert that account into an organization. This will preserve all your integrations but means you will have a new personal account created for you. +* [Convert an existing account](#convert-an-existing-account) into an organization. If your Actors and [integrations](../../../integrations/index.mdx) are set up in a personal account, it is probably best to convert that account into an organization. This will preserve all your integrations but means you will have a new personal account created for you. > Prefer video to reading? [See our video tutorial](https://www.youtube.com/watch?v=BIL6HqtnvKk) for organization accounts. @@ -28,7 +28,7 @@ The organization account is available on all our plans. [Visit our pricing page] You can create a new organization by clicking the **Create new organization** button under the **Organizations** tab in your [account](https://console.apify.com/account#/myorganizations). If you want the organization to have a separate email address (used for notifications), enter it here. Otherwise, leave the **email** field empty and the owner's email will be used for notifications. -![Create a new organization](../images/organizations/create-new-org.png) +![Create a new organization](../../images/organizations/create-new-org.png) **You can own up to 5 and be a member of as many organizations as you need.** @@ -46,7 +46,7 @@ An organization can't be a member of other organizations. If you want to convert Then, under the **Organizations** [tab](https://console.apify.com/account#/myorganizations), click the **Convert this user account to an organization** button. -![Convert your account to an organization](../images/organizations/convert-to-organization.png) +![Convert your account to an organization](../../images/organizations/convert-to-organization.png) Next, enter an organization name and select **Convert**. diff --git a/sources/platform/collaboration/organization_account/setup.md b/sources/platform/account/collaboration/organization/setup.md similarity index 75% rename from sources/platform/collaboration/organization_account/setup.md rename to sources/platform/account/collaboration/organization/setup.md index ab93a7b29e..f3acf49f1f 100644 --- a/sources/platform/collaboration/organization_account/setup.md +++ b/sources/platform/account/collaboration/organization/setup.md @@ -2,7 +2,7 @@ title: Setup description: Configure your organization account by inviting new members and assigning their roles. Manage team members' access permissions to the organization's resources. sidebar_position: 1 -slug: /collaboration/organization-account/setup +slug: /account/collaboration/organization-account/setup --- **Configure your organization account by inviting new members and assigning their roles. Manage team members' access permissions to the organization's resources.** @@ -29,7 +29,7 @@ In the **Account** tab's **Security** section, you can set security requirements You can add members to your organization in the **Members** tab. You can use their **User ID**, **username**, or **email**. When adding a member to the organization, you must assign them a **Role** so their permissions are known right away. -![Organization members](../images/organizations/members.png) +![Organization members](../../images/organizations/members.png) ## Define roles and permissions @@ -37,14 +37,14 @@ Roles allow you to define permissions to your organization's resources by group. To edit the permissions for each role, click on the **Configure permissions** button in the top-right corner. -![Organization roles](../images/organizations/roles.png) +![Organization roles](../../images/organizations/roles.png) > Each member can only have one role to avoid conflicting permissions. -You can configure individual permissions for each resource type such as Actors, Actor tasks or storage. Bear in mind that if a user has the **read** permission for [storages](../../storage/index.md), you cannot prevent them from accessing a particular storage (e.g. a certain [dataset](../../storage/index.md)) - they will have access to all of the organization's storages. +You can configure individual permissions for each resource type such as Actors, Actor tasks or storage. Bear in mind that if a user has the **read** permission for [storages](../../../actors/storage/index.md), you cannot prevent them from accessing a particular storage (e.g. a certain [dataset](../../../actors/storage/index.md)) - they will have access to all of the organization's storages. **Some permissions have dependencies**. For example, if someone has the **Actor run** permission, it is likely they will also need the **storage write** permission, so they can store the results from their Actor runs. -![Configure permissions](../images/organizations/configure-permissions.png) +![Configure permissions](../../images/organizations/configure-permissions.png) -[See the full list of permissions](../list_of_permissions.md) that can be granted to Apify resources. +[See the full list of permissions](../access_rights.md#permissions-reference) that can be granted to Apify resources. diff --git a/sources/platform/console/index.md b/sources/platform/account/console.md similarity index 93% rename from sources/platform/console/index.md rename to sources/platform/account/console.md index 78293381f6..27998cfdf2 100644 --- a/sources/platform/console/index.md +++ b/sources/platform/account/console.md @@ -3,7 +3,7 @@ title: Apify Console description: Learn about Apify Console's easy account creation and user-friendly homepage for efficient web scraping management. sidebar_position: 1 category: platform -slug: /console +slug: /account/console --- **Learn about Apify Console's easy account creation and user-friendly homepage for efficient web scraping management.** @@ -114,14 +114,14 @@ You can also navigate Apify Console via keyboard shortcuts. | Tab name | Description | |:---|:---| -| [Apify Store](/platform/console/store)| Search for Actors that suit your web-scraping needs. | +| [Apify Store](/platform/account/store)| Search for Actors that suit your web-scraping needs. | | [Actors](/platform/actors)| View recent & bookmarked Actors. | | [Runs](/platform/actors/running/runs-and-builds)| View your recent runs. | | [Saved tasks](/platform/actors/running/tasks)| View your saved tasks. | -| [Schedules](/platform/schedules)| Schedule Actor runs & tasks to run at specified time. | +| [Schedules](/platform/actors/running/schedules)| Schedule Actor runs & tasks to run at specified time. | | [Integrations](/platform/integrations)| View your integrations. | | [Development](/platform/actors/development)| • My Actors - See Actors developed by you.
• Insights - see analytics for your Actors.
• Messaging - check on issues reported in your Actors or send emails to users of your Actors. | -| [Proxy](/platform/proxy)| View your proxy usage & credentials | -| [Storage](/platform/storage)| View stored results of your runs in various data formats. | -| [Billing](/platform/console/billing)| Billing information, statistics and invoices. | -| [Settings](/platform/console/settings)| Settings of your account. | +| [Proxy](/platform/actors/proxy)| View your proxy usage & credentials | +| [Storage](/platform/actors/storage)| View stored results of your runs in various data formats. | +| [Billing](/platform/account/billing)| Billing information, statistics and invoices. | +| [Settings](/platform/account/settings)| Settings of your account. | diff --git a/sources/platform/collaboration/images/access-rights/access-rights.png b/sources/platform/account/images/access-rights/access-rights.png similarity index 100% rename from sources/platform/collaboration/images/access-rights/access-rights.png rename to sources/platform/account/images/access-rights/access-rights.png diff --git a/sources/platform/console/images/apify-console-homepage.png b/sources/platform/account/images/apify-console-homepage.png similarity index 100% rename from sources/platform/console/images/apify-console-homepage.png rename to sources/platform/account/images/apify-console-homepage.png diff --git a/sources/platform/console/images/console-account-two-factor-disabled.png b/sources/platform/account/images/console-account-two-factor-disabled.png similarity index 100% rename from sources/platform/console/images/console-account-two-factor-disabled.png rename to sources/platform/account/images/console-account-two-factor-disabled.png diff --git a/sources/platform/console/images/console-account-two-factor-enabled.png b/sources/platform/account/images/console-account-two-factor-enabled.png similarity index 100% rename from sources/platform/console/images/console-account-two-factor-enabled.png rename to sources/platform/account/images/console-account-two-factor-enabled.png diff --git a/sources/platform/console/images/console-actors-recently-used.png b/sources/platform/account/images/console-actors-recently-used.png similarity index 100% rename from sources/platform/console/images/console-actors-recently-used.png rename to sources/platform/account/images/console-actors-recently-used.png diff --git a/sources/platform/console/images/console-actors-runs.png b/sources/platform/account/images/console-actors-runs.png similarity index 100% rename from sources/platform/console/images/console-actors-runs.png rename to sources/platform/account/images/console-actors-runs.png diff --git a/sources/platform/console/images/console-billing-current-period.png b/sources/platform/account/images/console-billing-current-period.png similarity index 100% rename from sources/platform/console/images/console-billing-current-period.png rename to sources/platform/account/images/console-billing-current-period.png diff --git a/sources/platform/console/images/console-billing-historical-usage-by-actors.png b/sources/platform/account/images/console-billing-historical-usage-by-actors.png similarity index 100% rename from sources/platform/console/images/console-billing-historical-usage-by-actors.png rename to sources/platform/account/images/console-billing-historical-usage-by-actors.png diff --git a/sources/platform/console/images/console-billing-historical-usage.png b/sources/platform/account/images/console-billing-historical-usage.png similarity index 100% rename from sources/platform/console/images/console-billing-historical-usage.png rename to sources/platform/account/images/console-billing-historical-usage.png diff --git a/sources/platform/console/images/console-billing-invoices.png b/sources/platform/account/images/console-billing-invoices.png similarity index 100% rename from sources/platform/console/images/console-billing-invoices.png rename to sources/platform/account/images/console-billing-invoices.png diff --git a/sources/platform/console/images/console-billing-limits.png b/sources/platform/account/images/console-billing-limits.png similarity index 100% rename from sources/platform/console/images/console-billing-limits.png rename to sources/platform/account/images/console-billing-limits.png diff --git a/sources/platform/console/images/console-billing-pricing.png b/sources/platform/account/images/console-billing-pricing.png similarity index 100% rename from sources/platform/console/images/console-billing-pricing.png rename to sources/platform/account/images/console-billing-pricing.png diff --git a/sources/platform/console/images/console-billing-subscription.png b/sources/platform/account/images/console-billing-subscription.png similarity index 100% rename from sources/platform/console/images/console-billing-subscription.png rename to sources/platform/account/images/console-billing-subscription.png diff --git a/sources/platform/console/images/console-email-verification-page.png b/sources/platform/account/images/console-email-verification-page.png similarity index 100% rename from sources/platform/console/images/console-email-verification-page.png rename to sources/platform/account/images/console-email-verification-page.png diff --git a/sources/platform/console/images/console-forgotten-password-page.png b/sources/platform/account/images/console-forgotten-password-page.png similarity index 100% rename from sources/platform/console/images/console-forgotten-password-page.png rename to sources/platform/account/images/console-forgotten-password-page.png diff --git a/sources/platform/console/images/console-login.png b/sources/platform/account/images/console-login.png similarity index 100% rename from sources/platform/console/images/console-login.png rename to sources/platform/account/images/console-login.png diff --git a/sources/platform/console/images/console-reset-password-page.png b/sources/platform/account/images/console-reset-password-page.png similarity index 100% rename from sources/platform/console/images/console-reset-password-page.png rename to sources/platform/account/images/console-reset-password-page.png diff --git a/sources/platform/console/images/console-setup-two-factor-auth-key.png b/sources/platform/account/images/console-setup-two-factor-auth-key.png similarity index 100% rename from sources/platform/console/images/console-setup-two-factor-auth-key.png rename to sources/platform/account/images/console-setup-two-factor-auth-key.png diff --git a/sources/platform/console/images/console-sign-in-form.png b/sources/platform/account/images/console-sign-in-form.png similarity index 100% rename from sources/platform/console/images/console-sign-in-form.png rename to sources/platform/account/images/console-sign-in-form.png diff --git a/sources/platform/console/images/console-sign-in-methods-section.png b/sources/platform/account/images/console-sign-in-methods-section.png similarity index 100% rename from sources/platform/console/images/console-sign-in-methods-section.png rename to sources/platform/account/images/console-sign-in-methods-section.png diff --git a/sources/platform/console/images/console-sign-up-form.png b/sources/platform/account/images/console-sign-up-form.png similarity index 100% rename from sources/platform/console/images/console-sign-up-form.png rename to sources/platform/account/images/console-sign-up-form.png diff --git a/sources/platform/console/images/console-signup.png b/sources/platform/account/images/console-signup.png similarity index 100% rename from sources/platform/console/images/console-signup.png rename to sources/platform/account/images/console-signup.png diff --git a/sources/platform/console/images/console-store.png b/sources/platform/account/images/console-store.png similarity index 100% rename from sources/platform/console/images/console-store.png rename to sources/platform/account/images/console-store.png diff --git a/sources/platform/console/images/console-two-factor-app-setup.png b/sources/platform/account/images/console-two-factor-app-setup.png similarity index 100% rename from sources/platform/console/images/console-two-factor-app-setup.png rename to sources/platform/account/images/console-two-factor-app-setup.png diff --git a/sources/platform/console/images/console-two-factor-auth-disable.png b/sources/platform/account/images/console-two-factor-auth-disable.png similarity index 100% rename from sources/platform/console/images/console-two-factor-auth-disable.png rename to sources/platform/account/images/console-two-factor-auth-disable.png diff --git a/sources/platform/console/images/console-two-factor-authentication.png b/sources/platform/account/images/console-two-factor-authentication.png similarity index 100% rename from sources/platform/console/images/console-two-factor-authentication.png rename to sources/platform/account/images/console-two-factor-authentication.png diff --git a/sources/platform/console/images/console-two-factor-recovery-settings-request.png b/sources/platform/account/images/console-two-factor-recovery-settings-request.png similarity index 100% rename from sources/platform/console/images/console-two-factor-recovery-settings-request.png rename to sources/platform/account/images/console-two-factor-recovery-settings-request.png diff --git a/sources/platform/console/images/console-two-factor-recovery-settings-revealed.png b/sources/platform/account/images/console-two-factor-recovery-settings-revealed.png similarity index 100% rename from sources/platform/console/images/console-two-factor-recovery-settings-revealed.png rename to sources/platform/account/images/console-two-factor-recovery-settings-revealed.png diff --git a/sources/platform/console/images/console-two-factor-recovery-setup.png b/sources/platform/account/images/console-two-factor-recovery-setup.png similarity index 100% rename from sources/platform/console/images/console-two-factor-recovery-setup.png rename to sources/platform/account/images/console-two-factor-recovery-setup.png diff --git a/sources/platform/console/images/console-two-factor-use-recovery-code.png b/sources/platform/account/images/console-two-factor-use-recovery-code.png similarity index 100% rename from sources/platform/console/images/console-two-factor-use-recovery-code.png rename to sources/platform/account/images/console-two-factor-use-recovery-code.png diff --git a/sources/platform/collaboration/images/general-resouce-access/account-setting.png b/sources/platform/account/images/general-resouce-access/account-setting.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/account-setting.png rename to sources/platform/account/images/general-resouce-access/account-setting.png diff --git a/sources/platform/collaboration/images/general-resouce-access/copy-record-url-kv-store.png b/sources/platform/account/images/general-resouce-access/copy-record-url-kv-store.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/copy-record-url-kv-store.png rename to sources/platform/account/images/general-resouce-access/copy-record-url-kv-store.png diff --git a/sources/platform/collaboration/images/general-resouce-access/copy-shareable-link.png b/sources/platform/account/images/general-resouce-access/copy-shareable-link.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/copy-shareable-link.png rename to sources/platform/account/images/general-resouce-access/copy-shareable-link.png diff --git a/sources/platform/collaboration/images/general-resouce-access/creating-actor-issue.png b/sources/platform/account/images/general-resouce-access/creating-actor-issue.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/creating-actor-issue.png rename to sources/platform/account/images/general-resouce-access/creating-actor-issue.png diff --git a/sources/platform/collaboration/images/general-resouce-access/share-resource-dialog.png b/sources/platform/account/images/general-resouce-access/share-resource-dialog.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/share-resource-dialog.png rename to sources/platform/account/images/general-resouce-access/share-resource-dialog.png diff --git a/sources/platform/collaboration/images/organizations/configure-permissions.png b/sources/platform/account/images/organizations/configure-permissions.png similarity index 100% rename from sources/platform/collaboration/images/organizations/configure-permissions.png rename to sources/platform/account/images/organizations/configure-permissions.png diff --git a/sources/platform/collaboration/images/organizations/convert-to-organization.png b/sources/platform/account/images/organizations/convert-to-organization.png similarity index 100% rename from sources/platform/collaboration/images/organizations/convert-to-organization.png rename to sources/platform/account/images/organizations/convert-to-organization.png diff --git a/sources/platform/collaboration/images/organizations/create-new-org.png b/sources/platform/account/images/organizations/create-new-org.png similarity index 100% rename from sources/platform/collaboration/images/organizations/create-new-org.png rename to sources/platform/account/images/organizations/create-new-org.png diff --git a/sources/platform/collaboration/images/organizations/integrations.png b/sources/platform/account/images/organizations/integrations.png similarity index 100% rename from sources/platform/collaboration/images/organizations/integrations.png rename to sources/platform/account/images/organizations/integrations.png diff --git a/sources/platform/collaboration/images/organizations/members.png b/sources/platform/account/images/organizations/members.png similarity index 100% rename from sources/platform/collaboration/images/organizations/members.png rename to sources/platform/account/images/organizations/members.png diff --git a/sources/platform/collaboration/images/organizations/my-organizations.png b/sources/platform/account/images/organizations/my-organizations.png similarity index 100% rename from sources/platform/collaboration/images/organizations/my-organizations.png rename to sources/platform/account/images/organizations/my-organizations.png diff --git a/sources/platform/collaboration/images/organizations/roles.png b/sources/platform/account/images/organizations/roles.png similarity index 100% rename from sources/platform/collaboration/images/organizations/roles.png rename to sources/platform/account/images/organizations/roles.png diff --git a/sources/platform/collaboration/images/organizations/switch-to-organization.png b/sources/platform/account/images/organizations/switch-to-organization.png similarity index 100% rename from sources/platform/collaboration/images/organizations/switch-to-organization.png rename to sources/platform/account/images/organizations/switch-to-organization.png diff --git a/sources/platform/account/index.mdx b/sources/platform/account/index.mdx new file mode 100644 index 0000000000..832a1ae418 --- /dev/null +++ b/sources/platform/account/index.mdx @@ -0,0 +1,35 @@ +--- +title: Account +description: Manage your Apify account, billing, organization settings, and access permissions. +sidebar_label: Overview +sidebar_position: 0 +slug: /account +--- + +import Card from "@site/src/components/Card"; +import CardGrid from "@site/src/components/CardGrid"; + +Manage your Apify account settings, billing, and team collaboration. + + + + + + + diff --git a/sources/platform/console/settings.md b/sources/platform/account/settings.md similarity index 99% rename from sources/platform/console/settings.md rename to sources/platform/account/settings.md index ff829d36cb..166053edf9 100644 --- a/sources/platform/console/settings.md +++ b/sources/platform/account/settings.md @@ -3,7 +3,7 @@ title: Account settings description: Learn how to manage your Apify account, configure integrations, create and manage organizations, and set notification preferences in the Settings tab. sidebar_position: 4 category: platform -slug: /console/settings +slug: /account/settings --- **Learn how to manage your Apify account, configure integrations, create and manage organizations, and set notification preferences in the Settings tab.** diff --git a/sources/platform/console/store.md b/sources/platform/account/store.md similarity index 98% rename from sources/platform/console/store.md rename to sources/platform/account/store.md index fd38e87c49..a115218bd2 100644 --- a/sources/platform/console/store.md +++ b/sources/platform/account/store.md @@ -3,7 +3,7 @@ title: Apify Store description: Explore Apify Store, browse and select Actors, search by criteria, sort by relevance, and adjust settings for immediate or future runs. sidebar_position: 2 category: platform -slug: /console/store +slug: /account/store --- **Explore Apify Store, browse and select Actors, search by criteria, sort by relevance, and adjust settings for immediate or future runs.** diff --git a/sources/platform/console/two-factor-authentication.md b/sources/platform/account/two-factor-authentication.md similarity index 99% rename from sources/platform/console/two-factor-authentication.md rename to sources/platform/account/two-factor-authentication.md index 0061735f77..2f3612bc3b 100644 --- a/sources/platform/console/two-factor-authentication.md +++ b/sources/platform/account/two-factor-authentication.md @@ -3,7 +3,7 @@ title: Two-factor authentication setup description: Learn about Apify Console's two-factor authentication process and how to set it up. sidebar_position: 5 category: platform -slug: /console/two-factor-authentication +slug: /account/two-factor-authentication --- **Learn about Apify Console's account two-factor authentication process and how to set it up.** diff --git a/sources/platform/actors/development/actor_definition/actor_json.md b/sources/platform/actors/development/actor_definition/actor_json.md index 1cd2cfb3a6..8c25fd711e 100644 --- a/sources/platform/actors/development/actor_definition/actor_json.md +++ b/sources/platform/actors/development/actor_definition/actor_json.md @@ -82,9 +82,9 @@ Actor `name`, `version`, `buildTag`, and `environmentVariables` are currently on | `dockerfile` | Optional | The path to the Dockerfile to be used for building the Actor on the platform. If not specified, the system will search for Dockerfiles in the `.actor/Dockerfile` and `Dockerfile` paths, in that order. Refer to the [Dockerfile](./docker.md) section for more information. | | `dockerContextDir` | Optional | The path to the directory to be used as the Docker context when building the Actor. The path is relative to the location of the `actor.json` file. This property is useful for monorepos containing multiple Actors. Refer to the [Actor monorepos](../deployment/source_types.md#actor-monorepos) section for more details. | | `readme` | Optional | The path to the README file to be used on the platform. If not specified, the system will look for README files in the `.actor/README.md` and `README.md` paths, in that order of preference. Check out [Apify Marketing Playbook to learn how to write a quality README files](https://apify.notion.site/How-to-create-an-Actor-README-759a1614daa54bee834ee39fe4d98bc2) guidance. | -| `input` | Optional | You can embed your [input schema](./input_schema/index.md) object directly in `actor.json` under the `input` field. You can also provide a path to a custom input schema. If not provided, the input schema at `.actor/INPUT_SCHEMA.json` or `INPUT_SCHEMA.json` is used, in this order of preference. | +| `input` | Optional | You can embed your [input schema](../input_output_schemas/input_schema.md) object directly in `actor.json` under the `input` field. You can also provide a path to a custom input schema. If not provided, the input schema at `.actor/INPUT_SCHEMA.json` or `INPUT_SCHEMA.json` is used, in this order of preference. | | `changelog` | Optional | The path to the CHANGELOG file displayed in the Information tab of the Actor in Apify Console next to Readme. If not provided, the CHANGELOG at `.actor/CHANGELOG.md` or `CHANGELOG.md` is used, in this order of preference. Your Actor doesn't need to have a CHANGELOG but it is a good practice to keep it updated for published Actors. | -| `storages.dataset` | Optional | You can define the schema of the items in your dataset under the `storages.dataset` field. This can be either an embedded object or a path to a JSON schema file. [Read more](/platform/actors/development/actor-definition/dataset-schema) about Actor dataset schemas. | +| `storages.dataset` | Optional | You can define the schema of the items in your dataset under the `storages.dataset` field. This can be either an embedded object or a path to a JSON schema file. [Read more](/platform/actors/development/input-output-schemas/dataset-schema) about Actor dataset schemas. | | `defaultMemoryMbytes` | Optional | Specifies the default amount of memory in megabytes to be used when the Actor is started. Can be an integer or a [dynamic memory expression string](./dynamic_actor_memory/index.md). | | `minMemoryMbytes` | Optional | Specifies the minimum amount of memory in megabytes required by the Actor to run. Requires an _integer_ value. If both `minMemoryMbytes` and `maxMemoryMbytes` are set, then `minMemoryMbytes` must be equal or lower than `maxMemoryMbytes`. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. | | `maxMemoryMbytes` | Optional | Specifies the maximum amount of memory in megabytes required by the Actor to run. It can be used to control the costs of run, especially when developing pay per result Actors. Requires an _integer_ value. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. | diff --git a/sources/platform/actors/development/actor_definition/index.md b/sources/platform/actors/development/actor_definition/index.md index 00bfcd895f..4480225928 100644 --- a/sources/platform/actors/development/actor_definition/index.md +++ b/sources/platform/actors/development/actor_definition/index.md @@ -18,12 +18,12 @@ Actors have the following elements: - The main **[actor.json](./actor_json.md)** file contains **metadata** such as the Actor name, description, author, version, and links pointing to the other definition files below. - **[Dockerfile](./docker.md)** which specifies where is the Actor's source code, how to build it, and run it. - **Documentation** in the form of a **README.md** file. -- **[Input](./input_schema/index.md)** and **[dataset schemas](/platform/actors/development/actor-definition/dataset-schema)** that describe what input the Actor requires and what results it produces. -- Access to an out-of-box **[storage](../../../storage/index.md)** system for Actor data, results, and files. +- **[Input](../input_output_schemas/input_schema.md)** and **[dataset schemas](/platform/actors/development/input-output-schemas/dataset-schema)** that describe what input the Actor requires and what results it produces. +- Access to an out-of-box **[storage](../../storage/index.md)** system for Actor data, results, and files. The documentation and the input/dataset schemas make it possible for people to easily understand what the Actor does, enter the required inputs both in the user interface or API, and integrate the Actor's results with their other workflows. Actors can easily call and interact with each other, enabling building more complex systems on top of simple ones. -The Apify platform provides an open [API](/api/v2), cron-style [scheduler](../../schedules), [webhooks](../../../integrations/programming/webhooks/index.md), and [integrations](../../integrations) to services such as Zapier or Make, which make it easy for users to integrate Actors with their existing workflows. Anyone is welcome to [publish Actors](/platform/actors/publishing) in [Apify Store](https://apify.com/store), and you can even [monetize your Actors](/platform/actors/publishing/monetize). +The Apify platform provides an open [API](/api/v2), cron-style [scheduler](../running/schedules), [webhooks](../../../integrations/programming/webhooks/index.md), and [integrations](../../integrations) to services such as Zapier or Make, which make it easy for users to integrate Actors with their existing workflows. Anyone is welcome to [publish Actors](/platform/actors/publishing) in [Apify Store](https://apify.com/store), and you can even [monetize your Actors](/platform/actors/publishing/monetize). Actors can be developed and run locally and then easily deployed to the Apify platform using the [Apify CLI](/cli) or a [GitHub integration](../../../integrations/programming/github.md). For more details, see the [Deployment](../deployment/index.md) section. diff --git a/sources/platform/actors/development/builds_and_runs/runs.md b/sources/platform/actors/development/builds_and_runs/runs.md index 19f9567a2a..3278b6d616 100644 --- a/sources/platform/actors/development/builds_and_runs/runs.md +++ b/sources/platform/actors/development/builds_and_runs/runs.md @@ -17,12 +17,12 @@ You can start an Actor in several ways: - Manually from the [Apify Console](https://console.apify.com/actors) UI - Via the [Apify API](/api/v2/act-runs-post) -- Using the [Scheduler](../../../schedules.md) provided by the Apify platform +- Using the [Scheduler](../../running/schedules.md) provided by the Apify platform - By one of the available [integrations](../../../integrations/index.mdx) ## Input and environment variables -The run receives input via the `INPUT` record of its default [key-value store](../../../storage/key_value_store.md). Environment variables are also passed to the run. For more information about environment variables check the [Environment variables](../programming_interface/environment_variables.md) section. +The run receives input via the `INPUT` record of its default [key-value store](../../storage/key_value_store.md). Environment variables are also passed to the run. For more information about environment variables check the [Environment variables](../programming_interface/environment_variables.md) section. ## Run duration and timeout diff --git a/sources/platform/actors/development/deployment/source_types.md b/sources/platform/actors/development/deployment/source_types.md index f9f57408c7..b9a964f699 100644 --- a/sources/platform/actors/development/deployment/source_types.md +++ b/sources/platform/actors/development/deployment/source_types.md @@ -21,7 +21,7 @@ This section explains the various sources types available for Apify Actors and h ## Web IDE -This is the default option when your Actor's source code is hosted on the Apify platform. It offers quick previews and updates to your source code, easy file and directory browsing, and direct testing of the [`INPUT_SCHEMA.json`](/platform/actors/development/actor-definition/input-schema) on the Apify platform. +This is the default option when your Actor's source code is hosted on the Apify platform. It offers quick previews and updates to your source code, easy file and directory browsing, and direct testing of the [`INPUT_SCHEMA.json`](/platform/actors/development/input-output-schemas/input-schema) on the Apify platform. A `Dockerfile` is mandatory for all Actors. When using the default NodeJS Dockerfile, you'll typically need `main.js` for your source code and `package.json` for [npm](https://www.npmjs.com/) package configurations. diff --git a/sources/platform/actors/development/index.md b/sources/platform/actors/development/index.md index 7fe82ee759..8c722a9343 100644 --- a/sources/platform/actors/development/index.md +++ b/sources/platform/actors/development/index.md @@ -2,7 +2,7 @@ title: Actor development description: Read about the technical part of building Apify Actors. Learn to define Actor inputs, build new versions, persist Actor state, and choose base Docker images. sidebar_label: Development -sidebar_position: 7.4 +sidebar_position: 2 slug: /actors/development --- @@ -12,7 +12,7 @@ slug: /actors/development This section will guide you through the whole story of [Actor](../index.mdx) development. -You can follow chapters sequentially from [Quick start](/platform/actors/development/quick-start), where you learn how to create your first Actor in just a few minutes, through the more technical sections describing the whole Actor model, up to the [Performance](/sources/platform/actors/development/performance.md) section, where you learn how to fine-tune your Actor to get the most out of the Apify platform. +You can follow chapters sequentially from [Quick start](/platform/get-started/build-an-actor), where you learn how to create your first Actor in just a few minutes, through the more technical sections describing the whole Actor model, up to the [Performance](/sources/platform/actors/development/performance.md) section, where you learn how to fine-tune your Actor to get the most out of the Apify platform. import Card from "@site/src/components/Card"; import CardGrid from "@site/src/components/CardGrid"; @@ -20,7 +20,7 @@ import CardGrid from "@site/src/components/CardGrid"; @@ -150,7 +150,7 @@ async def main(): ## Push results to the dataset -Store larger results in a [Dataset](../../../storage/dataset.md), an append-only object storage +Store larger results in a [Dataset](../../storage/dataset.md), an append-only object storage Note that Datasets can optionally be equipped with the schema that ensures only certain kinds of objects are stored in them. diff --git a/sources/platform/actors/development/programming_interface/environment_variables.md b/sources/platform/actors/development/programming_interface/environment_variables.md index b295748a64..61e1afcb4f 100644 --- a/sources/platform/actors/development/programming_interface/environment_variables.md +++ b/sources/platform/actors/development/programming_interface/environment_variables.md @@ -35,7 +35,7 @@ Apify sets several system environment variables for each Actor run. These variab Here's a table of key system environment variables: | Environment Variable | Description | -|----------------------|-------------| +| -------------------- | ----------- | | `ACTOR_ID` | ID of the Actor. | | `ACTOR_FULL_NAME` | Full technical name of the Actor, in the format `owner-username/actor-name`. | | `ACTOR_RUN_ID` | ID of the Actor run. | @@ -47,7 +47,7 @@ Here's a table of key system environment variables: | `ACTOR_DEFAULT_DATASET_ID` | Unique identifier for the default dataset associated with the current Actor run. | | `ACTOR_DEFAULT_KEY_VALUE_STORE_ID` | Unique identifier for the default key-value store associated with the current Actor run. | | `ACTOR_DEFAULT_REQUEST_QUEUE_ID` | Unique identifier for the default request queue associated with the current Actor run. | -| `ACTOR_INPUT_KEY` | Key of the record in the default key-value store that holds the [Actor input](/platform/actors/running/input-and-output#input). | +| `ACTOR_INPUT_KEY` | Key of the record in the default key-value store that holds the [Actor input](/platform/actors/running/input-and-output#input). | | `ACTOR_MAX_PAID_DATASET_ITEMS` | For paid-per-result Actors, the user-set limit on returned results. Do not exceed this limit. | | `ACTOR_MAX_TOTAL_CHARGE_USD` | For pay-per-event Actors, the user-set limit on run cost. Do not exceed this limit. | | `ACTOR_RESTART_ON_ERROR` | If **1**, the Actor run will be restarted if it fails. | @@ -70,7 +70,7 @@ Here's a table of key system environment variables: | `APIFY_DEDICATED_CPUS` | Number of CPU cores reserved for the Actor, based on allocated memory. | | `APIFY_WORKFLOW_KEY` | Identifier used for grouping related runs and API calls together. | | `APIFY_META_ORIGIN` | Specifies how an Actor run was started. Possible values are in [Runs and builds](/platform/actors/running/runs-and-builds#origin) documentation. | -| `APIFY_INPUT_SECRETS_KEY_FILE` | Path to the secret key used to decrypt [Secret inputs](/platform/actors/development/actor-definition/input-schema/secret-input). | +| `APIFY_INPUT_SECRETS_KEY_FILE` | Path to the secret key used to decrypt [Secret inputs](/platform/actors/development/input-output-schemas/secret-input). | | `APIFY_INPUT_SECRETS_KEY_PASSPHRASE` | Passphrase for the input secret key specified in `APIFY_INPUT_SECRETS_KEY_FILE`. | diff --git a/sources/platform/actors/index.mdx b/sources/platform/actors/index.mdx index bfd6843002..a0c1fd854a 100644 --- a/sources/platform/actors/index.mdx +++ b/sources/platform/actors/index.mdx @@ -1,7 +1,8 @@ --- title: Actors description: Learn how to develop, run and share serverless cloud programs. Create your own web scraping and automation tools and publish them on the Apify platform. -sidebar_position: 7 +sidebar_label: Overview +sidebar_position: 0 category: platform slug: /actors --- @@ -63,7 +64,7 @@ Ready to start? Check out the [Actor development documentation](/platform/actors ## Running Actors -You can run Actors manually in [Apify Console](https://console.apify.com/actors), using the [API](/api), [CLI](/cli), or [scheduler](../schedules.md). You can easily [integrate Actors](../integrations/index.mdx) with other apps, [share](../collaboration/access_rights.md) them with other people, [publish](./publishing/index.mdx) them in [Apify Store](https://apify.com/store), and even [monetize](./publishing/monetize/index.mdx). +You can run Actors manually in [Apify Console](https://console.apify.com/actors), using the [API](/api), [CLI](/cli), or [scheduler](./running/schedules.md). You can easily [integrate Actors](../integrations/index.mdx) with other apps, [share](../account/collaboration/access_rights.md) them with other people, [publish](./publishing/index.mdx) them in [Apify Store](https://apify.com/store), and even [monetize](./publishing/monetize/index.mdx). :::tip Try Actors diff --git a/sources/platform/proxy/datacenter_proxy.md b/sources/platform/actors/proxy/datacenter_proxy.md similarity index 99% rename from sources/platform/proxy/datacenter_proxy.md rename to sources/platform/actors/proxy/datacenter_proxy.md index 1cf81cb789..f5d0c03d25 100644 --- a/sources/platform/proxy/datacenter_proxy.md +++ b/sources/platform/actors/proxy/datacenter_proxy.md @@ -1,8 +1,8 @@ --- title: Datacenter proxy description: Learn how to reduce blocking when web scraping using IP address rotation. See proxy parameters and learn to implement Apify Proxy in an application. -sidebar_position: 10.2 -slug: /proxy/datacenter-proxy +sidebar_position: 2 +slug: /actors/proxy/datacenter-proxy --- import Tabs from '@theme/Tabs'; diff --git a/sources/platform/proxy/google_serp_proxy.md b/sources/platform/actors/proxy/google_serp_proxy.md similarity index 93% rename from sources/platform/proxy/google_serp_proxy.md rename to sources/platform/actors/proxy/google_serp_proxy.md index 3acbd2325f..0c11342b46 100644 --- a/sources/platform/proxy/google_serp_proxy.md +++ b/sources/platform/actors/proxy/google_serp_proxy.md @@ -1,8 +1,8 @@ --- title: Google SERP proxy description: Learn how to collect search results from Google Search-powered tools. Get search results from localized domains in multiple countries, e.g. the US and Germany. -sidebar_position: 10.4 -slug: /proxy/google-serp-proxy +sidebar_position: 4 +slug: /actors/proxy/google-serp-proxy --- import Tabs from '@theme/Tabs'; @@ -95,7 +95,7 @@ To retrieve more than 10 results, use the `numPages` parameter described before ### Using the Apify SDK -If you are developing your own Apify [Actor](../actors/index.mdx) using the [Apify SDK](/sdk) and [Crawlee](https://crawlee.dev/), the most efficient way to use Google SERP proxy is [CheerioCrawler](https://crawlee.dev/api/cheerio-crawler/class/CheerioCrawler). This is because Google SERP proxy [only returns a page's HTML](./index.md). Alternatively, you can use the [got-scraping](https://github.com/apify/got-scraping) [npm package](https://www.npmjs.com/package/got-scraping) by specifying the proxy URL in the options. For Python, you can leverage the [`requests`](https://pypi.org/project/requests/) library along with the Apify SDK. +If you are developing your own Apify [Actor](../index.mdx) using the [Apify SDK](/sdk) and [Crawlee](https://crawlee.dev/), the most efficient way to use Google SERP proxy is [CheerioCrawler](https://crawlee.dev/api/cheerio-crawler/class/CheerioCrawler). This is because Google SERP proxy [only returns a page's HTML](./index.md). Alternatively, you can use the [got-scraping](https://github.com/apify/got-scraping) [npm package](https://www.npmjs.com/package/got-scraping) by specifying the proxy URL in the options. For Python, you can leverage the [`requests`](https://pypi.org/project/requests/) library along with the Apify SDK. The following examples get a list of search results for the keyword **wikipedia** from the USA (`google.com`). diff --git a/sources/platform/proxy/images/proxy-status.png b/sources/platform/actors/proxy/images/proxy-status.png similarity index 100% rename from sources/platform/proxy/images/proxy-status.png rename to sources/platform/actors/proxy/images/proxy-status.png diff --git a/sources/platform/proxy/index.md b/sources/platform/actors/proxy/index.md similarity index 87% rename from sources/platform/proxy/index.md rename to sources/platform/actors/proxy/index.md index 1ae1bf2e06..f60d14f93d 100644 --- a/sources/platform/proxy/index.md +++ b/sources/platform/actors/proxy/index.md @@ -1,9 +1,9 @@ --- title: Proxy description: Learn to anonymously access websites in scraping/automation jobs. Improve data outputs and efficiency of bots, and access websites from various geographies. -sidebar_position: 10 +sidebar_position: 5 category: platform -slug: /proxy +slug: /actors/proxy --- import Tabs from '@theme/Tabs'; @@ -17,7 +17,7 @@ import CardGrid from "@site/src/components/CardGrid"; > [Apify Proxy](https://apify.com/proxy) allows you to change your IP address when web scraping to reduce the chance of being [blocked](/academy/anti-scraping/techniques) because of your geographical location. -You can use proxies in your [Actors](../actors/index.mdx) or any other application that supports HTTP proxies. Apify Proxy monitors the health of your IP pool and intelligently rotates addresses to prevent IP address-based blocking. +You can use proxies in your [Actors](../index.mdx) or any other application that supports HTTP proxies. Apify Proxy monitors the health of your IP pool and intelligently rotates addresses to prevent IP address-based blocking. You can view your proxy settings and password on the [Proxy](https://console.apify.com/proxy) page in Apify Console. For pricing information, visit [apify.com/pricing](https://apify.com/pricing). @@ -84,17 +84,17 @@ Several types of proxy servers exist, each offering distinct advantages, disadva diff --git a/sources/platform/proxy/residential_proxy.md b/sources/platform/actors/proxy/residential_proxy.md similarity index 99% rename from sources/platform/proxy/residential_proxy.md rename to sources/platform/actors/proxy/residential_proxy.md index f65470e661..33fdf21b26 100644 --- a/sources/platform/proxy/residential_proxy.md +++ b/sources/platform/actors/proxy/residential_proxy.md @@ -1,8 +1,8 @@ --- title: Residential proxy description: Achieve a higher level of anonymity using IP addresses from human users. Access a wider pool of proxies and reduce blocking by websites' anti-scraping measures. -sidebar_position: 10.3 -slug: /proxy/residential-proxy +sidebar_position: 3 +slug: /actors/proxy/residential-proxy --- import Tabs from '@theme/Tabs'; diff --git a/sources/platform/proxy/usage.md b/sources/platform/actors/proxy/usage.md similarity index 97% rename from sources/platform/proxy/usage.md rename to sources/platform/actors/proxy/usage.md index 0203aeb2f4..4c62cf9456 100644 --- a/sources/platform/proxy/usage.md +++ b/sources/platform/actors/proxy/usage.md @@ -1,8 +1,8 @@ --- title: Proxy usage description: Learn how to configure and use Apify Proxy. See the required parameters such as the correct username and password. -sidebar_position: 10.1 -slug: /proxy/usage +sidebar_position: 1 +slug: /actors/proxy/usage --- **Learn how to configure and use Apify Proxy. See the required parameters such as the correct username and password.** @@ -49,7 +49,7 @@ http://auto:apify_proxy_EaAFg6CFhc4eKk54Q1HbGDEiUTrk480uZv03@proxy.apify.com:800 If you want to connect to Apify Proxy from Actors running on the Apify Platform, the recommended way is to use built-in proxy configuration tools in the [Apify SDK JavaScript](/sdk/js/docs/guides/proxy-management) or [Apify SDK Python](/sdk/python/docs/concepts/proxy-management) -If you don't want to use these helpers, and want to connect to Apify Proxy manually, you can find the right configuration values in [environment variables](../actors/development/programming_interface/environment_variables.md) provided to the Actor. +If you don't want to use these helpers, and want to connect to Apify Proxy manually, you can find the right configuration values in [environment variables](../development/programming_interface/environment_variables.md) provided to the Actor. By using this configuration, you ensure that you connect to Apify Proxy directly through the Apify infrastructure, bypassing any external connection via the Internet, thereby improving the connection speed, and ensuring you don't pay for external data transfer. | Parameter | Source / explanation | @@ -147,7 +147,7 @@ Use [sessions](#sessions) to control how you rotate IP addresses. See our guide Sessions allow you to use the same IP address for multiple connections. In cases where you need to keep the same session (e.g. when you need to log in to a website), it is best to keep the same proxy and so the IP address. On the other hand by switching the IP address, you can avoid being blocked by the website. -To set a new session, pass the `session` parameter in your [username](./usage.md#username-parameters) field when connecting to a proxy. This will serve as the session's ID and an IP address will be assigned to it. To [use that IP address in other requests](/platform/proxy/datacenter-proxy#connecting-to-datacenter-proxies), pass that same session ID in the username field. +To set a new session, pass the `session` parameter in your [username](./usage.md#username-parameters) field when connecting to a proxy. This will serve as the session's ID and an IP address will be assigned to it. To [use that IP address in other requests](/platform/actors/proxy/datacenter-proxy#connecting-to-datacenter-proxies), pass that same session ID in the username field. We recommend you to use [SessionPool](https://crawlee.dev/api/core/class/SessionPool) abstraction when managing sessions. The created session will then store information such as cookies and can be used to generate [browser fingerprints](/academy/anti-scraping/mitigation/generating-fingerprints). You can also assign custom user data such as authorization tokens and specific headers. Sessions are available for [datacenter](./datacenter_proxy.md) and [residential](./ diff --git a/sources/platform/proxy/your_own_proxies.md b/sources/platform/actors/proxy/your_own_proxies.md similarity index 87% rename from sources/platform/proxy/your_own_proxies.md rename to sources/platform/actors/proxy/your_own_proxies.md index 3f2be86712..6c42f14c72 100644 --- a/sources/platform/proxy/your_own_proxies.md +++ b/sources/platform/actors/proxy/your_own_proxies.md @@ -1,8 +1,8 @@ --- title: Using your own proxies description: Learn how to use your own proxies while using the Apify platform. -sidebar_position: 10.5 -slug: /proxy/using-your-own-proxies +sidebar_position: 5 +slug: /actors/proxy/using-your-own-proxies --- **Learn how to use your own proxies while using the Apify platform.** @@ -15,7 +15,7 @@ In addition to our proxies, you can use your own both in Apify Console and SDK. To use your own proxies with Apify Console, in your Actor's **Input and options** tab, scroll down and open the **Proxy and browser configuration** section. Enter your proxy URLs, and you're good to go. -![Using custom proxy in Apify Console](../images/proxy-custom.png) +![Using custom proxy in Apify Console](../../images/proxy-custom.png) ## Custom proxies in SDK diff --git a/sources/platform/actors/publishing/index.mdx b/sources/platform/actors/publishing/index.mdx index b781ddec57..9ad028f8c7 100644 --- a/sources/platform/actors/publishing/index.mdx +++ b/sources/platform/actors/publishing/index.mdx @@ -1,7 +1,7 @@ --- title: Publishing and monetization description: Learn about publishing, and monetizing your Actors on the Apify platform. -sidebar_position: 7.5 +sidebar_position: 3 slug: /actors/publishing --- diff --git a/sources/platform/actors/publishing/monetize/pay_per_event.mdx b/sources/platform/actors/publishing/monetize/pay_per_event.mdx index 313f282533..18a3289963 100644 --- a/sources/platform/actors/publishing/monetize/pay_per_event.mdx +++ b/sources/platform/actors/publishing/monetize/pay_per_event.mdx @@ -163,7 +163,7 @@ We recommend using the synthetic Actor start event in PPE Actors. It benefits bo Starting an Actor takes time, and creates additional cost for the Actor creator, because the profit equals revenue minus platform costs. -One of the options to charge for the time spent on starting the Actor is to charge an “Actor start” event. Unfortunately, this makes your Actor comparably expensive with other tools on the market (outside of [Apify Store](/platform/console/store)) that do not incur this startup cost. +One of the options to charge for the time spent on starting the Actor is to charge an “Actor start” event. Unfortunately, this makes your Actor comparably expensive with other tools on the market (outside of [Apify Store](/platform/account/store)) that do not incur this startup cost. We want to make it easier for Actor creators to stay competitive, but also help them to be profitable. Therefore, we have the Apify Actor synthetic start event `apify-actor-start`. This event is enabled by default for all new PPE Actors, and when you use it Apify will cover the compute unit cost of the first 5 seconds of every Actor run. diff --git a/sources/platform/actors/publishing/quality_score.mdx b/sources/platform/actors/publishing/quality_score.mdx index 3e32396200..a685fbe497 100644 --- a/sources/platform/actors/publishing/quality_score.mdx +++ b/sources/platform/actors/publishing/quality_score.mdx @@ -46,7 +46,7 @@ These are the quality categories: Reliability measures your Actor's operational stability and consistency. A reliable Actor maintains high run success rates and passes automated quality assurance tests. Poor reliability significantly impacts your quality score. For more information on testing requirements, see [Automated Testing](https://docs.apify.com/platform/actors/publishing/test). -Implementing an [input schema](https://docs.apify.com/platform/actors/development/actor-definition/input-schema) helps prevent runtime failures by validating user input before execution begins, reducing errors caused by invalid or malformed inputs. +Implementing an [input schema](https://docs.apify.com/platform/actors/development/input-output-schemas/input-schema) helps prevent runtime failures by validating user input before execution begins, reducing errors caused by invalid or malformed inputs. ### Popularity @@ -80,4 +80,4 @@ Developers with a proven track record of publishing successful Actors receive re ### Congruency -Congruency measures the consistency and coherence across your Actor's components. A well-designed Actor maintains alignment between its title, description, documentation, and schemas. Ensure that your [input schema](https://docs.apify.com/platform/actors/development/actor-definition/input-schema), [dataset schema](https://docs.apify.com/platform/actors/development/actor-definition/dataset-schema), [key-value store schema](https://docs.apify.com/platform/actors/development/actor-definition/key-value-store-schema), and README documentation all reflect consistent terminology and accurately describe the Actor's behavior. This coherence reduces user confusion and improves the overall experience. +Congruency measures the consistency and coherence across your Actor's components. A well-designed Actor maintains alignment between its title, description, documentation, and schemas. Ensure that your [input schema](https://docs.apify.com/platform/actors/development/input-output-schemas/input-schema), [dataset schema](https://docs.apify.com/platform/actors/development/input-output-schemas/dataset-schema), [key-value store schema](https://docs.apify.com/platform/actors/development/input-output-schemas/key-value-store-schema), and README documentation all reflect consistent terminology and accurately describe the Actor's behavior. This coherence reduces user confusion and improves the overall experience. diff --git a/sources/platform/actors/publishing/testing.mdx b/sources/platform/actors/publishing/testing.mdx index fb9580d44d..d7bd0c3a02 100644 --- a/sources/platform/actors/publishing/testing.mdx +++ b/sources/platform/actors/publishing/testing.mdx @@ -9,6 +9,8 @@ sidebar_position: 3 --- + + ### Why we test We want to make sure that all Actors in Apify Store are top-notch, or at least as top-notch as they can be. Since there are many of them, we have an automated testing procedure in place that tests all Actors daily. @@ -16,7 +18,7 @@ This helps us to flag Actors that temporarily don't work as expected `under main ### How we test -The test runs the Actor with its default input (defined by the [**prefill**](https://docs.apify.com/platform/actors/development/actor-definition/input-schema/specification/v1#prefill-vs-default-vs-required) option in the input schema file) +The test runs the Actor with its default input (defined by the [**prefill**](https://docs.apify.com/platform/actors/development/input-output-schemas/input-schema/specification/v1#prefill-vs-default-vs-required) option in the input schema file) and expects it to finish with a **Succeeded** status and non-empty default dataset within 5 minutes of the beginning of the run. ![Actor page](./images/actor-test.webp) diff --git a/sources/platform/actors/running/actor_standby.md b/sources/platform/actors/running/actor_standby.md index b2c171b477..7641f4db38 100644 --- a/sources/platform/actors/running/actor_standby.md +++ b/sources/platform/actors/running/actor_standby.md @@ -1,7 +1,7 @@ --- title: Standby mode description: Use an Actor as a real-time API server. -sidebar_position: 7.3 +sidebar_position: 7 slug: /actors/running/standby sidebar_label: Standby mode --- diff --git a/sources/platform/monitoring/images/alerts.png b/sources/platform/actors/running/images/monitoring/alerts.png similarity index 100% rename from sources/platform/monitoring/images/alerts.png rename to sources/platform/actors/running/images/monitoring/alerts.png diff --git a/sources/platform/monitoring/images/daily-run-statuses.png b/sources/platform/actors/running/images/monitoring/daily-run-statuses.png similarity index 100% rename from sources/platform/monitoring/images/daily-run-statuses.png rename to sources/platform/actors/running/images/monitoring/daily-run-statuses.png diff --git a/sources/platform/monitoring/images/email-notification.png b/sources/platform/actors/running/images/monitoring/email-notification.png similarity index 100% rename from sources/platform/monitoring/images/email-notification.png rename to sources/platform/actors/running/images/monitoring/email-notification.png diff --git a/sources/platform/monitoring/images/in-app-notification.png b/sources/platform/actors/running/images/monitoring/in-app-notification.png similarity index 100% rename from sources/platform/monitoring/images/in-app-notification.png rename to sources/platform/actors/running/images/monitoring/in-app-notification.png diff --git a/sources/platform/monitoring/images/metric-options.png b/sources/platform/actors/running/images/monitoring/metric-options.png similarity index 100% rename from sources/platform/monitoring/images/metric-options.png rename to sources/platform/actors/running/images/monitoring/metric-options.png diff --git a/sources/platform/monitoring/images/monitoring.png b/sources/platform/actors/running/images/monitoring/monitoring.png similarity index 100% rename from sources/platform/monitoring/images/monitoring.png rename to sources/platform/actors/running/images/monitoring/monitoring.png diff --git a/sources/platform/monitoring/images/notifications.png b/sources/platform/actors/running/images/monitoring/notifications.png similarity index 100% rename from sources/platform/monitoring/images/notifications.png rename to sources/platform/actors/running/images/monitoring/notifications.png diff --git a/sources/platform/monitoring/images/run-statistics-chart.png b/sources/platform/actors/running/images/monitoring/run-statistics-chart.png similarity index 100% rename from sources/platform/monitoring/images/run-statistics-chart.png rename to sources/platform/actors/running/images/monitoring/run-statistics-chart.png diff --git a/sources/platform/actors/running/index.md b/sources/platform/actors/running/index.md index 88be596a39..5cd0a110ad 100644 --- a/sources/platform/actors/running/index.md +++ b/sources/platform/actors/running/index.md @@ -1,7 +1,7 @@ --- title: Running Actors description: Start an Actor from Apify Console or via API. Learn about Actor lifecycles, how to specify settings and version, provide input, and resurrect finished runs. -sidebar_position: 7.1 +sidebar_position: 1 slug: /actors/running --- diff --git a/sources/platform/actors/running/input_and_output.md b/sources/platform/actors/running/input_and_output.md index 05f5a441ac..6e2c83b100 100644 --- a/sources/platform/actors/running/input_and_output.md +++ b/sources/platform/actors/running/input_and_output.md @@ -47,15 +47,15 @@ If the Actor is configured by developer to use [dynamic memory](../development/a ## Output -While the input object provides a way to instruct Actors, an Actor can also generate an output, usually stored in its default [Dataset](../../storage/dataset), but some additional files might be stored in its [Key-value store](../../storage/key-value-store). Always read the Actor's README to learn more about its output. +While the input object provides a way to instruct Actors, an Actor can also generate an output, usually stored in its default [Dataset](../storage/dataset), but some additional files might be stored in its [Key-value store](../storage/key-value-store). Always read the Actor's README to learn more about its output. -For more details about storages, visit the [Storage](../../storage/index.md) section. +For more details about storages, visit the [Storage](../storage/index.md) section. You can quickly access the Actor's output from the run detail page: ![Actor output](./images/input_and_output/actor-output.png) -And to access all the data associated with the run, see the **Storage** tab, where you can explore the Actor's default [Dataset](../../storage/dataset), [Key-value store](../../storage/key-value-store), and [Request queue](../../storage/request-queue): +And to access all the data associated with the run, see the **Storage** tab, where you can explore the Actor's default [Dataset](../storage/dataset), [Key-value store](../storage/key-value-store), and [Request queue](../storage/request-queue): ![Actor output](./images/input_and_output/actor-storage.png) diff --git a/sources/platform/monitoring/index.md b/sources/platform/actors/running/monitoring.md similarity index 84% rename from sources/platform/monitoring/index.md rename to sources/platform/actors/running/monitoring.md index 4cb75ef4f0..bdd6bc67fa 100644 --- a/sources/platform/monitoring/index.md +++ b/sources/platform/actors/running/monitoring.md @@ -1,9 +1,9 @@ --- title: Monitoring description: Learn how to continuously make sure that your Actors and tasks perform as expected and retrieve correct results. Receive alerts when your jobs or their metrics are not as you expect. -sidebar_position: 12 +sidebar_position: 9 category: guides -slug: /monitoring +slug: /actors/running/monitoring --- **Learn how to continuously make sure that your Actors and tasks perform as expected and retrieve correct results. Receive alerts when your jobs or their metrics are not as you expect.** @@ -22,20 +22,20 @@ Monitoring is an option you can find on any Actor or saved task in Apify Console The monitoring system is free for all users. You can use it to monitor as many Actors and tasks as you want, and it does not use any additional resources on top of your usage when running them. -![Monitoring](./images/monitoring.png) +![Monitoring](./images/monitoring/monitoring.png) ### Features Currently, the monitoring option offers the following features: 1. Chart showing **statuses** of runs of the Actor or saved task over last 30 days. - ![Daily run statuses](./images/daily-run-statuses.png) + ![Daily run statuses](./images/monitoring/daily-run-statuses.png) 2. Chart displaying **metrics** of the last 200 runs of the Actor or saved task. - ![Run statistics](./images/run-statistics-chart.png) + ![Run statistics](./images/monitoring/run-statistics-chart.png) 3. Option to set up **alerts** with notifications based on the run metrics. - ![Alerts](./images/alerts.png) + ![Alerts](./images/monitoring/alerts.png) > Both charts can also be added to your Apify Console home page so you can quickly see if there are any issues every time you open Apify Console. @@ -49,7 +49,7 @@ When you set up an alert, you have four choices for how you want the metrics to 3. **Alert, when run status is one of following** - This type of alert is checked only after the run finishes. It makes possible to track the status of your finished runs and send an alert if the run finishes in a state you do not expect. If your Actor runs very often and suddenly starts failing, you will receive a single alert after the first failed run in 1 minute, and then aggregated alert every 15 minutes. -4. **Alert for dataset field statistics** - If you have a [dataset schema](../actors/development/actor_definition/dataset_schema/validation.md) set up, then you can use the field statistics to set up an alert. You can use field statistics for example to track if some field is filled in all records, if some numeric value is too low/high (for example when tracking the price of a product over multiple sources), if the number of items in an array is too low/high (for example alert on Instagram Actor if post has a lot of comments) and many other tasks like these. +4. **Alert for dataset field statistics** - If you have a [dataset schema](../development/input_output_schemas/validation.md) set up, then you can use the field statistics to set up an alert. You can use field statistics for example to track if some field is filled in all records, if some numeric value is too low/high (for example when tracking the price of a product over multiple sources), if the number of items in an array is too low/high (for example alert on Instagram Actor if post has a lot of comments) and many other tasks like these. :::important @@ -57,7 +57,7 @@ When you set up an alert, you have four choices for how you want the metrics to ::: -![Metric condition configuration](./images/metric-options.png) +![Metric condition configuration](./images/monitoring/metric-options.png) You can get notified by email, Slack, or in Apify Console. If you use Slack, we suggest using Slack notifications instead of email because they are more reliable, and you can also get notified quicker. @@ -65,7 +65,7 @@ You can get notified by email, Slack, or in Apify Console. If you use Slack, we 2. **Slack** - To set up Slack notifications, you first need to connect your Slack workspace to Apify. To do that, go to your [account integration settings](https://console.apify.com/account/integrations) and click on the **+ Add** button in the Slack section. Once you have your workspace connected, you can choose the workspace when setting up alert notifications and then pick a channel to which you want the notifications to be delivered. 3. **In Console** - You can also get notified in Apify Console. This is useful if you access Apify Console often, and you do not need to be notified as soon as possible. -![Notifications configurations](./images/notifications.png) +![Notifications configurations](./images/monitoring/notifications.png) ### Alert notification @@ -78,11 +78,11 @@ The email and Slack alert notifications both contain the same information. You w 5. **Actor** - The full name of the Actor that triggered the alert which links to the Actor detail in Apify Console. 6. **Task** - If the monitoring alert was set up for a task, then this field will contain the name of the task which links to the task detail in Apify Console. -![Email notification](./images/email-notification.png) +![Email notification](./images/monitoring/email-notification.png) While the in-app notification will contain less information, it will point you directly to the Actor or task that triggered the alert: - + ## Other @@ -108,7 +108,7 @@ These are just a few examples of what you can monitor. It's always recommended t ### Alternative solutions -For more complex monitoring, you can use the [monitoring suite](https://apify.com/apify/monitoring), which is a collection of [Apify Actors](../actors/index.mdx) that allows you to automate the monitoring of jobs you have running on the [Apify platform](https://apify.com). The monitoring suite offers some features that are not **currently** available in Apify Console, such as: +For more complex monitoring, you can use the [monitoring suite](https://apify.com/apify/monitoring), which is a collection of [Apify Actors](../index.mdx) that allows you to automate the monitoring of jobs you have running on the [Apify platform](https://apify.com). The monitoring suite offers some features that are not **currently** available in Apify Console, such as: 1. Schema validation of the output 2. Duplicate checks in the output diff --git a/sources/platform/actors/running/runs_and_builds.md b/sources/platform/actors/running/runs_and_builds.md index 9accc07dae..784b2e082a 100644 --- a/sources/platform/actors/running/runs_and_builds.md +++ b/sources/platform/actors/running/runs_and_builds.md @@ -1,7 +1,7 @@ --- title: Runs and builds description: Learn about Actor builds and runs, their lifecycle, sharing, and data retention policy. -sidebar_position: 2 +sidebar_position: 3 slug: /actors/running/runs-and-builds --- @@ -27,11 +27,11 @@ Each build may have different features, input, or output. By fixing the build to When you start an Actor, an Actor run is created. An Actor run is a Docker container created from the build's Docker image with dedicated resources (CPU, memory, disk space). For more on this topic, see [Usage and resources](./usage_and_resources.md). -Each run has its own (default) [storages](../../storage) assigned, which it may but not necessarily need to use: +Each run has its own (default) [storages](../storage) assigned, which it may but not necessarily need to use: -- [Key-value store](../../storage/key-value-store) containing the input and enabling Actor to store other files. -- [Dataset](../../storage/dataset) enabling Actor to store the results. -- [Request queue](../../storage/request-queue) to maintain a queue of URLs to be processed. +- [Key-value store](../storage/key-value-store) containing the input and enabling Actor to store other files. +- [Dataset](../storage/dataset) enabling Actor to store the results. +- [Request queue](../storage/request-queue) to maintain a queue of URLs to be processed. What's happening inside of an Actor is visible on the Actor run log in the Actor run detail: @@ -129,4 +129,4 @@ Apify securely stores your ten most recent runs indefinitely, ensuring your reco ## Sharing -Share your Actor runs with other Apify users via the [access rights](../../collaboration/index.md) system. +Share your Actor runs with other Apify users via the [access rights](../../account/collaboration/access_rights.md) system. diff --git a/sources/platform/schedules.md b/sources/platform/actors/running/schedules.md similarity index 90% rename from sources/platform/schedules.md rename to sources/platform/actors/running/schedules.md index ef13cc0048..959feec47e 100644 --- a/sources/platform/schedules.md +++ b/sources/platform/actors/running/schedules.md @@ -3,7 +3,7 @@ title: Schedules description: Learn how to automatically start your Actor and task runs and the basics of cron expressions. Set up and manage your schedules from Apify Console or via API. sidebar_position: 8 category: platform -slug: /schedules +slug: /actors/running/schedules --- **Learn how to automatically start your Actor and task runs and the basics of cron expressions. Set up and manage your schedules from Apify Console or via API.** @@ -34,7 +34,7 @@ Each schedule can be associated with a maximum of _10_ Actors and _10_ Actor tas ## Setting up a new schedule -Before setting up a new schedule, you should have the [Actor](./actors/index.mdx) or [task](./actors/running/tasks.md) you want to schedule prepared and tested. +Before setting up a new schedule, you should have the [Actor](../index.mdx) or [task](./tasks.md) you want to schedule prepared and tested. To schedule an Actor, you need to have run it at least once before. To run the Actor, navigate to the Actor's page through [Apify Console](https://console.apify.com/store), where you can configure and initiate the Actor's run with your preferred settings by clicking the **Start** button. After this initial run, you can then use Schedules to automate future runs. @@ -50,20 +50,20 @@ Click on the name (by default it is **My Schedule**), there you can change its n You can adjust how often your Actor or task runs using the [schedule setup tool](#schedule-setup). You can find it by clicking on the **Schedule setup** card. -![New schedule](./images/schedules-overview.png) +![New schedule](../../images/schedules-overview.png) Next, you'll need to give the schedule something to run. This is where the Actor or task you prepared earlier comes in. Click on the **Add** dropdown and select whether you want to schedule an Actor or task. -If you're scheduling an Actor run, you'll be able to specify the Actor's [input](./actors/running/input_and_output.md) and running options like [build](./actors/development/builds_and_runs/builds.md), timeout, [memory](./actors/running/usage_and_resources.md). +If you're scheduling an Actor run, you'll be able to specify the Actor's [input](./input_and_output.md) and running options like [build](../development/builds_and_runs/builds.md), timeout, [memory](./usage_and_resources.md). The **timeout** value is specified in seconds; a value of _0_ means there is no timeout, and the Actor runs until it finishes. If you don't provide an input, then the Actor's default input is used. If you provide an input with some fields missing, the missing fields are filled in with values from the default input. If input options are not provided, the default options values are used. -![Add Actor to schedule](./images/schedules-actor-input.png) +![Add Actor to schedule](../../images/schedules-actor-input.png) If you're scheduling a task, just select the task you prepared earlier using the drop-down. If you need to override the task's input, you can pass it as a JSON object in the **Input JSON overrides** field. -![Add task to schedule](./images/schedules-task-input.png) +![Add task to schedule](../../images/schedules-task-input.png) To add more Actors or tasks, just repeat the process. @@ -75,7 +75,7 @@ For integrations, you can also add a [webhook](/platform/integrations/webhooks) To create a new [schedule](/api/v2/schedules) using the Apify API, send a `POST` request to the [create schedule](/api/v2/schedules-post) endpoint. -You can find your [secret API token](./integrations/index.mdx) under the [Integrations](https://console.apify.com/account?tab=integrations) tab of your Apify account settings. +You can find your [secret API token](../../integrations/index.mdx) under the [Integrations](https://console.apify.com/account?tab=integrations) tab of your Apify account settings. :::caution API authentication recommendations When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL ([more info](/api/v2#authentication)). @@ -116,7 +116,7 @@ For more information, refer to the [schedules](/api/v2/schedule-get) section in The schedule setup tool uses [cron expressions](https://en.wikipedia.org/wiki/Cron#CRON_expression) to specify run times. If you're familiar with how to use them and need a specific run schedule, you can dive right in. If not, don't worry - the setup tool has a visual custom schedule builder that provides a similar level of control as cron expressions, though it's not quite as powerful. -![Schedule setup tool](./images/schedules-setup-tool.png) +![Schedule setup tool](../../images/schedules-setup-tool.png) The **Next runs** section shows when the next run will be, if you click on **Show more** button it will expand and show you the next five runs. You can use this live feedback to experiment until you find the correct configuration. @@ -128,7 +128,7 @@ The schedule setup tool allows you to control the schedule's notifications. All If you want to manage the notifications for your schedules in bulk, you can do this from the [Notifications](https://console.apify.com/settings/notifications) settings tab. As long as you have 15 schedules or less, you can manage their notifications all at once by clicking the **Manage notifications for specific schedules** button. -![Schedule bulk notifications](./images/schedules-bulk-notifications.png) +![Schedule bulk notifications](../../images/schedules-bulk-notifications.png) ## Cron expressions diff --git a/sources/platform/actors/running/store.md b/sources/platform/actors/running/store.md index 819179bd1f..53c9da5b93 100644 --- a/sources/platform/actors/running/store.md +++ b/sources/platform/actors/running/store.md @@ -199,7 +199,7 @@ Please, in such a case, do not hesitate to contact the Actor author or our suppo ### Pay per usage -When you use a pay per usage Actor, you are only charged for the platform usage that the runs of this Actor generate. [Platform usage](./usage_and_resources.md) includes components such as compute units, operations on [storages](/platform/storage), and usage of [residential proxies](/platform/proxy/residential-proxy) or [SERPs](/platform/proxy/google-serp-proxy). +When you use a pay per usage Actor, you are only charged for the platform usage that the runs of this Actor generate. [Platform usage](./usage_and_resources.md) includes components such as compute units, operations on [storages](/platform/actors/storage), and usage of [residential proxies](/platform/actors/proxy/residential-proxy) or [SERPs](/platform/actors/proxy/google-serp-proxy). ![Pay for usage Actor example](./images/store/pay_per_usage_actor_example.png) diff --git a/sources/platform/actors/running/tasks.md b/sources/platform/actors/running/tasks.md index 033fd175b1..916e88dd26 100644 --- a/sources/platform/actors/running/tasks.md +++ b/sources/platform/actors/running/tasks.md @@ -1,7 +1,7 @@ --- title: Actor tasks description: Create and save reusable configurations of Apify Actors tailored to specific use cases. -sidebar_position: 7.2 +sidebar_position: 6 slug: /actors/running/tasks sidebar_label: Tasks --- @@ -10,7 +10,7 @@ sidebar_label: Tasks --- -Actor tasks let you create multiple reusable configurations of a single Actor, adapted for specific use cases. For example, you can create one [_Web Scraper_](https://apify.com/apify/web-scraper) configuration (task) that scrapes the latest reviews from [IMDb](https://www.imdb.com/), another that scrapes nike.com for the latest sneakers, and a third that scrapes your competitor's e-shop. You can then use and reuse these configurations directly from [Apify Console](https://console.apify.com/actors/tasks), [Schedules](../../schedules.md), or [API](/api/v2/actor-task-runs-post). +Actor tasks let you create multiple reusable configurations of a single Actor, adapted for specific use cases. For example, you can create one [_Web Scraper_](https://apify.com/apify/web-scraper) configuration (task) that scrapes the latest reviews from [IMDb](https://www.imdb.com/), another that scrapes nike.com for the latest sneakers, and a third that scrapes your competitor's e-shop. You can then use and reuse these configurations directly from [Apify Console](https://console.apify.com/actors/tasks), [Schedules](./schedules.md), or [API](/api/v2/actor-task-runs-post). You can find all your tasks in the [Apify Console](https://console.apify.com/actors/tasks). @@ -46,11 +46,11 @@ Or using the **Start** button positioned following the input configuration. You can also run tasks using: -- [Schedules](../../schedules.md). +- [Schedules](./schedules.md). - Directly via the [Apify API](/api/v2/actor-task-runs-post). - The [JavaScript API client](/api/client/js/reference/class/TaskClient). - The [Python API client](/api/client/python/reference/class/TaskClient). ## Share -Like any other resource, you can share your Actor tasks with other Apify users via the [access rights](../../collaboration/index.md) system. +Like any other resource, you can share your Actor tasks with other Apify users via the [access rights](../../account/collaboration/access_rights.md) system. diff --git a/sources/platform/actors/running/usage_and_resources.md b/sources/platform/actors/running/usage_and_resources.md index 310819f7c4..e0a67fa0fe 100644 --- a/sources/platform/actors/running/usage_and_resources.md +++ b/sources/platform/actors/running/usage_and_resources.md @@ -1,7 +1,7 @@ --- title: Usage and resources description: Learn about your Actors' memory and processing power requirements, their relationship with Docker resources, minimum requirements for different use cases and its impact on the cost. -sidebar_position: 2 +sidebar_position: 4 slug: /actors/running/usage-and-resources --- diff --git a/sources/platform/storage/dataset.md b/sources/platform/actors/storage/dataset.md similarity index 86% rename from sources/platform/storage/dataset.md rename to sources/platform/actors/storage/dataset.md index b56d6008d9..6f908a2cf6 100644 --- a/sources/platform/storage/dataset.md +++ b/sources/platform/actors/storage/dataset.md @@ -1,9 +1,9 @@ --- title: Dataset description: Store and export web scraping, crawling or data processing job results. Learn how to access and manage datasets in Apify Console or via API. -sidebar_position: 9.2 +sidebar_position: 2 toc_max_heading_level: 4 -slug: /storage/dataset +slug: /actors/storage/dataset --- **Store and export web scraping, crawling or data processing job results. Learn how to access and manage datasets in Apify Console or via API.** @@ -18,7 +18,7 @@ Dataset storage enables you to sequentially save and retrieve data. A unique dat Typically, datasets comprise results from web scraping, crawling, and data processing jobs. You can visualize this data in a table, where each object is forming a row and its attributes are represented as columns. You have the option to export data in various formats, including JSON, CSV, XML, Excel, HTML Table, RSS or JSONL. > Named datasets are retained indefinitely. -> Unnamed datasets expire after 7 days unless otherwise specified. [Learn more](/platform/storage/usage#named-and-unnamed-storages) +> Unnamed datasets expire after 7 days unless otherwise specified. [Learn more](/platform/actors/storage/usage#named-and-unnamed-storages) Dataset storage is _append-only_ - data can only be added and cannot be modified or deleted once stored. @@ -43,7 +43,7 @@ To view or download a dataset: 2. Select the format & configure other options if desired in **Export dataset** section. 3. Click **Download**. -Utilize the **Actions** menu to modify the dataset's name, which also affects its [retention period](/platform/storage/usage#data-retention), and to adjust [access rights](../collaboration/index.md). The **API** button allows you to explore and test the dataset's [API endpoints](/api/v2/storage-datasets). +Utilize the **Actions** menu to modify the dataset's name, which also affects its [retention period](/platform/actors/storage/usage#data-retention), and to adjust [access rights](../../account/collaboration/access_rights.md). The **API** button allows you to explore and test the dataset's [API endpoints](/api/v2/storage-datasets). ![Datasets detail view](./images/datasets-detail.png) @@ -53,7 +53,7 @@ The [Apify API](/api/v2/storage-datasets) enables you programmatic access to you If you are accessing your datasets using the `username~store-name` [store ID format](./index.md), you will need to use your secret API token. You can find the token (and your user ID) on the [Integrations](https://console.apify.com/account#/integrations)tab of **Settings** page of your Apify account. -> When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL. ([More info](../integrations/programming/api.md#authentication)). +> When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL. ([More info](../../integrations/programming/api.md#authentication)). To retrieve a list of your datasets, send a GET request to the [Get list of datasets](/api/v2/datasets-get) endpoint. @@ -151,7 +151,7 @@ Check out the [Python API client documentation](/api/client/python/reference/cla #### JavaScript SDK -When working with a JavaScript [Actor](../actors/index.mdx), the [JavaScript SDK](/sdk/js/docs/guides/result-storage#dataset) is an essential tool, especially for dataset management. It simplifies the tasks of storing and retrieving data, seamlessly integrating with the Actor's workflow. Key features of the SDK include the ability to append data, retrieve what is stored, and manage dataset properties effectively. Central to this functionality is the [`Dataset`](/sdk/js/reference/class/Dataset) class. This class allows you to determine where your data is stored - locally or in the Apify cloud. To add data to your chosen datasets, use the [`pushData()`](/sdk/js/reference/class/Dataset#pushData) method. +When working with a JavaScript [Actor](../index.mdx), the [JavaScript SDK](/sdk/js/docs/guides/result-storage#dataset) is an essential tool, especially for dataset management. It simplifies the tasks of storing and retrieving data, seamlessly integrating with the Actor's workflow. Key features of the SDK include the ability to append data, retrieve what is stored, and manage dataset properties effectively. Central to this functionality is the [`Dataset`](/sdk/js/reference/class/Dataset) class. This class allows you to determine where your data is stored - locally or in the Apify cloud. To add data to your chosen datasets, use the [`pushData()`](/sdk/js/reference/class/Dataset#pushData) method. Additionally the SDK offers other methods like [`getData()`](/sdk/js/reference/class/Dataset#getData), [`map()`](/sdk/js/reference/class/Dataset#map), and [`reduce()`](/sdk/js/reference/class/Dataset#reduce). For practical applications of these methods, refer to the [example](/sdk/js/docs/examples/map-and-reduce) section. @@ -225,7 +225,7 @@ Check out the [JavaScript SDK documentation](/sdk/js/docs/guides/result-storage# #### Python SDK -For Python [Actors](../actors/index.mdx), the [Python SDK](/sdk/python/docs/concepts/storages#working-with-datasets) is essential. The dataset is represented by a [`Dataset`](/sdk/python/reference/class/Dataset) class. You can use this class to specify whether your data is stored locally or in the Apify cloud and push data to the datasets of your choice using the [`push_data()`](/sdk/python/reference/class/Dataset#push_data) method. For further data manipulation you could also use other methods such as [`get_data()`](/sdk/python/reference/class/Dataset#get_data), [`map()`](/sdk/python/reference/class/Dataset#map) and [`reduce()`](/sdk/python/reference/class/Dataset#reduce). +For Python [Actors](../index.mdx), the [Python SDK](/sdk/python/docs/concepts/storages#working-with-datasets) is essential. The dataset is represented by a [`Dataset`](/sdk/python/reference/class/Dataset) class. You can use this class to specify whether your data is stored locally or in the Apify cloud and push data to the datasets of your choice using the [`push_data()`](/sdk/python/reference/class/Dataset#push_data) method. For further data manipulation you could also use other methods such as [`get_data()`](/sdk/python/reference/class/Dataset#get_data), [`map()`](/sdk/python/reference/class/Dataset#map) and [`reduce()`](/sdk/python/reference/class/Dataset#reduce). For datasets stored locally, the data is located at the following path: @@ -380,15 +380,15 @@ By default, the whole result is wrapped in an `` element, while each pag ## Sharing -You can grant [access rights](../collaboration/index.md) to your dataset through the **Share** button under the **Actions** menu. For more details, check the [full list of permissions](../collaboration/list_of_permissions.md). +You can grant [access rights](../../account/collaboration/access_rights.md) to your dataset through the **Share** button under the **Actions** menu. For more details, check the [full list of permissions](../../account/collaboration/access_rights.md#permissions-reference). -You can also share datasets by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share datasets by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/account/collaboration/general-resource-access). -For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/account/collaboration/general-resource-access#pre-signed-urls). ### Sharing datasets between runs -You can access a dataset from any [Actor](../actors/index.mdx) or [task](../actors/running/tasks.md) run as long as you know its _name_ or _ID_. +You can access a dataset from any [Actor](../index.mdx) or [task](../running/tasks.md) run as long as you know its _name_ or _ID_. To access a dataset from another run using the [Apify SDK](/sdk), open it using the same method as you would with any other dataset. @@ -442,7 +442,7 @@ other_dataset_client = apify_client.dataset('jane-doe/old-dataset') The same applies for the [Apify API](#apify-api) - you can use [the same endpoints](#apify-api) as you would normally do. -See the [Storage overview](/platform/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. +See the [Storage overview](/platform/actors/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. ## Limits diff --git a/sources/platform/storage/images/datasets-app.png b/sources/platform/actors/storage/images/datasets-app.png similarity index 100% rename from sources/platform/storage/images/datasets-app.png rename to sources/platform/actors/storage/images/datasets-app.png diff --git a/sources/platform/storage/images/datasets-detail.png b/sources/platform/actors/storage/images/datasets-detail.png similarity index 100% rename from sources/platform/storage/images/datasets-detail.png rename to sources/platform/actors/storage/images/datasets-detail.png diff --git a/sources/platform/storage/images/find-store-id.png b/sources/platform/actors/storage/images/find-store-id.png similarity index 100% rename from sources/platform/storage/images/find-store-id.png rename to sources/platform/actors/storage/images/find-store-id.png diff --git a/sources/platform/storage/images/key-value-stores-app.png b/sources/platform/actors/storage/images/key-value-stores-app.png similarity index 100% rename from sources/platform/storage/images/key-value-stores-app.png rename to sources/platform/actors/storage/images/key-value-stores-app.png diff --git a/sources/platform/storage/images/key-value-stores-detail-header.png b/sources/platform/actors/storage/images/key-value-stores-detail-header.png similarity index 100% rename from sources/platform/storage/images/key-value-stores-detail-header.png rename to sources/platform/actors/storage/images/key-value-stores-detail-header.png diff --git a/sources/platform/storage/images/key-value-stores-detail-records.png b/sources/platform/actors/storage/images/key-value-stores-detail-records.png similarity index 100% rename from sources/platform/storage/images/key-value-stores-detail-records.png rename to sources/platform/actors/storage/images/key-value-stores-detail-records.png diff --git a/sources/platform/storage/images/overview-api.png b/sources/platform/actors/storage/images/overview-api.png similarity index 100% rename from sources/platform/storage/images/overview-api.png rename to sources/platform/actors/storage/images/overview-api.png diff --git a/sources/platform/storage/images/request-queue-app.png b/sources/platform/actors/storage/images/request-queue-app.png similarity index 100% rename from sources/platform/storage/images/request-queue-app.png rename to sources/platform/actors/storage/images/request-queue-app.png diff --git a/sources/platform/storage/images/request-queue-detail.png b/sources/platform/actors/storage/images/request-queue-detail.png similarity index 100% rename from sources/platform/storage/images/request-queue-detail.png rename to sources/platform/actors/storage/images/request-queue-detail.png diff --git a/sources/platform/storage/index.md b/sources/platform/actors/storage/index.md similarity index 88% rename from sources/platform/storage/index.md rename to sources/platform/actors/storage/index.md index 5682d4a8f7..4898289208 100644 --- a/sources/platform/storage/index.md +++ b/sources/platform/actors/storage/index.md @@ -1,9 +1,9 @@ --- title: Storage description: Store anything from images and key-value pairs to structured output data. Learn how to access and manage your stored data from the Apify platform or via API. -sidebar_position: 9 +sidebar_position: 4 category: platform -slug: /storage +slug: /actors/storage --- import Card from "@site/src/components/Card"; @@ -21,17 +21,17 @@ The Apify platform provides three types of storage accessible both within our [A diff --git a/sources/platform/storage/key_value_store.md b/sources/platform/actors/storage/key_value_store.md similarity index 80% rename from sources/platform/storage/key_value_store.md rename to sources/platform/actors/storage/key_value_store.md index 8d4bb85d6c..28cc3b20f8 100644 --- a/sources/platform/storage/key_value_store.md +++ b/sources/platform/actors/storage/key_value_store.md @@ -2,8 +2,8 @@ title: Key-value store description: Store anything from Actor or task run results, JSON documents, or images. Learn how to access and manage key-value stores from Apify Console or via API. toc_max_heading_level: 4 -sidebar_position: 9.3 -slug: /storage/key-value-store +sidebar_position: 3 +slug: /actors/storage/key-value-store --- **Store anything from Actor or task run results, JSON documents, or images. Learn how to access and manage key-value stores from Apify Console or via API.** @@ -20,7 +20,7 @@ Each Actor run is assigned its own key-value store when it is created. The store Key-value stores are mutable–you can both add entries and delete them. > Named key-value stores are retained indefinitely.
-> Unnamed key-value stores expire after 7 days unless otherwise specified.
> [Learn more](/platform/storage/usage#named-and-unnamed-storages) +> Unnamed key-value stores expire after 7 days unless otherwise specified.
> [Learn more](/platform/actors/storage/usage#named-and-unnamed-storages) ## Basic usage @@ -37,7 +37,7 @@ In [Apify Console](https://console.apify.com), you can view your key-value store ![Key-value stores in app](./images/key-value-stores-app.png) -To view a key-value store's content, click on its **Store ID**. Under the **Actions** menu, you can rename your store (which extends its [retention period](/platform/storage/usage#named-and-unnamed-storages)) and grant [access rights](../collaboration/index.md) using the **Share** button. +To view a key-value store's content, click on its **Store ID**. Under the **Actions** menu, you can rename your store (which extends its [retention period](/platform/actors/storage/usage#named-and-unnamed-storages)) and grant [access rights](../../account/collaboration/access_rights.md) using the **Share** button. Click on the **API** button to view and test a store's [API endpoints](/api/v2/storage-key-value-stores). ![Key-value stores detail](./images/key-value-stores-detail-header.png) @@ -60,7 +60,7 @@ If you are accessing your datasets using the `username~store-name` [store ID for :::tip Authentication -When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL. For more information, refer to the [API integration](../integrations/programming/api.md#authentication) documentation. +When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL. For more information, refer to the [API integration](../../integrations/programming/api.md#authentication) documentation. ::: @@ -141,11 +141,11 @@ Check out the [Python API client documentation](/api/client/python/reference/cla #### JavaScript SDK -When working with a JavaScript [Actor](../actors/index.mdx), the [JavaScript SDK](/sdk/js/docs/guides/result-storage#key-value-store) is an essential tool, especially for key-value store management. The primary class for this purpose is the [`KeyValueStore`](/sdk/js/reference/class/KeyValueStore). This class allows you to decide whether your data will be stored locally or in the Apify cloud. For data manipulation, it offers the [`getValue()`](/sdk/js/reference/class/KeyValueStore#getValue) and [`setValue()`](/sdk/js/reference/class/KeyValueStore#setValue) methods to retrieve and assign values, respectively. +When working with a JavaScript [Actor](../index.mdx), the [JavaScript SDK](/sdk/js/docs/guides/result-storage#key-value-store) is an essential tool, especially for key-value store management. The primary class for this purpose is the [`KeyValueStore`](/sdk/js/reference/class/KeyValueStore). This class allows you to decide whether your data will be stored locally or in the Apify cloud. For data manipulation, it offers the [`getValue()`](/sdk/js/reference/class/KeyValueStore#getValue) and [`setValue()`](/sdk/js/reference/class/KeyValueStore#setValue) methods to retrieve and assign values, respectively. Additionally, you can iterate over the keys in your store using the [`forEachKey()`](/sdk/js/reference/class/KeyValueStore#forEachKey) method. -Every Actor run is linked to a default key-value store that is automatically created for that specific run. If you're running your Actors and opt to store data locally, you can easily supply the [input](../actors/running/input_and_output.md) by placing an _INPUT.json_ file in the corresponding directory of the default key-value store. This method ensures that your Actor has all the necessary data readily available for its execution. +Every Actor run is linked to a default key-value store that is automatically created for that specific run. If you're running your Actors and opt to store data locally, you can easily supply the [input](../running/input_and_output.md) by placing an _INPUT.json_ file in the corresponding directory of the default key-value store. This method ensures that your Actor has all the necessary data readily available for its execution. You can find _INPUT.json_ and other key-value store files in the location below. @@ -201,15 +201,15 @@ await Actor.setValue('OUTPUT', imageBuffer, { contentType: 'image/jpeg' }); await Actor.exit(); ``` -The `Actor.getInput()` method is not only a shortcut to `Actor.getValue('INPUT')`; it is also compatible with [`Actor.metamorph()`](../actors/development/programming_interface/metamorph.md). This is because a metamorphed Actor run's input is stored in the _INPUT-METAMORPH-1_ key instead of _INPUT_, which hosts the original input. +The `Actor.getInput()` method is not only a shortcut to `Actor.getValue('INPUT')`; it is also compatible with [`Actor.metamorph()`](../development/programming_interface/metamorph.md). This is because a metamorphed Actor run's input is stored in the _INPUT-METAMORPH-1_ key instead of _INPUT_, which hosts the original input. Check out the [JavaScript SDK documentation](/sdk/js/docs/guides/result-storage#key-value-store) and the `KeyValueStore` class's [API reference](/sdk/js/reference/class/KeyValueStore) for details on managing your key-value stores with the JavaScript SDK. #### Python SDK -For Python [Actor](../actors/index.mdx), the [Python SDK](/sdk/python/docs/concepts/storages#working-with-key-value-stores) is essential. The key-value store is represented by a [`KeyValueStore`](/sdk/python/reference/class/KeyValueStore) class. You can use this class to specify whether your data is stored locally or in the Apify cloud. For further data manipulation it offers [`get_value()`](/sdk/python/reference/class/KeyValueStore#get_value) and [`set_value()`](/sdk/python/reference/class/KeyValueStore#set_value) methods to retrieve and assign values, respectively. +For Python [Actor](../index.mdx), the [Python SDK](/sdk/python/docs/concepts/storages#working-with-key-value-stores) is essential. The key-value store is represented by a [`KeyValueStore`](/sdk/python/reference/class/KeyValueStore) class. You can use this class to specify whether your data is stored locally or in the Apify cloud. For further data manipulation it offers [`get_value()`](/sdk/python/reference/class/KeyValueStore#get_value) and [`set_value()`](/sdk/python/reference/class/KeyValueStore#set_value) methods to retrieve and assign values, respectively. -Every Actor run is linked to a default key-value store that is automatically created for that specific run. If you're running your Actors and opt to store data locally, you can easily supply the [input](../actors/running/input_and_output.md) by placing an _INPUT.json_ file in the corresponding directory of the default key-value store. This method ensures that your Actor has all the necessary data readily available for its execution. +Every Actor run is linked to a default key-value store that is automatically created for that specific run. If you're running your Actors and opt to store data locally, you can easily supply the [input](../running/input_and_output.md) by placing an _INPUT.json_ file in the corresponding directory of the default key-value store. This method ensures that your Actor has all the necessary data readily available for its execution. You can find _INPUT.json_ and other key-value store files in the location below. @@ -253,7 +253,7 @@ async def main(): await Actor.set_value(key='OUTPUT', value=image_buffer, content_type='image/jpeg') ``` -The `Actor.get_input()` method is not only a shortcut to `Actor.get_value('INPUT')`; it is also compatible with [`Actor.metamorph()`](../actors/development/programming_interface/metamorph.md). This is because a metamorphed Actor run's input is stored in the _INPUT-METAMORPH-1_ key instead of _INPUT_, which hosts the original input. +The `Actor.get_input()` method is not only a shortcut to `Actor.get_value('INPUT')`; it is also compatible with [`Actor.metamorph()`](../development/programming_interface/metamorph.md). This is because a metamorphed Actor run's input is stored in the _INPUT-METAMORPH-1_ key instead of _INPUT_, which hosts the original input. Check out the [Python SDK documentation](/sdk/python/docs/concepts/storages#working-with-key-value-stores) and the `KeyValueStore` class's [API reference](/sdk/python/reference/class/KeyValueStore) for details on managing your key-value stores with the Python SDK. @@ -267,15 +267,15 @@ _Using the [JavaScript SDK](/sdk/js/reference/class/KeyValueStore#setValue) or o ## Sharing -You can grant [access rights](../collaboration/index.md) to your key-value store through the **Share** button under the **Actions** menu. For more details check the [full list of permissions](../collaboration/list_of_permissions.md). +You can grant [access rights](../../account/collaboration/access_rights.md) to your key-value store through the **Share** button under the **Actions** menu. For more details check the [full list of permissions](../../account/collaboration/access_rights.md#permissions-reference). -You can also share key-value stores by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share key-value stores by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/account/collaboration/general-resource-access). -For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/account/collaboration/general-resource-access#pre-signed-urls). ### Sharing key-value stores between runs -You can access a key-value store from any [Actor](../actors/index.mdx) or [task](../actors/running/tasks.md) run as long as you know its _name_ or _ID_. +You can access a key-value store from any [Actor](../index.mdx) or [task](../running/tasks.md) run as long as you know its _name_ or _ID_. To access a key-value store from another run using the [Apify SDK](/sdk), open it using the same method as you would do with any other store. @@ -329,7 +329,7 @@ other_store_client = apify_client.key_value_store('jane-doe/old-store') The same applies for the [Apify API](#apify-api) - you can use [the same endpoints](#apify-api) as you would normally do. -Check out the [Storage overview](/platform/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. +Check out the [Storage overview](/platform/actors/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. ## Data consistency diff --git a/sources/platform/storage/request_queue.md b/sources/platform/actors/storage/request_queue.md similarity index 90% rename from sources/platform/storage/request_queue.md rename to sources/platform/actors/storage/request_queue.md index 32c0fa87b4..bbb844b10f 100644 --- a/sources/platform/storage/request_queue.md +++ b/sources/platform/actors/storage/request_queue.md @@ -2,8 +2,8 @@ title: Request queue description: Queue URLs for an Actor to visit in its run. Learn how to share your queues between Actor runs. Access and manage request queues from Apify Console or via API. toc_max_heading_level: 4 -sidebar_position: 9.4 -slug: /storage/request-queue +sidebar_position: 4 +slug: /actors/storage/request-queue --- **Queue URLs for an Actor to visit in its run. Learn how to share your queues between Actor runs. Access and manage request queues from Apify Console or via API.** @@ -18,7 +18,7 @@ Request queues enable you to enqueue and retrieve requests such as URLs with an The storage system for request queues accommodates both breadth-first and depth-first crawling strategies, along with the inclusion of custom data attributes. This system enables you to check if certain URLs have already been encountered, add new URLs to the queue, and retrieve the next set of URLs for processing. > Named request queues are retained indefinitely.
-> Unnamed request queues expire after 7 days unless otherwise specified.
> [Learn more](/platform/storage/usage#named-and-unnamed-storages) +> Unnamed request queues expire after 7 days unless otherwise specified.
> [Learn more](/platform/actors/storage/usage#named-and-unnamed-storages) ## Basic usage @@ -37,7 +37,7 @@ In the [Apify Console](https://console.apify.com), you can view your request que To view a request queue, click on its **Queue ID**. Under the **Actions** menu, you can rename your queue's name (and, in turn, its -[retention period](/platform/storage/usage#named-and-unnamed-storages)) and [access rights](../collaboration/index.md) using the **Share** button. +[retention period](/platform/actors/storage/usage#named-and-unnamed-storages)) and [access rights](../../account/collaboration/access_rights.md) using the **Share** button. Click on the **API** button to view and test a queue's [API endpoints](/api/v2/storage-request-queues). ![Request queues detail](./images/request-queue-detail.png) @@ -48,7 +48,7 @@ The [Apify API](/api/v2/storage-request-queues) allows you programmatic access t If you are accessing your datasets using the `username~store-name` [store ID format](./index.md), you will need to use your secret API token. You can find the token (and your user ID) on the [Integrations](https://console.apify.com/account#/integrations) page of your Apify account. -> When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL. ([More info](../integrations/programming/api.md#authentication)). +> When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL. ([More info](../../integrations/programming/api.md#authentication)). To get a list of your request queues, send a GET request to the [Get list of request queues](/api/v2/request-queues-get) endpoint. @@ -141,9 +141,9 @@ Check out the [Python API client documentation](/api/client/python/reference/cla #### JavaScript SDK -When working with a JavaScript [Actor](../actors/index.mdx), the [JavaScript SDK](/sdk/js/docs/guides/request-storage#request-queue) is an essential tool, especially for request queue management. The primary class for this purpose is the [`RequestQueue`](/sdk/js/reference/class/RequestQueue) class. Use this class to decide whether your data is stored locally or in the Apify cloud. +When working with a JavaScript [Actor](../index.mdx), the [JavaScript SDK](/sdk/js/docs/guides/request-storage#request-queue) is an essential tool, especially for request queue management. The primary class for this purpose is the [`RequestQueue`](/sdk/js/reference/class/RequestQueue) class. Use this class to decide whether your data is stored locally or in the Apify cloud. -If you are building a JavaScript [Actor](../actors/index.mdx), you will be using the [JavaScript SDK](/sdk/js/docs/guides/request-storage#request-queue). The request queue is represented by a [`RequestQueue`](/sdk/js/reference/class/RequestQueue) class. You can use the class to specify whether your data is stored locally or in the Apify cloud and [enqueue new URLs](/sdk/js/reference/class/RequestQueue#addRequests). +If you are building a JavaScript [Actor](../index.mdx), you will be using the [JavaScript SDK](/sdk/js/docs/guides/request-storage#request-queue). The request queue is represented by a [`RequestQueue`](/sdk/js/reference/class/RequestQueue) class. You can use the class to specify whether your data is stored locally or in the Apify cloud and [enqueue new URLs](/sdk/js/reference/class/RequestQueue#addRequests). Every Actor run is automatically linked with a default request queue, initiated upon adding the first request. This queue is primarily utilized for storing URLs to be crawled during the particular Actor run, though its use is not mandatory. For enhanced flexibility, you can establish named queues. These named queues offer the advantage of being shareable across different Actors or various Actor runs, facilitating a more interconnected and efficient process. @@ -214,7 +214,7 @@ Check out the [JavaScript SDK documentation](/sdk/js/docs/guides/request-storage #### Python SDK -For Python [Actor](../actors/index.mdx) development, the [Python SDK](/sdk/python/docs/concepts/storages#working-with-request-queues) the in essential. The request queue is represented by [`RequestQueue`](/sdk/python/reference/class/RequestQueue) class. Utilize this class to determine whether your data is stored locally or in the Apify cloud. For managing your data, it provides the capability to [enqueue new URLs](/sdk/python/reference/class/RequestQueue#add_requests), facilitating seamless integration and operation within your Actor. +For Python [Actor](../index.mdx) development, the [Python SDK](/sdk/python/docs/concepts/storages#working-with-request-queues) the in essential. The request queue is represented by [`RequestQueue`](/sdk/python/reference/class/RequestQueue) class. Utilize this class to determine whether your data is stored locally or in the Apify cloud. For managing your data, it provides the capability to [enqueue new URLs](/sdk/python/reference/class/RequestQueue#add_requests), facilitating seamless integration and operation within your Actor. Every Actor run is automatically connected to a default request queue, established specifically for that run upon the addition of the first request. If you're operating your Actors and choose to utilize this queue, it typically serves to store URLs for crawling in the respective Actor run, though its use is not mandatory. To extend functionality, you have the option to create named queue, which offer the flexibility to be shared among different Actors or across multiple Actor runs. @@ -556,15 +556,15 @@ A detailed tutorial on how to process one request queue with multiple Actor runs ## Sharing -You can grant [access rights](../collaboration/index.md) to your request queue through the **Share** button under the **Actions** menu. For more details check the [full list of permissions](../collaboration/list_of_permissions.md). +You can grant [access rights](../../account/collaboration/access_rights.md) to your request queue through the **Share** button under the **Actions** menu. For more details check the [full list of permissions](../../account/collaboration/access_rights.md#permissions-reference). -You can also share request queues by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share request queues by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/account/collaboration/general-resource-access). -For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/account/collaboration/general-resource-access#pre-signed-urls). ### Sharing request queues between runs -You can access a request queue from any [Actor](../actors/index.mdx) or [task](../actors/running/tasks.md) run as long as you know its _name_ or _ID_. +You can access a request queue from any [Actor](../index.mdx) or [task](../running/tasks.md) run as long as you know its _name_ or _ID_. To access a request queue from another run using the [Apify SDK](/sdk), open it using the same method like you would do with any other request queue. @@ -618,7 +618,7 @@ other_queue_client = apify_client.request_queue('jane-doe/old-queue') The same applies for the [Apify API](#apify-api) - you can use [the same endpoints](#apify-api) as you would normally do. -Check out the [Storage overview](/platform/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. +Check out the [Storage overview](/platform/actors/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. ## Limits diff --git a/sources/platform/storage/usage.md b/sources/platform/actors/storage/usage.md similarity index 92% rename from sources/platform/storage/usage.md rename to sources/platform/actors/storage/usage.md index ac55550620..6dc5b57a37 100644 --- a/sources/platform/storage/usage.md +++ b/sources/platform/actors/storage/usage.md @@ -1,9 +1,9 @@ --- title: Storage usage description: Learn how to effectively use Apify's storage options. Understand key aspects of data retention, rate limiting, and secure sharing. -sidebar_position: 9.1 +sidebar_position: 1 category: platform -slug: /storage/usage +slug: /actors/storage/usage --- import StoragePricingCalculator from "@site/src/components/StoragePricingCalculator"; @@ -16,20 +16,20 @@ import StoragePricingCalculator from "@site/src/components/StoragePricingCalcula [Dataset](./dataset.md) storage allows you to store a series of data objects, such as results from web scraping, crawling, or data processing jobs. You can export your datasets in JSON, CSV, XML, RSS, Excel, or HTML formats. -![Dataset graphic](../images/datasets-overview.png) +![Dataset graphic](../../images/datasets-overview.png) ## Key-value store The [key-value store](./key_value_store.md) is ideal for saving data records such as files, screenshots of web pages, and PDFs or for persisting your Actor's state. The records are accessible under a unique name and can be written and read quickly. -![Key-value store graphic](../images/key-value-overview.svg) +![Key-value store graphic](../../images/key-value-overview.svg) ## Request queue [Request queues](./request_queue.md) allow you to dynamically maintain a queue of URLs of web pages. You can use this when recursively crawling websites: you start from initial URLs and add new links as they are found while skipping duplicates. -![Request queue graphic](../images/request-queue-overview.svg) +![Request queue graphic](../../images/request-queue-overview.svg) ## Basic usage @@ -160,11 +160,11 @@ For example, storage names `janedoe~my-storage-1` and `janedoe~web-scrape-result ## Sharing -You can grant [access rights](../collaboration/index.md) to other Apify users to view or modify your storages. Check the [full list of permissions](../collaboration/list_of_permissions.md). +You can grant [access rights](../../account/collaboration/access_rights.md) to other Apify users to view or modify your storages. Check the [full list of permissions](../../account/collaboration/access_rights.md#permissions-reference). -You can also share storages by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share storages by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/account/collaboration/general-resource-access). -For one-off sharing when access is restricted, generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing when access is restricted, generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/account/collaboration/general-resource-access#pre-signed-urls). :::tip Accessing restricted storage resources via API @@ -174,7 +174,7 @@ If your storage resource is set to _restricted_, all API calls must include a va ### Sharing storages between runs -Storage can be accessed from any [Actor](../actors/index.mdx) or [task](../actors/running/tasks.md) run, provided you have its _name_ or _ID_. You can access and manage storages from other runs using the same methods or endpoints as with storages from your current run. +Storage can be accessed from any [Actor](../index.mdx) or [task](../running/tasks.md) run, provided you have its _name_ or _ID_. You can access and manage storages from other runs using the same methods or endpoints as with storages from your current run. [Datasets](./dataset.md) and [key-value stores](./key_value_store.md) support concurrent use by multiple Actors. Thus, several Actors or tasks can simultaneously write data to a single dataset or key-value store. Similarly, multiple runs can read data from datasets and key-value stores at the same time. @@ -186,7 +186,7 @@ Storage can be accessed from any [Actor](../actors/index.mdx) or [task](../actor :::info Accessing restricted storage resources between runs If a storage resource access is set to **Restricted**,the run from which it's accessed must have explicit access to it. -Learn how restricted access works in [General resource access](/platform/collaboration/general-resource-access). +Learn how restricted access works in [General resource access](/platform/account/collaboration/general-resource-access). ::: diff --git a/sources/platform/collaboration/access_rights.md b/sources/platform/collaboration/access_rights.md deleted file mode 100644 index 219c9b43cd..0000000000 --- a/sources/platform/collaboration/access_rights.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Access rights -description: Manage permissions for your private resources such as Actors, Actor runs, and storages. Allow other users to read, run, modify, or build new versions. -sidebar_position: 12 -category: platform -slug: /collaboration/access-rights ---- - -**Manage permissions for your private resources such as Actors, Actor runs, and storages. Allow other users to read, run, modify, or build new versions.** - ---- - -You can easily and securely share your own resources - Actors, tasks, key-value stores, datasets, and request queues - with other users by using a [granular](https://www.google.com/search?q=define+granular+permissions) permissions system. This enables you, for example, to let your colleague run an [Actor](../actors/index.mdx) or view a [dataset](../storage/dataset.md) but not modify it. - -You can also grant permission to update an Actor and build a new version. -[Storages](../storage/index.md) (key-value stores, request queues, and datasets) are sharable in the same way as a **read** permission or a combination of both **read** and **write** permissions. - -To share an Actor, task, key-value store, request queue, or dataset, click on the **Actions** button in the top-right corner and select **Share**. You can add a collaborator by using their **user ID**, **email**, or **username**. Once you have added the collaborator, you can configure their permissions. - -![Access rights configuration](./images/access-rights/access-rights.png) diff --git a/sources/platform/collaboration/index.md b/sources/platform/collaboration/index.md deleted file mode 100644 index 18aad02362..0000000000 --- a/sources/platform/collaboration/index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Collaboration -description: Learn how to collaborate with other users and manage permissions for organizations or private resources such as Actors, Actor runs, and storages. -sidebar_position: 12 -category: platform -slug: /collaboration ---- - -**Learn how to collaborate with other users and manage permissions for organizations or private resources such as Actors, Actor runs, and storages.** - ---- -Apify was built from the ground up as a collaborative platform. Whether you’re publishing your Actor in Apify Store or sharing a dataset with a teammate, collaboration is deeply integrated into how Apify works. You can share your resources (like Actors, runs, or storages) with others, manage permissions, or invite collaborators to your organization. By default, each system resource you create is only available to you, the owner. However, you can grant access to other users, making it easy to collaborate effectively and securely. - -While most resources can be shared by assigning permissions (see [Access Rights](./access_rights.md)), some resources can also be shared simply by using their unique links or IDs. There are two types of resources in terms of sharing: - -- _Resources that require explicit access by default:_ - - [Actors](../actors/running/index.md), [tasks](../actors/running/tasks.md) - - Can be shared only by inviting collaborators using [Access Rights](./access_rights.md)) or using [Organization Accounts](./organization_account/index.md) -- _Resources supporting both explicit access and link sharing:_ - - Actor runs, Actor builds and storage resources (datasets, key-value stores, request queues) - - Can be shared by inviting collaborators or simply by sharing a unique direct link - -You can control access to your resources in four ways: - - - - - - - - - - - - - - - - - - -
Access rightsEnables you to grant access to another user for a certain resource you own. This way, you can share results with your client, or two engineers can collaborate on developing one Actor.
Share resources by linkCertain resources (runs, builds and storages) can by shared just by their link. Anyone with their ID is able to access them. This is configurable via General resource access
Organization accountApify's organization account allows multiple engineers to collaborate on team projects with role-specific access permissions.
Publishing in Apify StoreAnother way to share your Actor with other users is to publish it in Apify Store. When publishing your Actor, you can make it a Paid Actor and get paid by the users benefiting from your tool. For more information, read the publishing and monetization section.
diff --git a/sources/platform/get-started/automate_workflows.md b/sources/platform/get-started/automate_workflows.md new file mode 100644 index 0000000000..7edc847f73 --- /dev/null +++ b/sources/platform/get-started/automate_workflows.md @@ -0,0 +1,30 @@ +--- +title: Automate workflows +description: Connect the Apify platform with Zapier, Make, n8n, and other automation tools to build powerful workflows. +sidebar_position: 4 +slug: /get-started/automate-workflows +--- + + + +# Automate workflows + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. This page will show you how to connect Apify Actors to your existing automation workflows. + +## Connect with Zapier + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. + +## Connect with Make + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + +## Connect with n8n + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +## Next steps + +- Explore all [workflow automation integrations](/platform/integrations#workflow-automation) for detailed setup guides. +- Learn how to use [schedules](/platform/actors/running/schedules) to run Actors on a recurring basis. +- Set up [webhooks](/platform/integrations/webhooks) for event-driven automation. diff --git a/sources/platform/actors/development/quick-start/build_with_ai.md b/sources/platform/get-started/build-an-actor/build_with_ai.md similarity index 99% rename from sources/platform/actors/development/quick-start/build_with_ai.md rename to sources/platform/get-started/build-an-actor/build_with_ai.md index 3462c6b58b..96bc74e2d7 100644 --- a/sources/platform/actors/development/quick-start/build_with_ai.md +++ b/sources/platform/get-started/build-an-actor/build_with_ai.md @@ -3,7 +3,7 @@ title: Build Actors with AI sidebar_position: 3 sidebar_label: Build with AI description: Learn how to build new Actors or improve existing ones using AI code generation and vibe coding tools. -slug: /actors/development/quick-start/build-with-ai +slug: /get-started/build-an-actor/build-with-ai toc_max_heading_level: 4 --- diff --git a/sources/platform/actors/development/quick-start/images/actor-build.png b/sources/platform/get-started/build-an-actor/images/actor-build.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-build.png rename to sources/platform/get-started/build-an-actor/images/actor-build.png diff --git a/sources/platform/actors/development/quick-start/images/actor-create-button.png b/sources/platform/get-started/build-an-actor/images/actor-create-button.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-create-button.png rename to sources/platform/get-started/build-an-actor/images/actor-create-button.png diff --git a/sources/platform/actors/development/quick-start/images/actor-create-templates.png b/sources/platform/get-started/build-an-actor/images/actor-create-templates.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-create-templates.png rename to sources/platform/get-started/build-an-actor/images/actor-create-templates.png diff --git a/sources/platform/actors/development/quick-start/images/actor-create.gif b/sources/platform/get-started/build-an-actor/images/actor-create.gif similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-create.gif rename to sources/platform/get-started/build-an-actor/images/actor-create.gif diff --git a/sources/platform/actors/development/quick-start/images/actor-input.png b/sources/platform/get-started/build-an-actor/images/actor-input.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-input.png rename to sources/platform/get-started/build-an-actor/images/actor-input.png diff --git a/sources/platform/actors/development/quick-start/images/actor-local-code.png b/sources/platform/get-started/build-an-actor/images/actor-local-code.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-local-code.png rename to sources/platform/get-started/build-an-actor/images/actor-local-code.png diff --git a/sources/platform/actors/development/quick-start/images/actor-local-run.png b/sources/platform/get-started/build-an-actor/images/actor-local-run.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-local-run.png rename to sources/platform/get-started/build-an-actor/images/actor-local-run.png diff --git a/sources/platform/actors/development/quick-start/images/actor-pull.png b/sources/platform/get-started/build-an-actor/images/actor-pull.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-pull.png rename to sources/platform/get-started/build-an-actor/images/actor-pull.png diff --git a/sources/platform/actors/development/quick-start/images/actor-run.png b/sources/platform/get-started/build-an-actor/images/actor-run.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-run.png rename to sources/platform/get-started/build-an-actor/images/actor-run.png diff --git a/sources/platform/actors/development/quick-start/images/actor-source-code.png b/sources/platform/get-started/build-an-actor/images/actor-source-code.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-source-code.png rename to sources/platform/get-started/build-an-actor/images/actor-source-code.png diff --git a/sources/platform/actors/development/quick-start/images/actor-templates.png b/sources/platform/get-started/build-an-actor/images/actor-templates.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-templates.png rename to sources/platform/get-started/build-an-actor/images/actor-templates.png diff --git a/sources/platform/actors/development/quick-start/images/claude.png b/sources/platform/get-started/build-an-actor/images/claude.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/claude.png rename to sources/platform/get-started/build-an-actor/images/claude.png diff --git a/sources/platform/actors/development/quick-start/images/copy-for-ai.png b/sources/platform/get-started/build-an-actor/images/copy-for-ai.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/copy-for-ai.png rename to sources/platform/get-started/build-an-actor/images/copy-for-ai.png diff --git a/sources/platform/actors/development/quick-start/images/create-actor.png b/sources/platform/get-started/build-an-actor/images/create-actor.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/create-actor.png rename to sources/platform/get-started/build-an-actor/images/create-actor.png diff --git a/sources/platform/actors/development/quick-start/images/cursor.png b/sources/platform/get-started/build-an-actor/images/cursor.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/cursor.png rename to sources/platform/get-started/build-an-actor/images/cursor.png diff --git a/sources/platform/actors/development/quick-start/images/github-copilot.png b/sources/platform/get-started/build-an-actor/images/github-copilot.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/github-copilot.png rename to sources/platform/get-started/build-an-actor/images/github-copilot.png diff --git a/sources/platform/actors/development/quick-start/images/python-templates.png b/sources/platform/get-started/build-an-actor/images/python-templates.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/python-templates.png rename to sources/platform/get-started/build-an-actor/images/python-templates.png diff --git a/sources/platform/actors/development/quick-start/images/windsurf.png b/sources/platform/get-started/build-an-actor/images/windsurf.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/windsurf.png rename to sources/platform/get-started/build-an-actor/images/windsurf.png diff --git a/sources/platform/actors/development/quick-start/index.mdx b/sources/platform/get-started/build-an-actor/index.mdx similarity index 84% rename from sources/platform/actors/development/quick-start/index.mdx rename to sources/platform/get-started/build-an-actor/index.mdx index fbc99ffc29..473061d58c 100644 --- a/sources/platform/actors/development/quick-start/index.mdx +++ b/sources/platform/get-started/build-an-actor/index.mdx @@ -1,9 +1,9 @@ --- -title: Actor development quick start -sidebar_label: Quick start -sidebar_position: 0.5 +title: Build an Actor +sidebar_label: Build an Actor +sidebar_position: 1 description: Create your first Actor using the Apify Web IDE or locally in your IDE. -slug: /actors/development/quick-start +slug: /get-started/build-an-actor --- import Card from "@site/src/components/Card"; @@ -37,16 +37,16 @@ You can choose from three main ways to build your Actor, depending on your prefe diff --git a/sources/platform/actors/development/quick-start/start_locally.md b/sources/platform/get-started/build-an-actor/start_locally.md similarity index 93% rename from sources/platform/actors/development/quick-start/start_locally.md rename to sources/platform/get-started/build-an-actor/start_locally.md index a107d14db2..72b55f2723 100644 --- a/sources/platform/actors/development/quick-start/start_locally.md +++ b/sources/platform/get-started/build-an-actor/start_locally.md @@ -3,7 +3,7 @@ title: Local Actor development sidebar_label: Local development sidebar_position: 1 description: Create your first Actor locally on your machine, deploy it to the Apify platform, and run it in the cloud. -slug: /actors/development/quick-start/locally +slug: /get-started/build-an-actor/locally --- **Create your first Actor locally on your machine, deploy it to the Apify platform, and run it in the cloud.** @@ -98,11 +98,11 @@ This JSON Schema validates input automatically (no error handling needed), power ::: -Find more info in the [Input schema](/platform/actors/development/actor-definition/input-schema) documentation. +Find more info in the [Input schema](/platform/actors/development/input-output-schemas/input-schema) documentation. #### Actor's `storage` -The Actor system provides two storage types for files and results: [key-value](/platform/storage/key-value-store) store and [dataset](/platform/storage/dataset). +The Actor system provides two storage types for files and results: [key-value](/platform/actors/storage/key-value-store) store and [dataset](/platform/actors/storage/dataset). ##### Key-value store @@ -116,8 +116,8 @@ The dataset stores a series of data objects from web scraping, crawling, or data You define the Actor output using the Output schema files: -- [Dataset Schema Specification](/platform/actors/development/actor-definition/dataset-schema) -- [Key-value Store Schema Specification](/platform/actors/development/actor-definition/key-value-store-schema) +- [Dataset Schema Specification](/platform/actors/development/input-output-schemas/dataset-schema) +- [Key-value Store Schema Specification](/platform/actors/development/input-output-schemas/key-value-store-schema) The system uses this to generate an immutable JSON file that tells users where to find the Actor's results. diff --git a/sources/platform/actors/development/quick-start/start_web_ide.md b/sources/platform/get-started/build-an-actor/start_web_ide.md similarity index 99% rename from sources/platform/actors/development/quick-start/start_web_ide.md rename to sources/platform/get-started/build-an-actor/start_web_ide.md index 6f22461e52..ba043d6ef6 100644 --- a/sources/platform/actors/development/quick-start/start_web_ide.md +++ b/sources/platform/get-started/build-an-actor/start_web_ide.md @@ -2,7 +2,7 @@ title: Web IDE sidebar_position: 2 description: Create your first Actor using the web IDE in Apify Console. -slug: /actors/development/quick-start/web-ide +slug: /get-started/build-an-actor/web-ide --- import Tabs from '@theme/Tabs'; diff --git a/sources/platform/get-started/choose_and_run_actor.md b/sources/platform/get-started/choose_and_run_actor.md new file mode 100644 index 0000000000..c553d8991c --- /dev/null +++ b/sources/platform/get-started/choose_and_run_actor.md @@ -0,0 +1,30 @@ +--- +title: Choose and run an Actor +description: Find the right Actor in the Apify Store and run it to scrape data, automate tasks, or power your AI agents. +sidebar_position: 1 +slug: /get-started/choose-and-run-actor +--- + + + +# Choose and run an Actor + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. This page will guide you through finding and running your first Actor on the Apify platform. + +## Find an Actor in the Apify Store + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. + +## Configure Actor input + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + +## Run the Actor and get results + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +## Next steps + +- [Build your own Actor](/platform/get-started/build-an-actor) to create custom scraping and automation tools. +- Learn about [Actor input and output](/platform/actors/running/input-and-output) for advanced configuration. +- Browse the [Apify Store](/platform/actors/running/actors-in-store) to explore available Actors. diff --git a/sources/platform/get-started/connect_ai_agents.md b/sources/platform/get-started/connect_ai_agents.md new file mode 100644 index 0000000000..6b69b8002b --- /dev/null +++ b/sources/platform/get-started/connect_ai_agents.md @@ -0,0 +1,29 @@ +--- +title: Connect AI agents +description: Connect your AI agents to the Apify platform using MCP, LangChain, CrewAI, and other AI frameworks. +sidebar_position: 3 +slug: /get-started/connect-ai-agents +--- + + + +# Connect AI agents + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. This page will show you how to connect AI agents to the Apify platform to give them access to web data. + +## Use Apify with MCP + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. + +## Use Apify with LangChain + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + +## Use Apify with other frameworks + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +## Next steps + +- Explore all [AI framework integrations](/platform/integrations#ai-frameworks) for detailed setup guides. +- Learn about the [Apify API](/api/v2) for programmatic access. diff --git a/sources/platform/get-started/index.mdx b/sources/platform/get-started/index.mdx new file mode 100644 index 0000000000..40cdaee6de --- /dev/null +++ b/sources/platform/get-started/index.mdx @@ -0,0 +1,30 @@ +--- +title: Get started +description: Get started with the Apify platform - build Actors, scrape the web, and automate workflows. +sidebar_label: Overview +sidebar_position: 0 +slug: /get-started +--- + +import Card from "@site/src/components/Card"; +import CardGrid from "@site/src/components/CardGrid"; + +Apify is all about Actors - a new way to package your code to make it easy to share, integrate, and build upon. An Actor is a serverless program that takes a structured input, runs a task (web scraping, data processing, browser automation), and produces an output. You can choose from thousands of ready-made Actors in [Apify Store](https://apify.com/store), or create your own. + + + + + + diff --git a/sources/platform/get-started/platform_basics.md b/sources/platform/get-started/platform_basics.md new file mode 100644 index 0000000000..fda59080b5 --- /dev/null +++ b/sources/platform/get-started/platform_basics.md @@ -0,0 +1,34 @@ +--- +title: Apify platform basics +description: Understand the core concepts of the Apify platform - Actors, storage, schedules, and how they work together. +sidebar_position: 5 +slug: /get-started/platform-basics +--- + + + +# Apify platform basics + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. This page will introduce the core concepts of the Apify platform and how they fit together. + +## What is an Actor + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. + +## Storage + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + +## Schedules and automation + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +## Integrations + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + +## Next steps + +- [Choose and run an Actor](/platform/get-started/choose-and-run-actor) to get started with existing tools. +- [Build your own Actor](/platform/get-started/build-an-actor) to create custom automation. +- Read about [Actors](/platform/actors) in detail. diff --git a/sources/platform/homepage_content.json b/sources/platform/homepage_content.json index 2c5fc61f78..3798619ffb 100644 --- a/sources/platform/homepage_content.json +++ b/sources/platform/homepage_content.json @@ -1,32 +1,22 @@ [ { - "title": "Actors", - "description": "Learn how to develop, run and share own web scraping and automation tools.", - "to": "/platform/actors" - }, - { - "title": "Storage", - "description": "Store anything from images and key-value pairs to structured output data.", - "to": "/platform/storage" + "title": "Get Started", + "description": "Build your first Actor and learn how to use the Apify platform.", + "to": "/platform/get-started" }, { - "title": "Proxy", - "description": "Learn to anonymously and reliably access websites in scraping/automation jobs.", - "to": "/platform/proxy" - }, - { - "title": "Schedules", - "description": "Learn how to automatically start your Actor and task runs.", - "to": "/platform/schedules" + "title": "Actors", + "description": "Learn how to develop, run, and share web scraping and automation tools.", + "to": "/platform/actors" }, { "title": "Integrations", - "description": "Learn how to connect the Apify platform with your projects.", + "description": "Connect the Apify platform with your projects and workflows.", "to": "/platform/integrations" }, { - "title": "Monitoring", - "description": "Learn how to check the performance of your Actors, validate your data and receive alerts.", - "to": "/platform/monitoring" + "title": "Account", + "description": "Manage your account, billing, organization settings, and access permissions.", + "to": "/platform/account" } ] diff --git a/sources/platform/integrations/index.mdx b/sources/platform/integrations/index.mdx index 3b9042f835..e5e49f60ca 100644 --- a/sources/platform/integrations/index.mdx +++ b/sources/platform/integrations/index.mdx @@ -1,7 +1,8 @@ --- title: Integrations description: Learn how to integrate the Apify platform with other services, your systems, data pipelines, and other web automation workflows. -sidebar_position: 11 +sidebar_label: Overview +sidebar_position: 0 category: platform slug: /integrations --- diff --git a/sources/platform/integrations/programming/api.md b/sources/platform/integrations/programming/api.md index 6923b2d64f..d3578812d3 100644 --- a/sources/platform/integrations/programming/api.md +++ b/sources/platform/integrations/programming/api.md @@ -176,7 +176,7 @@ If it’s **on**, the token can implicitly access the default storage of the Act If the toggle is **off**, the token can still trigger and inspect runs, but access to the default storages is restricted: -- For accounts with **Restricted general resource access**, the token cannot read or write to default storages. [Learn more about restricted general resource access](/platform/collaboration/general-resource-access). +- For accounts with **Restricted general resource access**, the token cannot read or write to default storages. [Learn more about restricted general resource access](/platform/account/collaboration/general-resource-access). - For accounts with **Unrestricted general resource access**, the default storages can still be read anonymously using their IDs, but writing is prevented. diff --git a/sources/platform/integrations/workflows-and-notifications/activepieces.md b/sources/platform/integrations/workflows-and-notifications/activepieces.md index 17cd0dd43c..c1f8230ab3 100644 --- a/sources/platform/integrations/workflows-and-notifications/activepieces.md +++ b/sources/platform/integrations/workflows-and-notifications/activepieces.md @@ -137,7 +137,7 @@ Both triggers create and manage Apify webhooks automatically when you enable or - **Build**, **Memory**, **Timeout** - **Wait for finish** behavior similar to **Run Actor**. -- **Get Dataset Items** retrieves items from an Apify [dataset](/platform/storage/dataset): +- **Get Dataset Items** retrieves items from an Apify [dataset](/platform/actors/storage/dataset): - Choose a dataset from your account. - Configure `offset` and `limit` to page through items. - Returns dataset items, their count, and the dataset ID. @@ -147,7 +147,7 @@ Both triggers create and manage Apify webhooks automatically when you enable or - Lets you choose a **crawler type** (e.g., Cheerio, JSDOM, Playwright variants). - Returns the Actor run details and the scraped items (HTML and markdown). -- **Get Key-Value Store Record** retrieves a value from an Apify [key-value store](/platform/storage/key-value-store): +- **Get Key-Value Store Record** retrieves a value from an Apify [key-value store](/platform/actors/storage/key-value-store): - Select a key-value store. - Select a record key from that store. - Returns the value as JSON, text, or a file reference, depending on its type. diff --git a/sources/platform/integrations/workflows-and-notifications/ifttt.md b/sources/platform/integrations/workflows-and-notifications/ifttt.md index 0c700d8565..bfdffeb5c5 100644 --- a/sources/platform/integrations/workflows-and-notifications/ifttt.md +++ b/sources/platform/integrations/workflows-and-notifications/ifttt.md @@ -125,9 +125,9 @@ To check if your Applet is working properly: ### Queries -- **Get Dataset Items**: Retrieves items from a [dataset](/platform/storage/dataset) +- **Get Dataset Items**: Retrieves items from a [dataset](/platform/actors/storage/dataset) - **Scrape Single URL**: Runs a scraper for a specified website and returns its content -- **Get Key-Value Store Record**: Retrieves a value from a [key-value store](/platform/storage/key-value-store) +- **Get Key-Value Store Record**: Retrieves a value from a [key-value store](/platform/actors/storage/key-value-store) ## Troubleshooting diff --git a/sources/platform/integrations/workflows-and-notifications/make/index.md b/sources/platform/integrations/workflows-and-notifications/make/index.md index 5943aca327..53ddc4dcd0 100644 --- a/sources/platform/integrations/workflows-and-notifications/make/index.md +++ b/sources/platform/integrations/workflows-and-notifications/make/index.md @@ -143,4 +143,4 @@ You can initiate the Actor run via the Apify console, a scheduler, or from anoth ### Searches -- **Get Dataset Items:** Retrieves items from a [dataset](/platform/storage/dataset). +- **Get Dataset Items:** Retrieves items from a [dataset](/platform/actors/storage/dataset). diff --git a/sources/platform/integrations/workflows-and-notifications/n8n/index.md b/sources/platform/integrations/workflows-and-notifications/n8n/index.md index eecb6a3641..d86fd813ac 100644 --- a/sources/platform/integrations/workflows-and-notifications/n8n/index.md +++ b/sources/platform/integrations/workflows-and-notifications/n8n/index.md @@ -186,11 +186,11 @@ Pull data from Apify storage. #### Datasets -- **Get Items**: Retrieves items from a [dataset](/platform/storage/dataset) +- **Get Items**: Retrieves items from a [dataset](/platform/actors/storage/dataset) #### Key-Value Stores -- **Get Record**: Retrieves a value from a [key-value store](/platform/storage/key-value-store) +- **Get Record**: Retrieves a value from a [key-value store](/platform/actors/storage/key-value-store) ### Triggers diff --git a/sources/platform/integrations/workflows-and-notifications/zapier.md b/sources/platform/integrations/workflows-and-notifications/zapier.md index b72c572746..80794823ab 100644 --- a/sources/platform/integrations/workflows-and-notifications/zapier.md +++ b/sources/platform/integrations/workflows-and-notifications/zapier.md @@ -119,13 +119,13 @@ Once you are happy with the test, you can publish the Zap. When it is turned on, ### Set Key-Value Store Record -> Sets a value to a [Key-value store](/platform/storage/key-value-store). +> Sets a value to a [Key-value store](/platform/actors/storage/key-value-store). ## Searches ### Fetch Dataset Items -> Retrieves items from a [dataset](/platform/storage/dataset). +> Retrieves items from a [dataset](/platform/actors/storage/dataset). ### Find Last Actor Run @@ -137,6 +137,6 @@ Once you are happy with the test, you can publish the Zap. When it is turned on, ### Get Key-Value Store Record -> Retrieves value from a [Key-value store](/platform/storage/key-value-store). +> Retrieves value from a [Key-value store](/platform/actors/storage/key-value-store). If you have any questions or need help, feel free to reach out to us on our [developer community on Discord](https://discord.com/invite/jyEM2PRvMU). diff --git a/sources/platform/limits.md b/sources/platform/limits.md index 8fe52e9a7b..f1ec730b0b 100644 --- a/sources/platform/limits.md +++ b/sources/platform/limits.md @@ -133,7 +133,7 @@ The tables below demonstrate the Apify platform's default resource limits. For A ## Usage limit -The Apify platform also introduces usage limits based on the billing plan to protect users from accidental overspending. To learn more about usage limits, head over to the [Limits](./console/billing.md#limits) section of our docs. +The Apify platform also introduces usage limits based on the billing plan to protect users from accidental overspending. To learn more about usage limits, head over to the [Limits](./account/billing.md#limits) section of our docs. View these limits and adjust your maximum usage limit in [Apify Console](https://console.apify.com/billing#/limits): diff --git a/sources/platform/security.md b/sources/platform/security.md index ec13e53011..64808dd947 100644 --- a/sources/platform/security.md +++ b/sources/platform/security.md @@ -111,4 +111,4 @@ Please adhere strictly to the following rules. Failure to do so may result in le ## Securing your data -The Apify platform provides you with multiple ways to secure your data, including [encrypted environment variables](./actors/development/programming_interface/environment_variables.md) for storing your configuration secrets and [encrypted input](./actors/development/actor_definition/input_schema/secret_input.md) for securing the input parameters of your Actors. +The Apify platform provides you with multiple ways to secure your data, including [encrypted environment variables](./actors/development/programming_interface/environment_variables.md) for storing your configuration secrets and [encrypted input](./actors/development/input_output_schemas/secret_input.md) for securing the input parameters of your Actors. diff --git a/sources/platform/sidebars.js b/sources/platform/sidebars.js index 8494ebdd6a..6e17bc4eba 100644 --- a/sources/platform/sidebars.js +++ b/sources/platform/sidebars.js @@ -1,8 +1,6 @@ module.exports = { - docs: [ - { - type: 'autogenerated', - dirName: '.', - }, - ], + getStarted: [{ type: 'autogenerated', dirName: 'get-started' }], + actors: [{ type: 'autogenerated', dirName: 'actors' }], + integrations: [{ type: 'autogenerated', dirName: 'integrations' }], + account: [{ type: 'autogenerated', dirName: 'account' }], };