diff --git a/.env.example b/.env.example
index 791d8e1d..631dfded 100644
--- a/.env.example
+++ b/.env.example
@@ -5,7 +5,7 @@ TYPESENSE_PRIVATE_API_KEY=typesense_private_api_key_required_for_indexing_only
# TYPESENSE_COLLECTION=directus-docs
DIRECTUS_URL=https://marketing-directus-url.com
GOOGLE_TAG_MANAGER_ID=GTM-PTLT3GH
-POSTHOG_API_HOST=https://directus.io/ingest
+POSTHOG_API_HOST=https://directus.com/ingest
POSTHOG_API_KEY=phc_secret_key_here
NUXT_PUBLIC_SITE_URL=https://directus.com
NUXT_PUBLIC_OG_BASE_URL=https://og.directus.com
diff --git a/CLAUDE.md b/CLAUDE.md
index e7f014c7..a906ee9b 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
-Directus documentation site built with Nuxt 3 and `@nuxt/content`. Markdown files in `/content` are rendered as pages. Deployed to Vercel on merge to main, served at `https://directus.io/docs` (note the `/docs` base URL in `nuxt.config.ts`).
+Directus documentation site built with Nuxt 3 and `@nuxt/content`. Markdown files in `/content` are rendered as pages. Deployed to Vercel on merge to main, served at `https://directus.com/docs` (note the `/docs` base URL in `nuxt.config.ts`).
## Commands
@@ -114,4 +114,4 @@ Matching the existing tone is mission-critical. All new or edited content in `/c
## Hosting
-The docs website is hosted as a nested path on the main Directus marketing website https://directus.io/docs. The rest of the Directus website is a separate repo.
+The docs website is hosted as a nested path on the main Directus marketing website https://directus.com/docs. The rest of the Directus website is a separate repo.
diff --git a/README.md b/README.md
index 8675d90f..aff60873 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@
## š° Introduction
-Welcome! This is the repo for [Directus' documentation](https://docs.directus.io).
+Welcome! This is the repo for [Directus' documentation](https://directus.com/docs).
-**[Learn more about Directus](https://directus.io)**
+**[Learn more about Directus](https://directus.com)**
## š„ļø Running the Docs
@@ -99,8 +99,8 @@ The documentation automatically deploys to Vercel when changes are merged into t
## š Contributing
-- [Code of Conduct](https://directus.io/docs/community/overview/conduct)
-- [Contributing and authoring guidelines](https://directus.io/docs/community/contribution/documentation)
+- [Code of Conduct](https://directus.com/docs/community/overview/conduct)
+- [Contributing and authoring guidelines](https://directus.com/docs/community/contribution/documentation)
diff --git a/app/app.config.ts b/app/app.config.ts
index 56fa9f00..7d8b27f3 100644
--- a/app/app.config.ts
+++ b/app/app.config.ts
@@ -200,7 +200,7 @@ export default defineAppConfig({
links: [
{
icon: 'simple-icons:directus',
- to: 'https://directus.io',
+ to: 'https://directus.com',
},
{
icon: 'simple-icons:github',
@@ -252,7 +252,7 @@ export default defineAppConfig({
{
icon: 'ic:baseline-support',
label: 'Need help? Contact Support.',
- to: 'https://directus.io/support',
+ to: 'https://directus.com/support',
},
{
icon: 'ic:baseline-people-alt',
@@ -267,7 +267,7 @@ export default defineAppConfig({
{
icon: 'ic:outline-help-outline',
label: 'Need a license? Contact Sales.',
- to: 'https://directus.io/demo',
+ to: 'https://directus.com/contact',
},
],
},
@@ -276,25 +276,25 @@ export default defineAppConfig({
links: [
{
label: 'Cloud Policies',
- to: 'https://directus.io/cloud-policies',
+ to: 'https://directus.com/cloud-policies',
},
{
label: 'License',
- to: 'https://directus.io/mscl',
+ to: 'https://directus.com/license',
},
{
label: 'Terms',
- to: 'https://directus.io/terms',
+ to: 'https://directus.com/terms',
},
{
label: 'Privacy',
- to: 'https://directus.io/privacy',
+ to: 'https://directus.com/privacy',
},
],
socials: [
{
icon: 'simple-icons:bluesky',
- to: 'https://bsky.app/profile/directus.io',
+ to: 'https://bsky.app/profile/directus.com',
},
{
icon: 'simple-icons:x',
diff --git a/app/components/content/VideoEmbed.vue b/app/components/content/VideoEmbed.vue
index 686d77c3..9423c230 100644
--- a/app/components/content/VideoEmbed.vue
+++ b/app/components/content/VideoEmbed.vue
@@ -74,7 +74,7 @@ const show = props.videoId
Watch {{ show.data.season.show.title }} on
diff --git a/content/_partials/license.md b/content/_partials/license.md
index f848c048..a7bfe40b 100644
--- a/content/_partials/license.md
+++ b/content/_partials/license.md
@@ -1,4 +1,4 @@
::callout{icon="material-symbols:info-outline"}
**Licensing**
- Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.io/MSCL). The free **core tier** does not require a license. Higher limits and additional features require a paid license, or qualifying entities can apply for the [Open Innovation Grant](https://directus.com/oig) for free commercial use. [Learn more about licensing](/licensing/overview).
+ Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.com/license). The free **core tier** does not require a license. Higher limits and additional features require a paid license, or qualifying entities can apply for the [Open Innovation Grant](https://directus.com/oig) for free commercial use. [Learn more about licensing](/licensing/overview).
::
diff --git a/content/cloud/1.getting-started/1.introduction.md b/content/cloud/1.getting-started/1.introduction.md
index 025fbfc5..20c6540d 100644
--- a/content/cloud/1.getting-started/1.introduction.md
+++ b/content/cloud/1.getting-started/1.introduction.md
@@ -40,11 +40,11 @@ Tenancy refers to how client data is stored within a database. In single-tenancy
Professional projects are created using a multi-tenant architecture. However, if your neighbor's project gets busy, it will not impact your project, because each professional project is scoped to one container per project with dedicated minimum resources.
-Projects also have the ability to scale beyond this minimum allocation based on currently available resources within the multi-tenant pool. However, these additional resources are not guaranteed and are offered on a dynamic first-come, first-serve basis. For end-to-end, single-tenant infrastructure with fully dedicated resources, [contact us about our enterprise tier](https://directus.io/contact)
+Projects also have the ability to scale beyond this minimum allocation based on currently available resources within the multi-tenant pool. However, these additional resources are not guaranteed and are offered on a dynamic first-come, first-serve basis. For end-to-end, single-tenant infrastructure with fully dedicated resources, [contact us about our enterprise tier](https://directus.com/contact)
**Enterprise**
-Databases on enterprise projects are single-tenant, 100% dedicated to your project - no neighbors! Ready to upgrade to enterprise? [Contact us](https://directus.io/contact).
+Databases on enterprise projects are single-tenant, 100% dedicated to your project - no neighbors! Ready to upgrade to enterprise? [Contact us](https://directus.com/contact).
::callout{icon="material-symbols:info-outline"}
This section refers to how your cloud project is stored alongside other cloud projects and has nothing to do with how you design your project's data model. You can implement single or multi-tenant architecture within any Directus Cloud project.
diff --git a/content/cloud/2.projects/1.create.md b/content/cloud/2.projects/1.create.md
index af921c60..67ba3098 100644
--- a/content/cloud/2.projects/1.create.md
+++ b/content/cloud/2.projects/1.create.md
@@ -32,7 +32,7 @@ The available [project tiers](/cloud/getting-started/introduction) are billed ei
The Directus Cloud enterprise tier offers power and scale to meet any project's needs and offers more datacenter regions, upgraded support options, and more.
-[Contact us](https://directus.io/contact) to find out more.
+[Contact us](https://directus.com/contact) to find out more.
## Datacenter Regions
diff --git a/content/cloud/2.projects/3.version-upgrades.md b/content/cloud/2.projects/3.version-upgrades.md
index c671b408..ddab4835 100644
--- a/content/cloud/2.projects/3.version-upgrades.md
+++ b/content/cloud/2.projects/3.version-upgrades.md
@@ -11,5 +11,5 @@ You'll get notified in the Cloud dashboard when an update takes place. If there
::callout{icon="material-symbols:info-outline"}
**Version Locking**
-Want to stay on a specific version of Directus? Version Locking is available on enterprise projects. [Contact us](https://directus.io/contact) to get started.
+Want to stay on a specific version of Directus? Version Locking is available on enterprise projects. [Contact us](https://directus.com/contact) to get started.
::
diff --git a/content/cloud/2.projects/5.backups.md b/content/cloud/2.projects/5.backups.md
index ee493d0c..b39e1e1d 100644
--- a/content/cloud/2.projects/5.backups.md
+++ b/content/cloud/2.projects/5.backups.md
@@ -6,4 +6,4 @@ description: Learn about automatic backups in Directus Cloud.
By default, file assets and databases are backed up once per day on all projects. Enterprise customers can work with our team for more tailored backup solutions.
-In the event of an emergency, such as your project crashing, don't worry! Your data will be safe. If you need access to your backed-up data, [contact us](https://directus.io/contact).
+In the event of an emergency, such as your project crashing, don't worry! Your data will be safe. If you need access to your backed-up data, [contact us](https://directus.com/contact).
diff --git a/content/cloud/3.configuration/1.custom-domains.md b/content/cloud/3.configuration/1.custom-domains.md
index 567417e9..738874aa 100644
--- a/content/cloud/3.configuration/1.custom-domains.md
+++ b/content/cloud/3.configuration/1.custom-domains.md
@@ -6,4 +6,4 @@ description: Custom domains are available for your Directus Enterprise Cloud pro
By default, all projects are accessible via .directus.app.
-To configure an Enterprise Project custom domain, [contact our support team](https://directus.io/contact) .
+To configure an Enterprise Project custom domain, [contact our support team](https://directus.com/contact) .
diff --git a/content/cloud/3.configuration/2.environment-variables.md b/content/cloud/3.configuration/2.environment-variables.md
index 2840092b..28f640f3 100644
--- a/content/cloud/3.configuration/2.environment-variables.md
+++ b/content/cloud/3.configuration/2.environment-variables.md
@@ -7,7 +7,7 @@ description: Learn about environment variables in Directus Cloud.
You can configure your Directus project using a number of environment variable presets which can be configured in the Cloud dashboard.
::callout{icon="material-symbols:info-outline"}
-Directus Cloud Enterprise customers are able to customize a wider variety of environment variables. Enterprise customers should [contact support](https://directus.io/contact) for help with updating their environment variables.
+Directus Cloud Enterprise customers are able to customize a wider variety of environment variables. Enterprise customers should [contact support](https://directus.com/contact) for help with updating their environment variables.
::

diff --git a/content/cloud/3.configuration/3.direct-database-access.md b/content/cloud/3.configuration/3.direct-database-access.md
index 325cead7..7a439ec6 100644
--- a/content/cloud/3.configuration/3.direct-database-access.md
+++ b/content/cloud/3.configuration/3.direct-database-access.md
@@ -8,7 +8,7 @@ description: Learn how to directly access your Directus Cloud project's database
## Requesting Access
-To enable Direct DB access, Enterprise customers need to [submit a support ticket](https://directus.io/support). Once the request is reviewed, the support team will provide the necessary connection details.
+To enable Direct DB access, Enterprise customers need to [submit a support ticket](https://directus.com/support). Once the request is reviewed, the support team will provide the necessary connection details.
## Connecting to Your Database
diff --git a/content/cloud/3.configuration/4.custom-extensions.md b/content/cloud/3.configuration/4.custom-extensions.md
index 01333774..f455032f 100644
--- a/content/cloud/3.configuration/4.custom-extensions.md
+++ b/content/cloud/3.configuration/4.custom-extensions.md
@@ -8,7 +8,7 @@ Custom Extensions is an Enterprise-tier feature that lets you deploy custom exte
## Enabling Custom Extensions
-To enable Custom Extensions, Enterprise customers can [submit a support ticket](https://directus.io/support) to request access for their project.
+To enable Custom Extensions, Enterprise customers can [submit a support ticket](https://directus.com/support) to request access for their project.
In the support ticket, please include the GitHub usernames of any users who should have access to the custom extensions. Once enabled, these users will be invited to a repository that includes an example Custom Extension to get started.
diff --git a/content/cloud/4.billing/2.changing-tier.md b/content/cloud/4.billing/2.changing-tier.md
index f2c99e86..0e03b806 100644
--- a/content/cloud/4.billing/2.changing-tier.md
+++ b/content/cloud/4.billing/2.changing-tier.md
@@ -10,4 +10,4 @@ You can change between the different [cloud project tiers](/cloud/getting-starte
To change your project tier, navigate to "Projects" and click on :icon{name="material-symbols:edit-outline"} next to the project for which you wish to change its tier. Scroll down to find the list of tiers. Once selected, you can click on "Make Changes" to confirm.
-In order to change to an enterprise project, please [contact us](https://directus.io/contact).
+In order to change to an enterprise project, please [contact us](https://directus.com/contact).
diff --git a/content/community/1.overview/2.conduct.md b/content/community/1.overview/2.conduct.md
index ecc2d885..848ecf90 100644
--- a/content/community/1.overview/2.conduct.md
+++ b/content/community/1.overview/2.conduct.md
@@ -39,7 +39,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
## Enforcement
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team atĀ [info@directus.io](mailto:info@directus.io). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team atĀ [info@directus.com](mailto:info@directus.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the code of conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
diff --git a/content/community/2.contribution/1.translations.md b/content/community/2.contribution/1.translations.md
index 96716737..c606dfc5 100644
--- a/content/community/2.contribution/1.translations.md
+++ b/content/community/2.contribution/1.translations.md
@@ -36,4 +36,4 @@ Editing translations directly in the GitHub repo is not recommended, as these ch
## Requesting a New Language
-To propose adding a new language to the Crowdin service, get in touch with us at [devrel@directus.io](mailto:devrel@directus.io).
+To propose adding a new language to the Crowdin service, get in touch with us at [devrel@directus.com](mailto:devrel@directus.com).
diff --git a/content/community/3.codebase/2.dev-environment.md b/content/community/3.codebase/2.dev-environment.md
index 685d9888..47a0d4ef 100644
--- a/content/community/3.codebase/2.dev-environment.md
+++ b/content/community/3.codebase/2.dev-environment.md
@@ -41,7 +41,7 @@ You will need to configure a database. You might want to use the Directus team's
# ONLY FOR DEBUGGING. THIS IS NOT INTENDED FOR PRODUCTION USE.
#
# For receiving emails via MailDev, you'll need to add the following to your env:
-# EMAIL_FROM=directus@directus.io
+# EMAIL_FROM=directus@directus.com
# EMAIL_TRANSPORT=smtp
# EMAIL_SMTP_HOST=0.0.0.0
# EMAIL_SMTP_PORT=1025
diff --git a/content/community/4.reporting-and-support/2.bug-reporting.md b/content/community/4.reporting-and-support/2.bug-reporting.md
index d7d482c3..d98b3bec 100644
--- a/content/community/4.reporting-and-support/2.bug-reporting.md
+++ b/content/community/4.reporting-and-support/2.bug-reporting.md
@@ -49,4 +49,4 @@ An issue being closed does not mean we think it's not a valid bug.
## Contributing
-We accept Pull Requests (PR) for any open issue. If you'd like to implement a PR for a closed issue, please leave a comment on the closed issue first. For more information on opening PRs, please refer to our [docs on Pull Requests](https://directus.io/docs/community/contribution/pull-requests).
+We accept Pull Requests (PR) for any open issue. If you'd like to implement a PR for a closed issue, please leave a comment on the closed issue first. For more information on opening PRs, please refer to our [docs on Pull Requests](https://directus.com/docs/community/contribution/pull-requests).
diff --git a/content/community/4.reporting-and-support/3.security-reporting.md b/content/community/4.reporting-and-support/3.security-reporting.md
index b344df99..ec1b2369 100644
--- a/content/community/4.reporting-and-support/3.security-reporting.md
+++ b/content/community/4.reporting-and-support/3.security-reporting.md
@@ -6,14 +6,14 @@ description: How to report security issues in Directus.
### Reporting a Security Issue
-If you believe you have discovered a security issue within a Directus product or service, please [open a new private security vulnerability report through GitHub](https://github.com/directus/directus/security/advisories/new). Alternatively, reach out to us directly over email: [security@directus.io](mailto:security@directus.io). We will then open a GitHub security advisory for tracking the fix on your behalf.
+If you believe you have discovered a security issue within a Directus product or service, please [open a new private security vulnerability report through GitHub](https://github.com/directus/directus/security/advisories/new). Alternatively, reach out to us directly over email: [security@directus.com](mailto:security@directus.com). We will then open a GitHub security advisory for tracking the fix on your behalf.
Directus values the members of the independent security research community who find security vulnerabilities and work with our team so that proper fixes can be issued to users. Our policy is to credit all researchers in the fix's release notes. In order to receive credit, security researchers must follow responsible disclosure practices, including:
- They do not publish the vulnerability prior to the Directus team releasing a fix for it
- They do not divulge exact details of the issue, for example, through exploits or proof-of-concepts
-You can learn more about how we approach security and compliance at Directus [here](https://directus.io/security).
+You can learn more about how we approach security and compliance at Directus [here](https://directus.com/resources/directus-soc-2-type-ii-certification).
### Approach to Vulnerability Management
diff --git a/content/community/4.reporting-and-support/4.customer-support.md b/content/community/4.reporting-and-support/4.customer-support.md
index 804c8420..f936d397 100644
--- a/content/community/4.reporting-and-support/4.customer-support.md
+++ b/content/community/4.reporting-and-support/4.customer-support.md
@@ -8,7 +8,7 @@ If you have questions while working with Directus, there are many resources to h
If you're experiencing issues or think you have found a problem in Directus, please see our troubleshooting steps.
-If you're a Directus Enterprise Cloud user or currently have a technical support contract, use our [support contact form](https://directus.io/support) to get in touch with our team.
+If you're a Directus Enterprise Cloud user or currently have a technical support contract, use our [support contact form](https://directus.com/support) to get in touch with our team.
## Support Tiers
@@ -16,10 +16,10 @@ If you're a Directus Enterprise Cloud user or currently have a technical support
OurĀ [community platform](https://community.directus.io/) is where our community members meet to connect and discuss all things Directus, including asking questions. Please keep all questions in the help channels, be considerate, and remember that you are getting free help from the community. While the Directus core team plays an active and engaged role in community discussions, there is no guaranteed response, including any response time for community support.
-### Enterprise Support
+### Enterprise Support
Basic support is included for all Enterprise cloud projects and can be added to any self hosted licensed projects. It includes access to the Directus Support team with response time service level agreements.
Premium support can be added on to Enterprise cloud and self hosted licensed projects and includes 24/7 critical issue support and a dedicated customer support manager.
-Cloud customers and self-hosted users interested in learning more about our enterprise support should contact us at sales@directus.io
+Cloud customers and self-hosted users interested in learning more about our enterprise support should contact us at sales@directus.com
diff --git a/content/configuration/1.general.md b/content/configuration/1.general.md
index fafae083..f02dd67c 100644
--- a/content/configuration/1.general.md
+++ b/content/configuration/1.general.md
@@ -71,5 +71,5 @@ To more accurately gauge the frequency of installation, version fragmentation, a
| Variable | Description | Default Value |
| ------------------------- | ----------------------------------------------------------------- | -------------------------------- |
| `TELEMETRY` | Allow Directus to collect anonymized data about your environment. | `true` |
-| `TELEMETRY_URL` | URL that the usage report is submitted to. | `https://telemetry.directus.io/` |
+| `TELEMETRY_URL` | URL that the usage report is submitted to. | `https://telemetry.directus.com/` |
| `TELEMETRY_AUTHORIZATION` | Optional authorization header value. | |
diff --git a/content/configuration/extensions.md b/content/configuration/extensions.md
index f29ccbf8..5725c7f5 100644
--- a/content/configuration/extensions.md
+++ b/content/configuration/extensions.md
@@ -37,7 +37,7 @@ For guidance on restricting who can install or manage extensions, see [Security
| Variable | Description | Default Value |
| ---------------------- | ------------------------------------------------- | ------------------------------ |
| `MARKETPLACE_TRUST` | One of `sandbox`, `all` | `sandbox` |
-| `MARKETPLACE_REGISTRY` | The registry to use for the Directus Marketplace. | `https://registry.directus.io` |
+| `MARKETPLACE_REGISTRY` | The registry to use for the Directus Marketplace. | `https://registry.directus.com` |
::callout{icon="material-symbols:info-outline"}
**Sandbox**
diff --git a/content/configuration/files.md b/content/configuration/files.md
index 3b07a121..cb669aaf 100644
--- a/content/configuration/files.md
+++ b/content/configuration/files.md
@@ -123,7 +123,7 @@ Large files can be uploaded in chunks to improve reliability and efficiency, esp
::callout{icon="material-symbols:info-outline"}
-This feature requires the `PUBLIC_URL` to be set correctly to [where your API is publicly accessible](https://directus.io/docs/configuration/general).
+This feature requires the `PUBLIC_URL` to be set correctly to [where your API is publicly accessible](https://directus.com/docs/configuration/general).
::
diff --git a/content/configuration/security-limits.md b/content/configuration/security-limits.md
index 5d197a85..e606ed27 100644
--- a/content/configuration/security-limits.md
+++ b/content/configuration/security-limits.md
@@ -91,8 +91,8 @@ Directus uses [helmet.js](https://helmetjs.github.io) for configuring Conent-Sec
### Examples
-**Allowing own and directus.io domain**\
-`CONTENT_SECURITY_POLICY_DIRECTIVES__DEFAULT_SRC="'self' https://directus.io"`
+**Allowing own and directus.com domain**\
+`CONTENT_SECURITY_POLICY_DIRECTIVES__DEFAULT_SRC="'self' https://directus.com"`
**Deny loading any fonts**\
`CONTENT_SECURITY_POLICY_DIRECTIVES__FONT_SRC="'none'"`
diff --git a/content/frameworks/01.nextjs/01.data-fetching.md b/content/frameworks/01.nextjs/01.data-fetching.md
index 3289ee5f..6d228d58 100644
--- a/content/frameworks/01.nextjs/01.data-fetching.md
+++ b/content/frameworks/01.nextjs/01.data-fetching.md
@@ -14,7 +14,7 @@ navigation:
title: Data Fetching
---
[Next.js](https://nextjs.org/) is a popular JavaScript framework based on React.js. In this tutorial, you will learn how
-to build a website using Directus as a [Headless CMS](https://directus.io/solutions/headless-cms). You will store,
+to build a website using Directus as a [Headless CMS](https://directus.com/resources/what-is-headless-cms). You will store,
retrieve, and use global metadata such as the site title, create new pages dynamically based on Directus items, and
build a blog.
diff --git a/content/frameworks/01.nextjs/04.dynamic-forms.md b/content/frameworks/01.nextjs/04.dynamic-forms.md
index 6c4d49f3..0c0db528 100644
--- a/content/frameworks/01.nextjs/04.dynamic-forms.md
+++ b/content/frameworks/01.nextjs/04.dynamic-forms.md
@@ -25,7 +25,7 @@ You will need:
## Set Up Your Directus Project
-To get started, set up a Directus project either using [Directus Cloud](https://directus.io/cloud) or by self-hosting it using [Docker](https://docs.directus.io/self-hosted/docker-guide.html). Then, follow the steps below:
+To get started, set up a Directus project either using [Directus Cloud](https://directus.com/start) or by self-hosting it using [Docker](https://directus.com/docs/self-hosting/overview). Then, follow the steps below:
### Create a Collection
@@ -49,7 +49,7 @@ Click on the `slug` field then click Validation and create a Regex validation wi
### Edit Public Policy
-Next, to allow viewing the posts collections and field listings as an unauthenticated user, you will need to modify the public [access policy](https://directus.io/docs/guides/auth/access-control). In a real project, you would want to create a new policy and authenticate users to Directus before allowing them access to your content.
+Next, to allow viewing the posts collections and field listings as an unauthenticated user, you will need to modify the public [access policy](https://directus.com/docs/guides/auth/access-control). In a real project, you would want to create a new policy and authenticate users to Directus before allowing them access to your content.
To enable public access for now, navigate to **Settings** -> **Access Policies** -> **Public** and grant full `create` and `read` access to the `posts` collection and full `read` access to the `directus_fields` collection.
diff --git a/content/frameworks/01.nextjs/09.live-preview-draft-mode.md b/content/frameworks/01.nextjs/09.live-preview-draft-mode.md
index 5a09c2cc..ab9e130b 100644
--- a/content/frameworks/01.nextjs/09.live-preview-draft-mode.md
+++ b/content/frameworks/01.nextjs/09.live-preview-draft-mode.md
@@ -14,7 +14,7 @@ navigation:
title: Draft Mode Preview
---
Directus' Live Preview feature allows you to show changes in your website before publishing and without the need to
-refresh the browser. This is useful when using Directus as a [Headless CMS](https://directus.io/solutions/headless-cms).
+refresh the browser. This is useful when using Directus as a [Headless CMS](https://directus.com/resources/what-is-headless-cms).
[Next.js](https://nextjs.org/) Draft Mode feature renders pages on request instead of build time and fetches draft
content instead of the published content.
diff --git a/content/frameworks/01.nextjs/10.multilingual-content.md b/content/frameworks/01.nextjs/10.multilingual-content.md
index eb0eab77..a2bf1058 100644
--- a/content/frameworks/01.nextjs/10.multilingual-content.md
+++ b/content/frameworks/01.nextjs/10.multilingual-content.md
@@ -24,7 +24,7 @@ You will need:
## Set Up Your Directus Project
-To get started, set up a Directus project either using [Directus Cloud](https://directus.io/cloud) or by self-hosting it using [Docker](https://docs.directus.io/self-hosted/docker-guide.html). Then, follow the steps below:
+To get started, set up a Directus project either using [Directus Cloud](https://directus.com/start) or by self-hosting it using [Docker](https://directus.com/docs/self-hosting/overview). Then, follow the steps below:
### Create a Collection
@@ -36,7 +36,7 @@ Create a new collection called posts with the following fields:
### Edit Public Policy
-Next, to allow viewing the post as an unauthenticated user, you will need to modify the public [access policy](https://directus.io/docs/guides/auth/access-control).
+Next, to allow viewing the post as an unauthenticated user, you will need to modify the public [access policy](https://directus.com/docs/guides/auth/access-control).
To do that, navigate to Settings -> Access Policies -> Public. Under `posts`, set a public policy for `read`. This will now allow all posts to be read by unauthenticated users.
@@ -152,7 +152,7 @@ Now, you are ready to set up content translations!
## Set Up Content Translations
-To set up your Directus instance to allow adding content translations, you will need to add a field to the `posts` collection of type [Translations](https://directus.io/docs/guides/data-model/relationships) while keeping all the default settings.
+To set up your Directus instance to allow adding content translations, you will need to add a field to the `posts` collection of type [Translations](https://directus.com/docs/guides/data-model/relationships) while keeping all the default settings.
This will create two new collections in your data models list: `languages` and `posts_translations`
diff --git a/content/frameworks/01.nextjs/12.reusable-blocks.md b/content/frameworks/01.nextjs/12.reusable-blocks.md
index d53c4917..2629e683 100644
--- a/content/frameworks/01.nextjs/12.reusable-blocks.md
+++ b/content/frameworks/01.nextjs/12.reusable-blocks.md
@@ -13,7 +13,7 @@ navigation:
title: Reusable Blocks
---
-[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.io/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into a Next.js application.
+[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.com/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into a Next.js application.
## Before You Start
diff --git a/content/frameworks/01.nextjs/13.visual-editor.md b/content/frameworks/01.nextjs/13.visual-editor.md
index 224f96b7..1915b7a4 100644
--- a/content/frameworks/01.nextjs/13.visual-editor.md
+++ b/content/frameworks/01.nextjs/13.visual-editor.md
@@ -116,7 +116,7 @@ environment:
In a production environment, you should only allow your app's trusted domains in the `CORS_ORIGIN` list.
## Set Up Your Next.js Project
-Follow the instructions for setting up a Next.js project in the [Create a CMS using Directus and Next.js](https://directus.io/docs/frameworks/nextjs/build-a-cms) tutorial. Once you have the Next.js app from that tutorial set up, you can start with the steps in this article to integrate with the Directus Visual Editor.
+Follow the instructions for setting up a Next.js project in the [Create a CMS using Directus and Next.js](https://directus.com/docs/frameworks/nextjs/build-a-cms) tutorial. Once you have the Next.js app from that tutorial set up, you can start with the steps in this article to integrate with the Directus Visual Editor.
You can get the full code for this article [here](https://github.com/krharsh17/directus-next-cms) to skip the setup and go straight to the integration.
@@ -843,4 +843,4 @@ With all the components set up, navigate to the Visual Editor page in Directus S
By coupling frontend elements with Directus fields the Visual Editor gives visual website editors a way to edit content directly on the page.
-The visual editor offers a lot more features, such as handling [sensitive data](https://directus.io/docs/guides/content/visual-editor/frontend-library#:~:text=Be%20careful%20with%20sensitive%20data%20in%20attributes) carefully, [customizing the various editable elements](https://directus.io/docs/guides/content/visual-editor/customization) beyond their default styles via CSS, and [managing multiple websites](https://directus.io/docs/guides/content/visual-editor/studio-module) from one Directus instance.
+The visual editor offers a lot more features, such as handling [sensitive data](https://directus.com/docs/guides/content/visual-editor/frontend-library#:~:text=Be%20careful%20with%20sensitive%20data%20in%20attributes) carefully, [customizing the various editable elements](https://directus.com/docs/guides/content/visual-editor/customization) beyond their default styles via CSS, and [managing multiple websites](https://directus.com/docs/guides/content/visual-editor/studio-module) from one Directus instance.
diff --git a/content/frameworks/02.nuxt/01.data-fetching.md b/content/frameworks/02.nuxt/01.data-fetching.md
index 82fc67bc..b5a169f1 100644
--- a/content/frameworks/02.nuxt/01.data-fetching.md
+++ b/content/frameworks/02.nuxt/01.data-fetching.md
@@ -14,7 +14,7 @@ navigation:
title: Data Fetching
---
[Nuxt](https://nuxt.com/) is a popular JavaScript framework based on Vue.js. In this tutorial, you will learn how to
-build a website using Directus as a [Headless CMS](https://directus.io/solutions/headless-cms). You will store,
+build a website using Directus as a [Headless CMS](https://directus.com/resources/what-is-headless-cms). You will store,
retrieve, and use global metadata such as the site title, create new pages dynamically based on Directus items, and
build a blog.
diff --git a/content/frameworks/02.nuxt/07.live-preview.md b/content/frameworks/02.nuxt/07.live-preview.md
index 5974caf0..3f27d433 100644
--- a/content/frameworks/02.nuxt/07.live-preview.md
+++ b/content/frameworks/02.nuxt/07.live-preview.md
@@ -339,7 +339,7 @@ With live preview implemented into your Nuxt application return to Directus and

-[Add a new version](https://directus.io/docs/guides/content/content-versioning#creating-a-new-version) of the post and make changes to the content. Ensure the preview updates with the new content.
+[Add a new version](https://directus.com/docs/guides/content/content-versioning#creating-a-new-version) of the post and make changes to the content. Ensure the preview updates with the new content.

diff --git a/content/frameworks/02.nuxt/08.live-preview-setup.md b/content/frameworks/02.nuxt/08.live-preview-setup.md
index 66083c5a..34569251 100644
--- a/content/frameworks/02.nuxt/08.live-preview-setup.md
+++ b/content/frameworks/02.nuxt/08.live-preview-setup.md
@@ -18,7 +18,7 @@ need to refresh the browser.
By adding a preview URL and setting up your Nuxt 3 application, you can instantly see live changes made to your
collection inside of Directus. This is useful when using Directus as a
-[Headless CMS](https://directus.io/solutions/headless-cms).
+[Headless CMS](https://directus.com/resources/what-is-headless-cms).
## Before You Start
diff --git a/content/frameworks/02.nuxt/09.migrate-from-nuxt-content.md b/content/frameworks/02.nuxt/09.migrate-from-nuxt-content.md
index a9c810c8..ea4ba131 100644
--- a/content/frameworks/02.nuxt/09.migrate-from-nuxt-content.md
+++ b/content/frameworks/02.nuxt/09.migrate-from-nuxt-content.md
@@ -21,7 +21,7 @@ Up until now, I leveraged [Nuxt Content](https://content.nuxtjs.org/), a file-ba
Recently, I've been lucky enough to bring on a team member for a few hours a week to help run the project, and while I feel at home spinning up the application locally, working in code to add and edit content, it isn't fair or reasonable to expect that of others.
-Directus is an API-driven [Headless CMS](https://directus.io/solutions/headless-cms). Unlike file-based CMSs like Nuxt Content, Directus separates the content from the presentation layer. This decoupling means that non-developers can handle content updates without needing to understand the underlying code. They can work in a user-friendly interface, updating content, and the website pulls data from the API to construct pages.
+Directus is an API-driven [Headless CMS](https://directus.com/resources/what-is-headless-cms). Unlike file-based CMSs like Nuxt Content, Directus separates the content from the presentation layer. This decoupling means that non-developers can handle content updates without needing to understand the underlying code. They can work in a user-friendly interface, updating content, and the website pulls data from the API to construct pages.
Many projects start the same way as mine, and I hope sharing this journey of maturing our tooling and processes helps!
diff --git a/content/frameworks/02.nuxt/10.multilingual-content.md b/content/frameworks/02.nuxt/10.multilingual-content.md
index d103f129..7c163ce7 100644
--- a/content/frameworks/02.nuxt/10.multilingual-content.md
+++ b/content/frameworks/02.nuxt/10.multilingual-content.md
@@ -144,7 +144,7 @@ export default defineNuxtPlugin(() => {
## Set Up Content Translations
-Add a field to the `posts` collection of type [Translations](https://directus.io/docs/guides/data-model/relationships) keeping all the default settings.
+Add a field to the `posts` collection of type [Translations](https://directus.com/docs/guides/data-model/relationships) keeping all the default settings.
This will create two new collections, `languages` and `posts_translations`

diff --git a/content/frameworks/02.nuxt/11.reusable-blocks.md b/content/frameworks/02.nuxt/11.reusable-blocks.md
index 50e72284..c84782ca 100644
--- a/content/frameworks/02.nuxt/11.reusable-blocks.md
+++ b/content/frameworks/02.nuxt/11.reusable-blocks.md
@@ -12,7 +12,7 @@ description: Learn how to render dynamic blocks using Nuxt.
navigation:
title: Reusable Blocks
---
-[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.io/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into your Nuxt website.
+[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.com/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into your Nuxt website.
## Before You Start
diff --git a/content/frameworks/02.nuxt/12.visual-editor.md b/content/frameworks/02.nuxt/12.visual-editor.md
index 2308d1ae..dcf8a35a 100644
--- a/content/frameworks/02.nuxt/12.visual-editor.md
+++ b/content/frameworks/02.nuxt/12.visual-editor.md
@@ -55,13 +55,13 @@ Navigate to Settings -> Visual Editor and add the URL of your Nuxt website that
## Set Up Your Nuxt Project
-Follow the instructions for setting up a Nuxt project in the [Create a CMS using Directus and Nuxt documentation](https://directus.io/docs/frameworks/nuxt/build-a-cms#set-up-your-nuxt-project). Complete the remainder of the steps in this article to create a Nuxt project that is ready to integrate with the Directus Visual Editor.
+Follow the instructions for setting up a Nuxt project in the [Create a CMS using Directus and Nuxt documentation](https://directus.com/docs/frameworks/nuxt/build-a-cms#set-up-your-nuxt-project). Complete the remainder of the steps in this article to create a Nuxt project that is ready to integrate with the Directus Visual Editor.
A copy of the Directus/Nuxt CMS project from this article is available [here](https://github.com/craigharman/directus-guest-authoring/tree/master/036-directus-cms-home) if you want to skip the setup and go straight to the integration.
### Configure the Directus Visual Editing Package
-To allow communication between Directus and the Nuxt website install the [Directus Visual Editor Front End Library](https://directus.io/docs/guides/content/visual-editor/frontend-library) by running the following command:
+To allow communication between Directus and the Nuxt website install the [Directus Visual Editor Front End Library](https://directus.com/docs/guides/content/visual-editor/frontend-library) by running the following command:
```bash
npm install @directus/visual-editing
@@ -241,6 +241,6 @@ By coupling frontend elements with Directus fields the Visual Editor gives visua
The editor is more powerful than demonstrated here and also allows for:
-- Handling of [sensitive data](https://directus.io/docs/guides/content/visual-editor/frontend-library)
-- [Customize the various editable elements](https://directus.io/docs/guides/content/visual-editor/customization) beyond their default styles via CSS
-- [Manage multiple websites](https://directus.io/docs/guides/content/visual-editor/studio-module) from one Directus instance
+- Handling of [sensitive data](https://directus.com/docs/guides/content/visual-editor/frontend-library)
+- [Customize the various editable elements](https://directus.com/docs/guides/content/visual-editor/customization) beyond their default styles via CSS
+- [Manage multiple websites](https://directus.com/docs/guides/content/visual-editor/studio-module) from one Directus instance
diff --git a/content/frameworks/03.astro/03.build-a-cms.md b/content/frameworks/03.astro/03.build-a-cms.md
index 390892e0..807ca215 100644
--- a/content/frameworks/03.astro/03.build-a-cms.md
+++ b/content/frameworks/03.astro/03.build-a-cms.md
@@ -21,7 +21,7 @@ Directus provides a headless CMS, which when combined with Astro will streamline
You will need:
-- A new Directus project with admin access. you can use [Directus Cloud](https://directus.cloud/) or [run it yourself](https://directus.io/docs/self-hosting/overview).
+- A new Directus project with admin access. you can use [Directus Cloud](https://directus.cloud/) or [run it yourself](https://directus.com/docs/self-hosting/overview).
- Optional but recommended: Familiarity with data modeling in Directus.
- Basic knowledge of Astro and JavaScript.
diff --git a/content/frameworks/03.astro/04.dynamic-forms.md b/content/frameworks/03.astro/04.dynamic-forms.md
index 9ec607ed..6887cd68 100644
--- a/content/frameworks/03.astro/04.dynamic-forms.md
+++ b/content/frameworks/03.astro/04.dynamic-forms.md
@@ -27,7 +27,7 @@ You will need:
## Set Up Your Directus Project
-To get started, you will need to set up a Directus project. You can use Directus either by [self-hosting](https://directus.io/docs/self-hosting/overview) it or using [Directus Cloud](https://directus.io/docs/cloud/getting-started/introduction).
+To get started, you will need to set up a Directus project. You can use Directus either by [self-hosting](https://directus.com/docs/self-hosting/overview) it or using [Directus Cloud](https://directus.com/docs/cloud/getting-started/introduction).
### Create a Collection
diff --git a/content/frameworks/03.astro/05.dynamic-pages.md b/content/frameworks/03.astro/05.dynamic-pages.md
index 4f952b0c..542c9ac3 100644
--- a/content/frameworks/03.astro/05.dynamic-pages.md
+++ b/content/frameworks/03.astro/05.dynamic-pages.md
@@ -27,7 +27,7 @@ You will need:
## Set Up Your Directus Project
-To get started, you will need to set up a Directus project. You can use Directus either by [self-hosting](https://directus.io/docs/self-hosting/overview) it or using [Directus Cloud](https://directus.io/docs/cloud/getting-started/introduction).
+To get started, you will need to set up a Directus project. You can use Directus either by [self-hosting](https://directus.com/docs/self-hosting/overview) it or using [Directus Cloud](https://directus.com/docs/cloud/getting-started/introduction).
### Create a Collection
diff --git a/content/frameworks/03.astro/08.reusable-blocks.md b/content/frameworks/03.astro/08.reusable-blocks.md
index 230c4811..c4072335 100644
--- a/content/frameworks/03.astro/08.reusable-blocks.md
+++ b/content/frameworks/03.astro/08.reusable-blocks.md
@@ -13,7 +13,7 @@ navigation:
title: Reusable Blocks
---
-[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.io/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into our Astro website.
+[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.com/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into our Astro website.
## Before You Start
@@ -25,7 +25,7 @@ You will need:
## Edit Public Policy
-To grant public [access](https://directus.io/docs/guides/auth/access-control) to your blocks collections in Directus,navigate to Settings -> Access Policies -> Public Policy From there, enable the `Read` permission for the blocks collections to ensure they are accessible as needed.
+To grant public [access](https://directus.com/docs/guides/auth/access-control) to your blocks collections in Directus,navigate to Settings -> Access Policies -> Public Policy From there, enable the `Read` permission for the blocks collections to ensure they are accessible as needed.

diff --git a/content/frameworks/04.sveltekit/02.authentication.md b/content/frameworks/04.sveltekit/02.authentication.md
index 5ecdd1cd..059486d6 100644
--- a/content/frameworks/04.sveltekit/02.authentication.md
+++ b/content/frameworks/04.sveltekit/02.authentication.md
@@ -19,7 +19,7 @@ Authentication is a critical part of any modern web application. It ensures that
## Before You Start
Before you proceed, you will need the following:
-- A [Directus project](https://directus.io/docs/) with admin access.
+- A [Directus project](https://directus.com/docs/) with admin access.
- Fundamental understanding of Svelte.
- Optional but recommended: Familiarity with data modeling in Directus.
diff --git a/content/frameworks/04.sveltekit/04.dynamic-forms.md b/content/frameworks/04.sveltekit/04.dynamic-forms.md
index 55e0a5aa..eca0d104 100644
--- a/content/frameworks/04.sveltekit/04.dynamic-forms.md
+++ b/content/frameworks/04.sveltekit/04.dynamic-forms.md
@@ -27,7 +27,7 @@ You will need:
## Set Up Your Directus Project
-In this tutorial, Docker will be used for the setup. To get started, follow the [Docker setup instructions](https://directus.io/docs/getting-started/overview).
+In this tutorial, Docker will be used for the setup. To get started, follow the [Docker setup instructions](https://directus.com/docs/getting-started/overview).
You also need to make sure to configure CORS. Update your `docker-compose.yml` file as follows:
diff --git a/content/frameworks/04.sveltekit/08.live-preview.md b/content/frameworks/04.sveltekit/08.live-preview.md
index 89c5aa1b..5697bc6e 100644
--- a/content/frameworks/04.sveltekit/08.live-preview.md
+++ b/content/frameworks/04.sveltekit/08.live-preview.md
@@ -26,7 +26,7 @@ You will need:
## Set Up Your Directus Project
-In this tutorial, Docker will be used for the setup. To get started, follow the [Docker setup instructions](https://docs.directus.io/self-hosted/docker-guide.html).
+In this tutorial, Docker will be used for the setup. To get started, follow the [Docker setup instructions](https://directus.com/docs/self-hosting/overview).
You also need to make sure to configure CORS and set your content security policy to allow access, as Directus preview uses an iFrame. Update your `docker-compose.yml` file as follows:
diff --git a/content/frameworks/04.sveltekit/09.multilingual-content.md b/content/frameworks/04.sveltekit/09.multilingual-content.md
index d7075b23..109eea39 100644
--- a/content/frameworks/04.sveltekit/09.multilingual-content.md
+++ b/content/frameworks/04.sveltekit/09.multilingual-content.md
@@ -25,7 +25,7 @@ You will need:
## Set Up Your Directus Project
-In this tutorial, Docker will be used for the setup. To get started, follow the [Docker setup instructions](https://docs.directus.io/self-hosted/docker-guide.html).
+In this tutorial, Docker will be used for the setup. To get started, follow the [Docker setup instructions](https://directus.com/docs/self-hosting/overview).
You also need to make sure to configure CORS. Update your `docker-compose.yml` file as follows:
@@ -100,7 +100,7 @@ export const client = createDirectus(API_URL).with(rest());
## Set Up Content Translations
-To set up content translations, add a field to the `posts` collection of type [Translations](https://directus.io/docs/guides/data-model/relationships). This will create two new collections, `languages` and `posts_translations`.
+To set up content translations, add a field to the `posts` collection of type [Translations](https://directus.com/docs/guides/data-model/relationships). This will create two new collections, `languages` and `posts_translations`.

diff --git a/content/frameworks/04.sveltekit/10.reusable-blocks.md b/content/frameworks/04.sveltekit/10.reusable-blocks.md
index f4b335b6..8f50391f 100644
--- a/content/frameworks/04.sveltekit/10.reusable-blocks.md
+++ b/content/frameworks/04.sveltekit/10.reusable-blocks.md
@@ -13,7 +13,7 @@ navigation:
title: Reusable Blocks
---
-[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.io/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into our Svelte website.
+[Having used Directus as a Headless CMS to create individual blocks that can be re-used on different pages](https://directus.com/docs/tutorials/projects/create-reusable-blocks-with-many-to-any-relationships), let's integrate them into our Svelte website.
## Before You Start
diff --git a/content/frameworks/04.sveltekit/11.visual-editor.md b/content/frameworks/04.sveltekit/11.visual-editor.md
index e4fec654..886bb94e 100644
--- a/content/frameworks/04.sveltekit/11.visual-editor.md
+++ b/content/frameworks/04.sveltekit/11.visual-editor.md
@@ -51,7 +51,7 @@ Choose Community templates, and select the CMS template. Fill in your Directus U
### Initialize Your Project
-Follow the instructions for setting up a SvelteKit project in the [Create a CMS using Directus and SvelteKit](https://directus.io/docs/frameworks/sveltekit/build-a-cms). Complete the remainder of the steps in this article to create a SvelteKit project that is ready to integrate with the Directus Visual Editor.
+Follow the instructions for setting up a SvelteKit project in the [Create a CMS using Directus and SvelteKit](https://directus.com/docs/frameworks/sveltekit/build-a-cms). Complete the remainder of the steps in this article to create a SvelteKit project that is ready to integrate with the Directus Visual Editor.
You can get the full code for this article [here](https://github.com/oyedeletemitope/build_a_dynamic_cms_directus) to skip the setup and go straight to the integration.
diff --git a/content/getting-started/1.overview.md b/content/getting-started/1.overview.md
index c2668dee..53007684 100644
--- a/content/getting-started/1.overview.md
+++ b/content/getting-started/1.overview.md
@@ -35,6 +35,6 @@ If you want to run Directus on your own infrastructure, start with [Create a pro
See all deployment options (Cloud, Docker, and platform-specific guides).
::
-Need advanced configuration, unlimited scalability, and dedicated support?Ā **[Contact us to check out Directus Enterprise Cloud](https://directus.io/contact).**
+Need advanced configuration, unlimited scalability, and dedicated support?Ā **[Contact us to check out Directus Enterprise Cloud](https://directus.com/contact).**
:partial{content="license"}
diff --git a/content/getting-started/6.upload-files.md b/content/getting-started/6.upload-files.md
index bf8958e2..2ab87fad 100644
--- a/content/getting-started/6.upload-files.md
+++ b/content/getting-started/6.upload-files.md
@@ -16,7 +16,7 @@ This guide will cover importing a file via URL, requesting assets, and using tra
In the module bar, click :icon{name="material-symbols:folder-outline-rounded"} to go to the files module. Click the :icon{name="material-symbols:add"} button and :icon{name="material-symbols:link"} to import a file via URL.
-Use `https://directus.io/docs/img/examples/files-import.png` and the file will be uploaded to your asset storage.
+Use any publicly-accessible image URL and the file will be uploaded to your asset storage.
## Access a File
diff --git a/content/getting-started/9.resources.md b/content/getting-started/9.resources.md
index 26e341b9..88ceeaeb 100644
--- a/content/getting-started/9.resources.md
+++ b/content/getting-started/9.resources.md
@@ -28,7 +28,7 @@ title: Resources & Links
**Directus Cloud**: The best way to get your Directus project up and running.
::
-::callout{icon="material-symbols:link" to="https://directus.io/contact"}
+::callout{icon="material-symbols:link" to="https://directus.com/contact"}
**Enterprise Cloud**: Custom-tailored solutions for industrial-scale projects.
::
@@ -39,15 +39,15 @@ title: Resources & Links
## Directus Websites
-::callout{icon="material-symbols:link" to="https://directus.io"}
+::callout{icon="material-symbols:link" to="https://directus.com"}
**Website**: General information, resources, and team info.
::
-::callout{icon="material-symbols:link" to="https://directus.io/tv"}
+::callout{icon="material-symbols:link" to="https://directus.com/tv"}
**Directus TV**: Hours of video series across dozens of shows.
::
-::callout{icon="material-symbols:link" to="https://directus.io/plus"}
+::callout{icon="material-symbols:link" to="https://directus.com/resources/directus-plus-full-launch"}
**Directus+**: Starter kits to help you build projects quicker.
::
@@ -85,6 +85,6 @@ title: Resources & Links
**X**: The latest product info and sneak-peeks.
::
-::callout{icon="material-symbols:link" to="https://bsky.app/profile/directus.io"}
+::callout{icon="material-symbols:link" to="https://bsky.app/profile/directus.com"}
**Bluesky**: Be part of the conversation with our team.
::
diff --git a/content/guides/04.connect/3.query-parameters.md b/content/guides/04.connect/3.query-parameters.md
index 4169ab9a..82c3d20b 100644
--- a/content/guides/04.connect/3.query-parameters.md
+++ b/content/guides/04.connect/3.query-parameters.md
@@ -597,7 +597,7 @@ const result = await directus.request(
## VersionRaw
-Specifies to return relational delta changes as a [detailed output](https://directus.io/docs/guides/connect/relations#creating-updating-deleting) on a version record.
+Specifies to return relational delta changes as a [detailed output](https://directus.com/docs/guides/connect/relations#creating-updating-deleting) on a version record.
::code-group
diff --git a/content/guides/09.extensions/2.api-extensions/5.sandbox.md b/content/guides/09.extensions/2.api-extensions/5.sandbox.md
index 3b76b7f1..26cc17d3 100644
--- a/content/guides/09.extensions/2.api-extensions/5.sandbox.md
+++ b/content/guides/09.extensions/2.api-extensions/5.sandbox.md
@@ -88,9 +88,9 @@ The `request` function will make a network request to specified URLs.
```js
import { request } from 'directus:api';
-const getRequest = await request('https://directus.io');
+const getRequest = await request('https://directus.com');
-const postRequest = await request('https://directus.io', {
+const postRequest = await request('https://directus.com', {
method: 'POST',
headers: { Authorization: 'Bearer 1234567890' },
body: { key: 'value' }
@@ -107,7 +107,7 @@ The `request` function requires the `request` scope. You must specify which meth
"requestedScopes": {
"request": {
"methods": ["GET", "POST"],
- "urls": ["https://directus.io/*"]
+ "urls": ["https://directus.com/*"]
}
}
```
diff --git a/content/guides/09.extensions/5.marketplace/1.publishing.md b/content/guides/09.extensions/5.marketplace/1.publishing.md
index 46f3b3bb..02ad7cba 100644
--- a/content/guides/09.extensions/5.marketplace/1.publishing.md
+++ b/content/guides/09.extensions/5.marketplace/1.publishing.md
@@ -110,4 +110,4 @@ Select a custom icon from Google's [Material Icons](https://fonts.google.com/ico
## Removing and Reporting Extensions
Having our own registry means we can remove items, which we will do if we are made aware that extensions are malicious
-or at the request of extension authors. If you wish to have an extension removed for either of these reasons, please get in touch with marketplace@directus.io
+or at the request of extension authors. If you wish to have an extension removed for either of these reasons, please get in touch with marketplace@directus.com
diff --git a/content/guides/12.integrations/1.n8n/directus-n8n-actions.md b/content/guides/12.integrations/1.n8n/directus-n8n-actions.md
index dc3cde7c..448e525e 100644
--- a/content/guides/12.integrations/1.n8n/directus-n8n-actions.md
+++ b/content/guides/12.integrations/1.n8n/directus-n8n-actions.md
@@ -135,7 +135,7 @@ For **Get Many** operations on Users and Files, use the **Simplify** option to g
## Troubleshooting
-When working with Directus API through n8n, you may encounter various error codes. For a comprehensive list of Directus error codes and their meanings, refer to the [official Directus Error Codes documentation](https://directus.io/docs/guides/connect/errors).
+When working with Directus API through n8n, you may encounter various error codes. For a comprehensive list of Directus error codes and their meanings, refer to the [official Directus Error Codes documentation](https://directus.com/docs/guides/connect/errors).
### Error Handling
diff --git a/content/guides/12.integrations/1.n8n/directus-n8n-advanced.md b/content/guides/12.integrations/1.n8n/directus-n8n-advanced.md
index 790ea44a..890741b0 100644
--- a/content/guides/12.integrations/1.n8n/directus-n8n-advanced.md
+++ b/content/guides/12.integrations/1.n8n/directus-n8n-advanced.md
@@ -118,7 +118,7 @@ Raw operations allow you to use Directus's complete filter syntax. Specify filte
::callout{icon="material-symbols:info-outline"}
**Filter Documentation**
-For complete filter syntax, operators, and examples, see the [Directus Filter Rules documentation](https://directus.io/docs/guides/connect/filter-rules).
+For complete filter syntax, operators, and examples, see the [Directus Filter Rules documentation](https://directus.com/docs/guides/connect/filter-rules).
::
**Example: Complex filter with logical operators**
@@ -190,7 +190,7 @@ Raw operations support all Directus query parameters. Include them in your JSON
::callout{icon="material-symbols:info-outline"}
**Query Parameters Documentation**
-For complete query parameter documentation, see the [Directus Query Parameters documentation](https://directus.io/docs/guides/connect/query-parameters).
+For complete query parameter documentation, see the [Directus Query Parameters documentation](https://directus.com/docs/guides/connect/query-parameters).
::
## Working with Relations
diff --git a/content/guides/12.integrations/2.clay/directus-clay-data-operations.md b/content/guides/12.integrations/2.clay/directus-clay-data-operations.md
index dc067f73..1f4f4eb4 100644
--- a/content/guides/12.integrations/2.clay/directus-clay-data-operations.md
+++ b/content/guides/12.integrations/2.clay/directus-clay-data-operations.md
@@ -79,7 +79,7 @@ Number of items to skip (e.g., `0`, `50`, `100`)
## Troubleshooting
-When working with Directus API through Clay, you may encounter various error codes. For a comprehensive list of Directus error codes and their meanings, refer to the [official Directus Error Codes documentation](https://directus.io/docs/guides/connect/errors).
+When working with Directus API through Clay, you may encounter various error codes. For a comprehensive list of Directus error codes and their meanings, refer to the [official Directus Error Codes documentation](https://directus.com/docs/guides/connect/errors).
### Common Issues
diff --git a/content/guides/12.integrations/3.zapier/actions.md b/content/guides/12.integrations/3.zapier/actions.md
index 704ae030..3f884734 100644
--- a/content/guides/12.integrations/3.zapier/actions.md
+++ b/content/guides/12.integrations/3.zapier/actions.md
@@ -84,7 +84,7 @@ By default, Zapier returns only the **first result** from Find actions. To proce
::callout{icon="material-symbols:lightbulb-outline"}
**Advanced Filtering in Find**
-The **Filter (JSON)** field in Find actions supports Directus's complete filter syntax, including logical operators (`_and`, `_or`), relational field filtering, and all filter operators. For complete filter syntax and examples, see the [Directus Filter Rules documentation](https://directus.io/docs/guides/connect/filter-rules).
+The **Filter (JSON)** field in Find actions supports Directus's complete filter syntax, including logical operators (`_and`, `_or`), relational field filtering, and all filter operators. For complete filter syntax and examples, see the [Directus Filter Rules documentation](https://directus.com/docs/guides/connect/filter-rules).
::
**Example: Complex filter**
@@ -225,7 +225,7 @@ are correct.
When working with Directus API through Zapier, you may encounter various error codes. For a comprehensive list of
Directus error codes and their meanings, refer to the
-[official Directus Error Codes documentation](https://directus.io/docs/guides/connect/errors).
+[official Directus Error Codes documentation](https://directus.com/docs/guides/connect/errors).
### Error Handling
diff --git a/content/guides/12.integrations/3.zapier/advanced.md b/content/guides/12.integrations/3.zapier/advanced.md
index 423099a1..43a43755 100644
--- a/content/guides/12.integrations/3.zapier/advanced.md
+++ b/content/guides/12.integrations/3.zapier/advanced.md
@@ -195,5 +195,5 @@ For bulk operations:
## Additional Resources
-- [Directus Filter Rules](https://directus.io/docs/guides/connect/filter-rules) - Complete filter syntax and operators
-- [Directus Query Parameters](https://directus.io/docs/guides/connect/query-parameters) - All available query parameters
+- [Directus Filter Rules](https://directus.com/docs/guides/connect/filter-rules) - Complete filter syntax and operators
+- [Directus Query Parameters](https://directus.com/docs/guides/connect/query-parameters) - All available query parameters
diff --git a/content/licensing/1.overview.md b/content/licensing/1.overview.md
index 324cefea..ff0e7ecd 100644
--- a/content/licensing/1.overview.md
+++ b/content/licensing/1.overview.md
@@ -7,13 +7,13 @@ navigation:
title: Overview
---
-Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.io/MSCL). Self-hosted instances without a license run on the **core tier**. To unlock additional capabilities or higher limits, add a license to your instance.
+Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.com/license). Self-hosted instances without a license run on the **core tier**. To unlock additional capabilities or higher limits, add a license to your instance.
Free commercial use is available through the **[Open Innovation Grant](https://directus.com/oig)** for entities with less than $5M in annual revenue and fewer than 50 employees. Eligibility is assessed based on the legal entities whose representatives log into the Directus Studio. Full terms are set out in the grant usage agreement.
Quick links:
-- [Enquire about a commercial license](https://directus.io/contact)
+- [Enquire about a commercial license](https://directus.com/contact)
- [Upgrading to Directus 12 (existing customer)](#upgrading-to-directus-12)
## `PUBLIC_URL` and Licensing
@@ -157,7 +157,7 @@ Resolving the license ā either by adding a valid key, reducing usage through t
## Upgrading to Directus 12
::callout{icon="material-symbols:info-outline"}
-**Existing customers** should contact [licensing@directus.io](mailto:licensing@directus.io) to obtain your license before upgrading, or if you encounter any issues.
+**Existing customers** should contact [licensing@directus.com](mailto:licensing@directus.com) to obtain your license before upgrading, or if you encounter any issues.
::
When an existing instance upgrades to Directus 12 without a license, behavior depends on current usage:
diff --git a/content/releases/2.changelog.md b/content/releases/2.changelog.md
index cdd73dc0..9525856b 100644
--- a/content/releases/2.changelog.md
+++ b/content/releases/2.changelog.md
@@ -7,7 +7,7 @@ You can find our complete [Release Notes on GitHub.](https://github.com/directus
Each month, some of the Directus team talk through whatās new including core releases, new content and extensions, plus guests showcasing community highlights.
-[Watch The Changelog on Directus TV.](https://directus.io/tv/the-changelog)
+[Watch The Changelog on Directus TV.](https://directus.com/tv/the-changelog)
## March 2026
@@ -23,7 +23,7 @@ Each month, some of the Directus team talk through whatās new including core r
- [Directus 11.15.0](https://github.com/directus/directus/releases/tag/v11.15.0) has some potential breaking changes: Attached prompts, content items, and visual editor elements to AI Assistant Context.
- Added a deployment module for triggering deploys in Vercel.
-- Added [collaborative editing](https://directus.io/docs/guides/content/collaborative-editing) capability to the studio.
+- Added [collaborative editing](https://directus.com/docs/guides/content/collaborative-editing) capability to the studio.
- Added LLM support for Google and OpenAI compatible providers.
- Improved the revision review modal to toggle comparing the revision to the previous revision.
- Added relational field support on x-axis of bar chart in the Insights module.
@@ -33,7 +33,7 @@ Each month, some of the Directus team talk through whatās new including core r
- [Directus 11.14.0](https://github.com/directus/directus/releases/tag/v11.14.0) has some potential breaking changes: Removed sidebar states from app store.
- Added support for downloading multiple files and folders.
-- Added [AI Assistant](https://directus.io/docs/guides/ai/assistant).
+- Added [AI Assistant](https://directus.com/docs/guides/ai/assistant).
- Added the ability to resize and hide both sidebars.
- Added header interface.
@@ -77,13 +77,13 @@ This month we had two releases.
- added the ability to have a toggle variable input for the _in and _nin filters
- Fixed relation creation to files and added filters to Files and Image interfaces
- ip, userAgent and origin are now tracked in the activity records for ws activity
-- The [Directus MCP Server](https://directus.io/docs/guides/ai/mcp) enables you to easily interact with your Directus data inside your favorite AI tools like Claude Desktop, Cursor, or Raycast.
+- The [Directus MCP Server](https://directus.com/docs/guides/ai/mcp) enables you to easily interact with your Directus data inside your favorite AI tools like Claude Desktop, Cursor, or Raycast.
## May 2025
- [Directus 11.7.0](https://github.com/directus/directus/releases/tag/v11.7.0) has a potential breaking change: MySQL 5.7 is no longer supported.
- In [11.7.0](https://github.com/directus/directus/releases/tag/v11.7.0) a Schema Builder package was published for mocking database schemas.
-- The [Visual Editor](https://directus.io/docs/guides/content/visual-editor) has been updated, with improved UX & UI, adding the ability to add a dynamic URL as a route parameter and the ability to display the title of the current page in the URL drop-down and to reflect the URL of the current page as a route parameter of the Visual Editor module.
+- The [Visual Editor](https://directus.com/docs/guides/content/visual-editor) has been updated, with improved UX & UI, adding the ability to add a dynamic URL as a route parameter and the ability to display the title of the current page in the URL drop-down and to reflect the URL of the current page as a route parameter of the Visual Editor module.
- Our revamped [SEO Plugin](https://github.com/directus-labs/extensions/tree/main/packages/seo-plugin) can now analyze your content for keywords to help cover even more SEO use cases.
- The [Super Header Interface](https://github.com/directus-labs/extensions/tree/main/packages/super-header-interface) adds contextual info, help, and actions right where users need it most - inside the CMS. Updated version includes support for relational fields and translating help content in any language.
## April 2025
@@ -175,7 +175,7 @@ This month we had two releases.
## August 2024
- [Directus 11.0.0](https://github.com/directus/directus/releases/v11.0.0) contains a new permissions system that's based on access policies, nested roles, and a switch to mysql2.
-- [Directus Cloud pricing changes](https://directus.io/blog/a-change-in-our-pricing-july-2024) including the introduction of a new starter tier at $15/month.
+- [Directus Cloud pricing changes](https://directus.com/resources/a-change-in-our-pricing-july-2024) including the introduction of a new starter tier at $15/month.
- [Audio player interface](https://github.com/directus-labs/extensions/blob/main/packages/audio-player-interface/README.md) extension allows an audio source to be selected and displays an audio player from an URL or a local file from Directus.
- [Video player interface](https://github.com/directus-labs/extensions/blob/main/packages/video-player-interface/README.md) extension allows a video from YouTube, Vimeo or a local file from Directus to be selected and a video player to be displayed.
- [PDF viewer interface](https://github.com/directus-labs/extensions/blob/main/packages/pdf-viewer-interface/readme.md) extension enables a view of PDF files from within the item editor.
diff --git a/content/releases/3.breaking-changes/3.version-12.md b/content/releases/3.breaking-changes/3.version-12.md
index 052454a6..50a287e8 100644
--- a/content/releases/3.breaking-changes/3.version-12.md
+++ b/content/releases/3.breaking-changes/3.version-12.md
@@ -21,7 +21,7 @@ Directus 12 introduces active license enforcement. Self-hosted instances run on
The grace period exists to ensure uninterrupted service for existing customers who upgrade before obtaining a license. If your instance is above core tier limits when you upgrade to Directus 12, you enter a **30-day grace period** during which everything continues to operate normally. Admins see a reminder on every login.
::callout{icon="material-symbols:info-outline"}
-**Existing customers** should contact [licensing@directus.io](mailto:licensing@directus.io) to obtain your license. This is the right action for any existing customer who has not yet received a license, or upgrades and sees the grace period reminder.
+**Existing customers** should contact [licensing@directus.com](mailto:licensing@directus.com) to obtain your license. This is the right action for any existing customer who has not yet received a license, or upgrades and sees the grace period reminder.
::
If you are not an existing customer and do not intend to add a license, reduce usage to within core limits before the grace period ends. Note that free commercial use may be available through the [Open Innovation Grant](https://directus.com/oig).
diff --git a/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-astro.md b/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-astro.md
index 22cc4c8b..de15336e 100644
--- a/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-astro.md
+++ b/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-astro.md
@@ -25,7 +25,7 @@ You will need:
## Enable Websockets in Directus
-Directus uses websockets to enable realtime capabilities. If you are using the [Directus Cloud](https://directus.io/cloud), websockets are enabled by default. If you are [self-hosting Directus](https://directus.io/docs/self-hosting/), you will need to enable websockets in your `directus` config file.
+Directus uses websockets to enable realtime capabilities. If you are using the [Directus Cloud](https://directus.com/start), websockets are enabled by default. If you are [self-hosting Directus](https://directus.com/docs/self-hosting/overview), you will need to enable websockets in your `directus` config file.
To enable websockets, update your `docker-compose.yml` config file to include the following:
@@ -49,7 +49,7 @@ After which you can go to the optional fields and activate the following:
### Edit Public Policy
-To allow unauthenticated users to view the posts collection, you need to modify the public [access policy](https://directus.io/docs/guides/auth/access-control) to offer read access. Ideally, in a real project, you should create a new policy and authenticate users to Directus before allowing them access to your content.
+To allow unauthenticated users to view the posts collection, you need to modify the public [access policy](https://directus.com/docs/guides/auth/access-control) to offer read access. Ideally, in a real project, you should create a new policy and authenticate users to Directus before allowing them access to your content.
To enable access, go to **Settings** -> **Access Policies** -> **Public**, and under Permissions, add `messages` with full access for `create` and `read`.
@@ -280,7 +280,7 @@ Navigate to `http://localhost:4321/` and you will be provided you with a UI that

-To authenticate the realtime client using the handshake mode, you will first need to authenticate the REST client using the email and password from the login form. Then, you can use the [handshake mode](https://directus.io/docs/guides/realtime/authentication#handshake-mode) to authenticate the realtime client right after calling `directus.connect()`.
+To authenticate the realtime client using the handshake mode, you will first need to authenticate the REST client using the email and password from the login form. Then, you can use the [handshake mode](https://directus.com/docs/guides/realtime/authentication#handshake-mode) to authenticate the realtime client right after calling `directus.connect()`.
To do that, inside of the `Chat.tsx` file, create a `initializeWebSocket` function that will handle the websocket connection and authentication:
@@ -334,7 +334,7 @@ This will call the `initializeWebSocket` function after successfully logging in
### Subscribe to Incoming Messages
-At the moment, `directus.onWebSocket("message", {})` receives all messages, however, Directus SDK provides a much better approach to subscribe to specific events. In this case, you can subscribe to the `messages` collection to receive specific fields from any messages as they are created and uniquely identify the subscription with a [UID](https://directus.io/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [best practice](https://directus.io/docs/guides/realtime/subscriptions#using-uids).
+At the moment, `directus.onWebSocket("message", {})` receives all messages, however, Directus SDK provides a much better approach to subscribe to specific events. In this case, you can subscribe to the `messages` collection to receive specific fields from any messages as they are created and uniquely identify the subscription with a [UID](https://directus.com/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [best practice](https://directus.com/docs/guides/realtime/subscriptions#using-uids).
To handle incoming messages, start by creating a `subscribeToMessages` function inside the `Chat.tsx` component:
diff --git a/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-nuxt.md b/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-nuxt.md
index 72e35c03..285d30af 100644
--- a/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-nuxt.md
+++ b/content/tutorials/2.projects/build-a-realtime-chat-app-using-directus-and-nuxt.md
@@ -198,7 +198,7 @@ Then, in the template, add a form to capture the user's email and password and d
If you run `npm run dev` and navigate to `http://localhost:3000` you should see a login form.
-Directus Realtime (Websockets) will be used to authenticate the user as well as send and receive messages. To connect the client to Directus use [handshake mode](https://directus.io/docs/guides/realtime/authentication#handshake-mode) which requires a connection followed quickly and immediately by an authentication.
+Directus Realtime (Websockets) will be used to authenticate the user as well as send and receive messages. To connect the client to Directus use [handshake mode](https://directus.com/docs/guides/realtime/authentication#handshake-mode) which requires a connection followed quickly and immediately by an authentication.
After the variable definitions in `pages/index.vue` script setup add the following code:
@@ -253,7 +253,7 @@ Visit `http://your-website-url` and try logging in with the user you created in
### Subscribe to Incoming Messages
-Although `$directus.onWebSocket('message', (message) => {}` will receive all messages, the Directus SDK provides a more convenient way to subscribe to specific events. In this case the client can subscribe to the `messages` collection to receive specific fields from any messages as they are created and uniquely identify our subscription with a [UID](https://directus.io/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [best practice](https://directus.io/docs/guides/realtime/subscriptions#using-uids).
+Although `$directus.onWebSocket('message', (message) => {}` will receive all messages, the Directus SDK provides a more convenient way to subscribe to specific events. In this case the client can subscribe to the `messages` collection to receive specific fields from any messages as they are created and uniquely identify our subscription with a [UID](https://directus.com/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [best practice](https://directus.com/docs/guides/realtime/subscriptions#using-uids).
At the bottom of the setup script in `pages/index.vue` add the following code:
@@ -411,7 +411,7 @@ Visit your website url again and refresh the page. You should see the last 10 me
Directus Realtime uses websockets to maintain a connection to the server. Behind the scenes Directus is sending a heartbeat or ping message every 30 seconds to keep the connection alive. If the connection is lost, then the user will not receive updates. Nuxt already responds to this message in `receiveMessage` by sending a pong message back to Directus.
-To ensure a stable connection [use the refresh token from handshake mode](https://directus.io/docs/guides/realtime/authentication#handshake-mode) to re-authenticate the user and re-subscribe to the messages collection.
+To ensure a stable connection [use the refresh token from handshake mode](https://directus.com/docs/guides/realtime/authentication#handshake-mode) to re-authenticate the user and re-subscribe to the messages collection.
At the bottom of the script setup section in `pages/index.vue` add the following code:
diff --git a/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-next.md b/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-next.md
index 17c2ffd5..7eddb37b 100644
--- a/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-next.md
+++ b/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-next.md
@@ -33,7 +33,7 @@ After which you can go to the optional fields and activate the following:
### Edit Public Policy
-To allow viewing the posts collections and field listings as an unauthenticated user, you will need to modify the public [access policy](https://directus.io/docs/guides/auth/access-control). In a real project, you would want to create a new policy and authenticate users to Directus before allowing them access to your content.
+To allow viewing the posts collections and field listings as an unauthenticated user, you will need to modify the public [access policy](https://directus.com/docs/guides/auth/access-control). In a real project, you would want to create a new policy and authenticate users to Directus before allowing them access to your content.
To do this, navigate to **Settings** -> **Access Policies** -> **Public** and under Permissions add `messages` with full access for `create` and `read`.
@@ -189,7 +189,7 @@ If you run `npm run dev` and navigate to `http://localhost:3000` you should see

-To authenticate the realtime client using the default handshake mode, you will first need to authenticate the REST client using the email and password that the user provides in the login form. Then, you can use the [handshake mode](https://directus.io/docs/guides/realtime/authentication#handshake-mode) to authenticate the realtime client right after calling `directus.connect()`.
+To authenticate the realtime client using the default handshake mode, you will first need to authenticate the REST client using the email and password that the user provides in the login form. Then, you can use the [handshake mode](https://directus.com/docs/guides/realtime/authentication#handshake-mode) to authenticate the realtime client right after calling `directus.connect()`.
To do that, add the following functions to the Home component:
@@ -234,7 +234,7 @@ Now, visit `http://localhost:3000` and try logging in with the user you created
### Subscribe to Incoming Messages
-Although `directus.onWebSocket('message', {})` will receive all messages, the Directus SDK provides a more convenient way to subscribe to specific events. In this case, you can subscribe to the `messages` collection to receive specific fields from any messages as they are created and uniquely identify your subscription with a [UID](https://directus.io/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [best practice](https://directus.io/docs/guides/realtime/subscriptions#using-uids).
+Although `directus.onWebSocket('message', {})` will receive all messages, the Directus SDK provides a more convenient way to subscribe to specific events. In this case, you can subscribe to the `messages` collection to receive specific fields from any messages as they are created and uniquely identify your subscription with a [UID](https://directus.com/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [best practice](https://directus.com/docs/guides/realtime/subscriptions#using-uids).
To do that, add the following code to the Home component:
@@ -451,7 +451,7 @@ You can now visit your website url again and try logging in again. You should se
As you have seen before, Directus Realtime uses websockets to maintain a connection to the server. Behind the scenes, the Directus instance sends a heartbeat or ping message every 30 seconds to keep the connection alive. If the connection is lost, then the client will not receive updates. You already respond to this message in `receiveMessage` by sending a pong message back to Directus.
-However, to ensure a more stable connection, you can [use the refresh token from handshake mode](https://directus.io/docs/guides/realtime/authentication#handshake-mode) to re-authenticate the user and re-subscribe to the messages collection when the access token expires.
+However, to ensure a more stable connection, you can [use the refresh token from handshake mode](https://directus.com/docs/guides/realtime/authentication#handshake-mode) to re-authenticate the user and re-subscribe to the messages collection when the access token expires.
To do that, update the `receiveMessage` function to handle the `expired` auth message appropriately:
diff --git a/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-sveltekit.md b/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-sveltekit.md
index 293cc279..b3cae580 100644
--- a/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-sveltekit.md
+++ b/content/tutorials/2.projects/build-a-realtime-chat-app-with-directus-and-sveltekit.md
@@ -28,9 +28,9 @@ You also need to configure CORS and WebSocket. Update your `docker-compose.yml`
```bash
WEBSOCKETS_ENABLED: "true"
-CORS_ENABLED: "true"
-CORS_ORIGIN: "http://localhost:5173"
-CORS_CREDENTIALS: "true"
+CORS_ENABLED: "true"
+CORS_ORIGIN: "http://localhost:5173"
+CORS_CREDENTIALS: "true"
```
### Create a Collection
@@ -57,7 +57,7 @@ Navigate to Settings -> Access Policies -> Public. Under `messages` grant full a
To start building, you need to install SvelteKit and Directus sdk. Run this command to install SvelteKit:
```bash
-npx sv create realtime-app
+npx sv create realtime-app
```
When prompted, select SvelteKit minimal as the template. Do not add type checking, as this tutorial is implemented in JavaScript. Your output should look like this:
@@ -209,10 +209,10 @@ Create a file called `+page.svelte` file in the `./src/route` directory. Add the
```
-In the code above we use WebSocket authentication via [handshake mode](https://directus.io/docs/guides/realtime/authentication#handshake-mode) to connect to Directus in real-time. When the WebSocket starts, the app sends authentication details to stay connected. The authentication function handles login, stores tokens, loads recent messages, and reconnects automatically if the connection drops or authentication expires.
+In the code above we use WebSocket authentication via [handshake mode](https://directus.com/docs/guides/realtime/authentication#handshake-mode) to connect to Directus in real-time. When the WebSocket starts, the app sends authentication details to stay connected. The authentication function handles login, stores tokens, loads recent messages, and reconnects automatically if the connection drops or authentication expires.
### Subscribe to Incoming Messages
-Add the following code at the bottom of the `script` in your `./src/routes/+page.svelte`:
+Add the following code at the bottom of the `script` in your `./src/routes/+page.svelte`:
```javascript
async function subscribeToMessages() {
@@ -237,9 +237,9 @@ async function subscribeToMessages() {
}
```
-The `subscribeToMessages()` function sets up a real-time listener for new messages in Directus using WebSocket subscriptions. It subscribes to the `messages` collection, requesting only the message ID, content, and senderās first name while also including a [UID](https://directus.io/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [good practice](https://directus.io/docs/guides/realtime/subscriptions#using-uids)
+The `subscribeToMessages()` function sets up a real-time listener for new messages in Directus using WebSocket subscriptions. It subscribes to the `messages` collection, requesting only the message ID, content, and senderās first name while also including a [UID](https://directus.com/docs/guides/realtime/actions#use-uids-to-better-understand-responses) for [good practice](https://directus.com/docs/guides/realtime/subscriptions#using-uids)
-This allows the app to match responses with specific requests, improving reliability when handling multiple subscriptions. As new messages arrive, the function processes each event in a loop and calls `receiveMessage(event)`, ensuring real-time updates in the app.
+This allows the app to match responses with specific requests, improving reliability when handling multiple subscriptions. As new messages arrive, the function processes each event in a loop and calls `receiveMessage(event)`, ensuring real-time updates in the app.
## Send Messages
To begin sending messages, add the following code at the bottom of the script in your `.src/routes/+page.svelte` file
@@ -271,7 +271,7 @@ const sendMessage = async (event) => {
}
};
```
-The `sendMessage` function handles sending a new message via WebSocket in Directus. It first prevents the default form submission behavior and checks if the message content is empty or if the user is not logged in, in which case it stops execution.
+The `sendMessage` function handles sending a new message via WebSocket in Directus. It first prevents the default form submission behavior and checks if the message content is empty or if the user is not logged in, in which case it stops execution.
If the WebSocket is not connected, it attempts to reconnect before sending the message. It then sends the message as a create action in the "messages" collection using Directus' WebSocket API. If successful, it logs confirmation and clears the message input. If sending fails, it logs the error, and if the WebSocket is disconnected, a reconnection attempt is triggered.
@@ -298,10 +298,10 @@ async function receiveMessage(newMessage) {
```
The receiveMessage function processes incoming WebSocket messages and ensures they belong to the correct subscription by checking the UID before updating the app.
-If valid, it extracts the message ID, content, and senderās first name, then updates the message list.
+If valid, it extracts the message ID, content, and senderās first name, then updates the message list.
## Display Incoming Messages
-To display the messages, you need to add the UI templates for the chats. Right after the script tag in your `./src/routes/+page.svelte`, add the following code:
+To display the messages, you need to add the UI templates for the chats. Right after the script tag in your `./src/routes/+page.svelte`, add the following code:
```javascript
@@ -448,7 +448,7 @@ function attemptReconnect() {
}
```
-The `setupWebSocketEventHandlers()` and `attemptReconnect()` functions ensures a stable WebSocket connection by handling authentication expiration and keeping the session alive respectively.
+The `setupWebSocketEventHandlers()` and `attemptReconnect()` functions ensures a stable WebSocket connection by handling authentication expiration and keeping the session alive respectively.
## Test the Application
To test the application, run this command:
@@ -460,7 +460,7 @@ Afterward, open **http://localhost:5173/** in your browser. You should see a log

-Next, you'll see an empty chat. Go to the Directus dashboard and create a new message in the 'Messages' collection. After that, you should see the message displayed in the chat box, as shown in the image below.
+Next, you'll see an empty chat. Go to the Directus dashboard and create a new message in the 'Messages' collection. After that, you should see the message displayed in the chat box, as shown in the image below.

diff --git a/content/tutorials/2.projects/build-the-leap-week-registration-and-referral-system-.md b/content/tutorials/2.projects/build-the-leap-week-registration-and-referral-system-.md
index d65e7556..4eabe643 100644
--- a/content/tutorials/2.projects/build-the-leap-week-registration-and-referral-system-.md
+++ b/content/tutorials/2.projects/build-the-leap-week-registration-and-referral-system-.md
@@ -10,7 +10,7 @@ description: Learn how we built our referral-based ticketing and raffle system w
---
I recently shipped the ticketing system for [Leap Week 3](https://leapweek.dev) - our week long launch celebration for developers at Directus. There are product announcements, workshops, giveaways, and more.
-While the live events are broadcast via [Directus TV](https://directus.io/tv), the registration has typically been powered by existing ticketing platforms. This time, we decided to build our own, powered by Directus.
+While the live events are broadcast via [Directus TV](https://directus.com/tv), the registration has typically been powered by existing ticketing platforms. This time, we decided to build our own, powered by Directus.
This project also used [Nuxt](https://nuxt.com) and Vue on the frontend, along with [Nuxt UI](https://ui.nuxt.com) and [Tailwind CSS](https://tailwindcss.com/) for a lot of the basic components like buttons and form inputs. It is hosted on Netlify with image generation through OpenAIās [Dallā¢E 3](https://openai.com/index/dall-e-3/) model.
@@ -199,9 +199,9 @@ The Netlify support team was right there to help us out. They increased our limi
## Shortening URLs
-Originally we wanted to run this off a subdomain of the site. But [`https://leapweek.directus.io/tickets/bryant-gillespie`](https://leapweek.directus.io/tickets/bryant-gillespie) eats up a lot of characters and shorter urls are better for sharing. Weāre really digging Dub.co for sharing our content on socials, but it just wasnāt a fit here for generating links.
+Originally we wanted to run this off a subdomain of the site. But `https://leapweek.directus.com/tickets/bryant-gillespie` eats up a lot of characters and shorter urls are better for sharing. Weāre really digging Dub.co for sharing our content on socials, but it just wasnāt a fit here for generating links.
-So we chose the [`leapweek.dev`](http://leapweek.dev) domain over `leapweek.directus.io`.
+So we chose the [`leapweek.dev`](http://leapweek.dev) domain over `leapweek.directus.com`.
But we could do better.
diff --git a/content/tutorials/2.projects/how-i-built-an-ai-open-source-santa-roast-app-with-directus-and-nuxt.md b/content/tutorials/2.projects/how-i-built-an-ai-open-source-santa-roast-app-with-directus-and-nuxt.md
index fc82f241..3dd7ed5e 100644
--- a/content/tutorials/2.projects/how-i-built-an-ai-open-source-santa-roast-app-with-directus-and-nuxt.md
+++ b/content/tutorials/2.projects/how-i-built-an-ai-open-source-santa-roast-app-with-directus-and-nuxt.md
@@ -31,7 +31,7 @@ Like a lot of fun projects, this started with a simple conversation on Slack. My
John suggested scanning letters and having them transcribed. Iām way more of a smartass than John so I said "Hey, what if we make it snarkier? Like, you write a letter to Santa and he roasts you back?ā
-So with that direction, I built the first version in an episode of our ["100 Apps, 100 Hours" show on Directus TV](https://directus.io/tv/100-apps-100-hours). Let's just say it wasn't as pretty as what you see now. Hereās what it looked like.
+So with that direction, I built the first version in an episode of our ["100 Apps, 100 Hours" show on Directus TV](https://directus.com/tv/100-apps-100-hours). Let's just say it wasn't as pretty as what you see now. Hereās what it looked like.
@@ -164,7 +164,7 @@ Thereās some other cool additional libraries that add those special touches.
### Naughty or Nice scoring algorithm ā
-The original version relied on the AI Santa to decide whether a developer made it onto the naughty or nice list. The roasts were hilarious but almost everyone was on the naughty list. Which didnāt feel āfairā to those who contribute a lot, so we had to figure out a way to fix it.
+The original version relied on the AI Santa to decide whether a developer made it onto the naughty or nice list. The roasts were hilarious but almost everyone was on the naughty list. Which didnāt feel āfairā to those who contribute a lot, so we had to figure out a way to fix it.
After eliciting feedback from the team and our AI / LLM friends, we came back with this (way over-engineered š ) algorithm.
@@ -193,7 +193,7 @@ After eliciting feedback from the team and our AI / LLM friends, we came back wi
**Fetching user data with the GitHub GraphQL API**
-We needed to grab a lot of different data points to calculate that naughty/nice score - commits, PRs, reviews, issues, followers, organizations, and more. With the GitHub REST API, weād be making 6-10 separate API calls for each profile to get all the data we needed to properly score a profile..
+We needed to grab a lot of different data points to calculate that naughty/nice score - commits, PRs, reviews, issues, followers, organizations, and more. With the GitHub REST API, weād be making 6-10 separate API calls for each profile to get all the data we needed to properly score a profile..
With GraphQL, we can get it all in one shot.
@@ -581,7 +581,7 @@ After hearing feedback from teammates about privacy concerns, we added a simple
### Dynamic OG Images ā
-Fun social sharing / OG images seem to have become a thing in my projects. And if Iām building a Nuxt project - I always reach for the [`nuxt-og-image` module](https://github.com/nuxt-modules/og-image) by rockstar Harlan Wilton.
+Fun social sharing / OG images seem to have become a thing in my projects. And if Iām building a Nuxt project - I always reach for the [`nuxt-og-image` module](https://github.com/nuxt-modules/og-image) by rockstar Harlan Wilton.

@@ -627,7 +627,7 @@ There can still be a few gotchas depending on the rendering method and the host
Some features just donāt make the final cut. This one got axed not because it didnāt work or wasnāt awesome - but for cost purposes.
-Mr [Pedro Pizzaro](https://directus.io/team/pedro-pizarro) ā one of our AEs is freaking awesome at voiceover. And he recorded a custom salty sample voice that we used to create a custom voice at [ElevenLabs](https://elevenlabs.io).
+Mr Pedro Pizzaro ā one of our AEs is freaking awesome at voiceover. And he recorded a custom salty sample voice that we used to create a custom voice at [ElevenLabs](https://elevenlabs.io).
Once you sent your letter to Santa, weād send the generated text to their API to generate speech and then play it back to you on your profile page. But the amount of credits weād burn through made it too expensive to include.
@@ -648,16 +648,16 @@ Iād estimate Iāve spent a solid 30 hours of time āin-the-seatā actually
### What does it cost to run?
-Because weāre fetching a lot of data like repositories and their readmes, the input token count in quite high. The average input token count is around ~9,977 tokens. This varies a lot based on the users repos and readme content.
+Because weāre fetching a lot of data like repositories and their readmes, the input token count in quite high. The average input token count is around ~9,977 tokens. This varies a lot based on the users repos and readme content.
Output is a totally different story ā averaging around ~360 tokens since weāre just outputting the letter (mostly).
-That brings the **cost to ~$0.035 per profile roasted**. Or put a different way - every 1000 roasts would cost us about $35.
+That brings the **cost to ~$0.035 per profile roasted**. Or put a different way - every 1000 roasts would cost us about $35.
We may tweak our data fetching and adjust our prompts to attempt to lower this if it becomes really popular.
## Santaās Summary
-This thing was a blast to build and I hope this a super-helpful write up for your own projects. Be sure to check out the live project at https://salty-santa.vercel.app.
+This thing was a blast to build and I hope this a super-helpful write up for your own projects. Be sure to check out the live project at https://salty-santa.vercel.app.
Let us know your feedback. And shoot us your ideas for the next fun build.
diff --git a/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md b/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md
index 713d1d13..2b5fc339 100644
--- a/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md
+++ b/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md
@@ -10,7 +10,7 @@ description: Learn some best practices for enabling SEO in your projects using D
---
Search engine optimization (SEO) is an ever-changing but super important part of getting your website in front of visitors.
-When using Directus as a[ Headless CMS](https://directus.io/solutions/headless-cms), it is incredibly un-opinionated about what you do with your data and content on the frontend, leaving how you build your website up to you.
+When using Directus as a[ Headless CMS](https://directus.com/resources/what-is-headless-cms), it is incredibly un-opinionated about what you do with your data and content on the frontend, leaving how you build your website up to you.
But if youāre just starting out, being so open-ended can leave you wondering about the best way to handle things like SEO.
diff --git a/content/tutorials/4.migration/migrate-from-notion-to-directus.md b/content/tutorials/4.migration/migrate-from-notion-to-directus.md
index 41320154..97582e22 100644
--- a/content/tutorials/4.migration/migrate-from-notion-to-directus.md
+++ b/content/tutorials/4.migration/migrate-from-notion-to-directus.md
@@ -10,7 +10,7 @@ authors:
title: Developer Advocate
description: Learn how to migrate data from Notion databases to Directus.
---
-As a developer advocate and freelance coach, I share valuable content with my audience via my [blog](https://thefreelancehq.com/blog). When creating the blog, I needed a [Headless CMS](https://directus.io/solutions/headless-cms) that would integrate nicely with a Next.js Pages directory and make it easy to manage content. Notion was a great choice then, so I opted for it.
+As a developer advocate and freelance coach, I share valuable content with my audience via my [blog](https://thefreelancehq.com/blog). When creating the blog, I needed a [Headless CMS](https://directus.com/resources/what-is-headless-cms) that would integrate nicely with a Next.js Pages directory and make it easy to manage content. Notion was a great choice then, so I opted for it.
While Notion worked pretty well for most cases, the setup process wasnāt quite as easy as I expected, especially the process of mapping Notion elements to DOM elements.
diff --git a/content/tutorials/5.extensions/create-new-customers-in-stripe-in-a-custom-hook.md b/content/tutorials/5.extensions/create-new-customers-in-stripe-in-a-custom-hook.md
index a1e0fe78..32f3083e 100644
--- a/content/tutorials/5.extensions/create-new-customers-in-stripe-in-a-custom-hook.md
+++ b/content/tutorials/5.extensions/create-new-customers-in-stripe-in-a-custom-hook.md
@@ -124,8 +124,8 @@ stripe.customers
.catch((error) => {
const mailService = new MailService({ schema });
mailService.send({ // [!code ++]
- to: 'sharedmailbox@directus.io', // [!code ++]
- from: 'noreply@directus.io', // [!code ++]
+ to: 'sharedmailbox@directus.com', // [!code ++]
+ from: 'noreply@directus.com', // [!code ++]
subject: `An error has occurred with Stripe API`, // [!code ++]
text: `The following error occurred for ${payload.first_name} ${payload.last_name} when attempting to create an account in Stripe.\r\n\r\n${error}\r\n\r\nPlease investigate.\r\n\r\nID: ${key}\r\nEmail: ${payload.email_address}`, // [!code ++]
}); // [!code ++]
@@ -190,8 +190,8 @@ export default ({ action }, { env, services }) => {
.catch((error) => {
const mailService = new MailService({ schema });
mailService.send({
- to: 'sharedmailbox@directus.io',
- from: 'noreply@directus.io',
+ to: 'sharedmailbox@directus.com',
+ from: 'noreply@directus.com',
subject: `An error has occurred with Stripe API`,
text: `The following error occurred for ${payload.first_name} ${payload.last_name} when attempting to create an account in Stripe.\r\n\r\n${error}\r\n\r\nPlease investigate.\r\n\r\nID: ${key}\r\nEmail: ${payload.email_address}`,
});
diff --git a/content/tutorials/5.extensions/display-external-weather-api-data-in-custom-panels.md b/content/tutorials/5.extensions/display-external-weather-api-data-in-custom-panels.md
index 2da04c4c..57611e7c 100644
--- a/content/tutorials/5.extensions/display-external-weather-api-data-in-custom-panels.md
+++ b/content/tutorials/5.extensions/display-external-weather-api-data-in-custom-panels.md
@@ -10,7 +10,7 @@ description: Learn how to display external data in panels with a bundle and endp
---
-In this post, you will learn how to fetch data from an external data source and display it in a custom panel extension for [Directus Insights](https://directus.io/toolkit/guides/insights).
+In this post, you will learn how to fetch data from an external data source and display it in a custom panel extension for [Directus Insights](https://directus.com/docs/guides/insights/overview).
Panels can only talk to internal Directus services, and can't reliably make external web requests because browser security protections prevent these cross-origin requests from being made. To create a panel that can interact with external APIs, you will create bundle including an endpoint (that can make external requests) and a panel (that uses the endpoint).
diff --git a/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md b/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md
index 16711749..75f44530 100644
--- a/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md
+++ b/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md
@@ -381,8 +381,8 @@ export default defineHook(({ filter }, { logger }) => {
// ... (code from step 2-5) ...
// Extract custom claims
- const serviceName = payload["https://directus.io/service-name"];
- const serviceScope = payload["https://directus.io/service-scope"];
+ const serviceName = payload["https://directus.com/service-name"];
+ const serviceScope = payload["https://directus.com/service-scope"];
// Map scope to role
const scopeToRoleMap = {
diff --git a/content/tutorials/6.self-hosting/deploy-directus-to-aws-ec2.md b/content/tutorials/6.self-hosting/deploy-directus-to-aws-ec2.md
index ea703aaa..ea81586d 100644
--- a/content/tutorials/6.self-hosting/deploy-directus-to-aws-ec2.md
+++ b/content/tutorials/6.self-hosting/deploy-directus-to-aws-ec2.md
@@ -204,4 +204,4 @@ Some steps you could consider moving forward towards improving your deployment i
- Consider utilizing [AWS Secrets Manager](https://us-east-1.console.aws.amazon.com/secretsmanager/) for managing your `ENV` variables
- Consider implementing a load balancer for scaling the incoming requests to your Directus project.
-Compared to using [Directus Cloud](https://directus.io/cloud), using a self-hosted instance of Directus on AWS has several limitations by default, like no backups, no rolling updates, round-the-clock monitoring, and the inability to automatically restart in the event of a crash. Each of these can be configured and maintained separately.
+Compared to using [Directus Cloud](https://directus.com/start), using a self-hosted instance of Directus on AWS has several limitations by default, like no backups, no rolling updates, round-the-clock monitoring, and the inability to automatically restart in the event of a crash. Each of these can be configured and maintained separately.
diff --git a/content/tutorials/6.self-hosting/deploy-directus-to-digital-ocean.md b/content/tutorials/6.self-hosting/deploy-directus-to-digital-ocean.md
index 358b2f24..23594326 100644
--- a/content/tutorials/6.self-hosting/deploy-directus-to-digital-ocean.md
+++ b/content/tutorials/6.self-hosting/deploy-directus-to-digital-ocean.md
@@ -14,7 +14,7 @@ This guide shows you how to deploy Directus on the DigitalOcean App Platform wit
DigitalOcean App Platform is a good fit if you already use DigitalOcean and want a managed app runtime while still controlling your database, storage, and deployment configuration.
-If you want a fully managed Directus deployment with infrastructure and upgrades handled for you, use [Directus Cloud](https://directus.io/pricing/cloud).
+If you want a fully managed Directus deployment with infrastructure and upgrades handled for you, use [Directus Cloud](https://directus.com/pricing).
## Before You Start
diff --git a/content/tutorials/7.workflows/build-content-approval-workflows-with-custom-permissions.md b/content/tutorials/7.workflows/build-content-approval-workflows-with-custom-permissions.md
index 2ff7c5bc..5642b94f 100644
--- a/content/tutorials/7.workflows/build-content-approval-workflows-with-custom-permissions.md
+++ b/content/tutorials/7.workflows/build-content-approval-workflows-with-custom-permissions.md
@@ -16,7 +16,7 @@ things a step further and let you define what a role can and can't do to each it
Workflows are when you use these permissions techniques to create structured stages to content or data creation. In
simplest terms, it is when you have two or more roles, and you give them different permissions at each stage in the
content creation process. This is common when using Directus as a
-[Headless CMS](https://directus.io/solutions/headless-cms).
+[Headless CMS](https://directus.com/resources/what-is-headless-cms).
There are an infinite number of possible workflows you could configure. But for this recipe, we will configure a simple
workflow where `writers` and `editors` work together to create, co-edit and publish `articles`.
diff --git a/content/tutorials/7.workflows/enrich-user-data-with-clearbit-and-directus-automate.md b/content/tutorials/7.workflows/enrich-user-data-with-clearbit-and-directus-automate.md
index 1356df3a..2ac58d51 100644
--- a/content/tutorials/7.workflows/enrich-user-data-with-clearbit-and-directus-automate.md
+++ b/content/tutorials/7.workflows/enrich-user-data-with-clearbit-and-directus-automate.md
@@ -12,7 +12,7 @@ description: Learn how to integrate Clearbit data enrichment with Directus Flows
---
The Directus toolkit can be used for so many different projects and use cases, with a common one being Customer Relationship Management (CRM). CRMs are often used to support sales and marketing teams in understanding who is interested in and already using a product, and have more streamlined conversations with them.
-When a new user is created in Directus, directly through the Data Studio or through [Directus Auth](https://directus.io/toolkit/auth), you may only collect a small amount of information about them. Historically, you may have to then do manual research to understand who a person is before messaging them.
+When a new user is created in Directus, directly through the Data Studio or through [Directus Auth](https://directus.com/docs/guides/auth/tokens-cookies), you may only collect a small amount of information about them. Historically, you may have to then do manual research to understand who a person is before messaging them.
[Clearbit has a series of Enrichment APIs](https://clearbit.com/platform/enrichment) that will take in the data you have, look at a load of data points from around the web, and provide a more complete payload about that person in response.
diff --git a/content/tutorials/7.workflows/integrating-multilingual-content-with-directus-and-crowdin.md b/content/tutorials/7.workflows/integrating-multilingual-content-with-directus-and-crowdin.md
index fb078c95..ba0bb621 100644
--- a/content/tutorials/7.workflows/integrating-multilingual-content-with-directus-and-crowdin.md
+++ b/content/tutorials/7.workflows/integrating-multilingual-content-with-directus-and-crowdin.md
@@ -44,8 +44,8 @@ For detailed step-by-step instructions, explore the [content translation referen
Contributing to the translation process and translating the Directus project itself is a collaborative effort you can make. Here's how you can actively participate and ensure Directus Data Studio is available in multiple languages:
-1. **Crowdin Account Creation**: If you don't already have a Crowdin account, start by [creating one](https://accounts.crowdin.com/register?utm_source=docs.directus.io&utm_medium=referral&utm_campaign=guest-post).
-2. **Join the Directus Translation Project:** Once you have a Crowdin account, search for the "Directus" project within Crowdin or simply [join this project](https://crowdin.com/project/directus?utm_source=docs.directus.io&utm_medium=referral&utm_campaign=guest-post) to gain access.
+1. **Crowdin Account Creation**: If you don't already have a Crowdin account, start by [creating one](https://accounts.crowdin.com/register?utm_source=directus.com/docs&utm_medium=referral&utm_campaign=guest-post).
+2. **Join the Directus Translation Project:** Once you have a Crowdin account, search for the "Directus" project within Crowdin or simply [join this project](https://crowdin.com/project/directus?utm_source=directus.com/docs&utm_medium=referral&utm_campaign=guest-post) to gain access.
3. **Translating Strings**: Inside the Directus project, you'll find various languages and files with strings and phrases that require translation. Go to Language > Files or Translate All, and click on each string to enter translations for different languages.
4. **Collaboration:** Crowdin enables collaboration with other translators. You can discuss translations, ask questions, and provide context to ensure accurate translations.
@@ -66,7 +66,7 @@ If your language is already available on Directus, you can change the UI in a fe
Now, let's delve into the heart of multilingual content management. This is where we should introduce Crowdin - a localization software created to simplify the translation process and ensure your app speaks fluently in every tongue.
-We'll explore how to utilize the [Crowdin connector](https://store.crowdin.com/directus-translation-strings?utm_source=docs.directus.io&utm_medium=referral&utm_campaign=guest-post) to add new translation strings to your Directus project:
+We'll explore how to utilize the [Crowdin connector](https://store.crowdin.com/directus-translation-strings?utm_source=directus.com/docs&utm_medium=referral&utm_campaign=guest-post) to add new translation strings to your Directus project:
1. **Install Crowdin Connector:** If you haven't already, install the Crowdin connector for Directus.
2. **Configuration**: Configure the Crowdin connector with your Directus URL, email, and password. It's recommended to set up a dedicated user in your project for the connector.
@@ -77,8 +77,8 @@ We'll explore how to utilize the [Crowdin connector](https://store.crowdin.com/d
As your content evolves, use the integration to keep translations updated - manage updates, new strings, and changes through Crowdin's interface.
-Refer to the latest [integration](https://store.crowdin.com/directus-translation-strings?utm_source=docs.directus.io&utm_medium=referral&utm_campaign=guest-post) documentation for the most accurate and up-to-date instructions. Or, you can always contact the Crowdin [support team](https://crowdin.com/contacts?utm_source=docs.directus.io&utm_medium=referral&utm_campaign=guest-post) (available 24/7).
+Refer to the latest [integration](https://store.crowdin.com/directus-translation-strings?utm_source=directus.com/docs&utm_medium=referral&utm_campaign=guest-post) documentation for the most accurate and up-to-date instructions. Or, you can always contact the Crowdin [support team](https://crowdin.com/contacts?utm_source=directus.com/docs&utm_medium=referral&utm_campaign=guest-post) (available 24/7).
## A World Of Multilingual Possibilities
-As you embark on your multilingual journey, remember that [Directus and Crowdin](https://store.crowdin.com/directus-translation-strings?utm_source=docs.directus.io&utm_medium=referral&utm_campaign=guest-post) are your trusty companions. Content localization isn't just about translating words; it's about creating connections and understanding. In a world where languages blend and cultures unite, your code becomes the bridge that brings people together. With Directus and Crowdin, you're not just coding; you're crafting an inclusive digital world where everyone's voice is heard and understood.
+As you embark on your multilingual journey, remember that [Directus and Crowdin](https://store.crowdin.com/directus-translation-strings?utm_source=directus.com/docs&utm_medium=referral&utm_campaign=guest-post) are your trusty companions. Content localization isn't just about translating words; it's about creating connections and understanding. In a world where languages blend and cultures unite, your code becomes the bridge that brings people together. With Directus and Crowdin, you're not just coding; you're crafting an inclusive digital world where everyone's voice is heard and understood.
diff --git a/content/tutorials/7.workflows/invincible-ai-content-workflows-with-inngest-and-directus.md b/content/tutorials/7.workflows/invincible-ai-content-workflows-with-inngest-and-directus.md
index d1d2108f..69e7532c 100644
--- a/content/tutorials/7.workflows/invincible-ai-content-workflows-with-inngest-and-directus.md
+++ b/content/tutorials/7.workflows/invincible-ai-content-workflows-with-inngest-and-directus.md
@@ -458,7 +458,7 @@ Here's an examination of this hooks implementation in detail:
Now, create a simple workflow function to consume the `image-uploaded` event.
-By default, [asset transformations](https://directus.io/docs/guides/files/transform#preset-transformations) in Directus on created "on the fly" (and then cached) whenever you request an image, but if you're statically generating a large site with lots of images this can slow your build time.
+By default, [asset transformations](https://directus.com/docs/guides/files/transform#preset-transformations) in Directus on created "on the fly" (and then cached) whenever you request an image, but if you're statically generating a large site with lots of images this can slow your build time.
You can address that by using Inngest to do the transformations when images are uploaded, instead of when they are requested.
diff --git a/content/tutorials/7.workflows/trigger-netlify-site-builds-with-directus-automate.md b/content/tutorials/7.workflows/trigger-netlify-site-builds-with-directus-automate.md
index d973fb1e..0c840cd2 100644
--- a/content/tutorials/7.workflows/trigger-netlify-site-builds-with-directus-automate.md
+++ b/content/tutorials/7.workflows/trigger-netlify-site-builds-with-directus-automate.md
@@ -12,7 +12,7 @@ description: Learn how to trigger new Netlify website builds through Directus Fl
---
## Explanation
-When using Directus as a [Headless CMS](https://directus.io/solutions/headless-cms), it is common to pair it with a
+When using Directus as a [Headless CMS](https://directus.com/resources/what-is-headless-cms), it is common to pair it with a
front-end framework / static site generator like [Next.js](https://nextjs.org/), [Nuxt.js](https://nuxt.com),
[SvelteKit](https://kit.svelte.dev/), or other options.
diff --git a/content/tutorials/7.workflows/trigger-vercel-site-builds-with-directus-automate.md b/content/tutorials/7.workflows/trigger-vercel-site-builds-with-directus-automate.md
index b88205fe..cd078491 100644
--- a/content/tutorials/7.workflows/trigger-vercel-site-builds-with-directus-automate.md
+++ b/content/tutorials/7.workflows/trigger-vercel-site-builds-with-directus-automate.md
@@ -12,7 +12,7 @@ description: Learn how to trigger new Vercel website builds through Directus Flo
---
## Explanation
-When using Directus as a [Headless CMS](https://directus.io/solutions/headless-cms), it is common to pair it with a
+When using Directus as a [Headless CMS](https://directus.com/resources/what-is-headless-cms), it is common to pair it with a
front-end framework / static site generator like [Next.js](https://nextjs.org/), [Nuxt.js](https://nuxt.com),
[SvelteKit](https://kit.svelte.dev/), or other options.
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 10e8b0f7..18253281 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -234,7 +234,7 @@ export default defineNuxtConfig({
},
llms: {
- domain: 'https://directus.io/docs',
+ domain: 'https://directus.com/docs',
title: 'Directus Documentation',
description:
'Directus is a real-time API and no-code Data Studio for managing any SQL database. It provides REST and GraphQL APIs, granular access control, authentication, file storage, automations, realtime via WebSockets, analytics dashboards, AI integration, and a full extension system. The Data Studio is a web application for non-technical users to browse, manage, and visualize data without writing code.',
@@ -405,10 +405,10 @@ export default defineNuxtConfig({
},
],
notes: [
- 'The interactive API Reference is generated from an OpenAPI specification and is not included in this file. Visit https://directus.io/docs/api for the full reference.',
+ 'The interactive API Reference is generated from an OpenAPI specification and is not included in this file. Visit https://directus.com/docs/api for the full reference.',
'The @directus/sdk package reference is in the source repository. The Connect section here covers setup, authentication, and common patterns.',
'This documentation covers the latest version of Directus.',
- 'Directus uses a Business Source License (BSL). See https://directus.io/bsl for license terms.',
+ 'Directus uses a Business Source License (BSL). See https://directus.com/license for license terms.',
],
},
diff --git a/public/oas.yaml b/public/oas.yaml
index 7333c1e7..e4935de6 100644
--- a/public/oas.yaml
+++ b/public/oas.yaml
@@ -10294,7 +10294,7 @@ components:
nullable: true
origin:
description: Origin of the request when the action took place.
- example: https://directus.io
+ example: https://directus.com
type: string
revisions:
description: Any changes that were made in this activity. One-to-many to revisions.
@@ -10877,7 +10877,7 @@ components:
type: string
message:
description: Subject line of the message.
- example: \nHello admin@example.com,\n\rijk@directus.io has mentioned you in a comment:\n\n> Hello admin@example.com!\n\nClick here to view.\n
+ example: \nHello admin@example.com,\n\rijk@directus.com has mentioned you in a comment:\n\n> Hello admin@example.com!\n\nClick here to view.\n
type: string
collection:
description: Collection this notification references.