Understanding Organizations, Projects, and Environments
In FoxNose CMS, Organizations, Projects, and Environments form the foundation of your workspace structure, each playing a distinct role in content management, access control, and billing. Understanding these entities is essential for effectively organizing your workflows, managing access, and structuring your data.
Organization
Organizations are the highest-level entity in FoxNose CMS. When you register in the system, an organization is automatically created for you, and you become the owner of that organization. Organizations serve as containers for your projects and help manage billing, access control, and administrative tasks efficiently.
Organizations are designed to:
- Centralize Administration: Manage access and permissions across all your projects within the organization using a role-based approach.
- Separate Billing Methods: Assign different payment methods to various sets of projects. This is useful if you want services to be paid by different companies or branches within a larger corporation.
Transferring Ownership
If you need to transfer ownership of your organization to another user, you can do so by contacting our support team at support@foxnose.net. The support team will guide you through the necessary steps to complete the transfer securely.
Project
A project is the highest billing entity within FoxNose CMS. Typically, a project is created to support a specific task or set of tasks. When creating a project, you choose a region for data storage and processing, which ensures that data complies with local data handling requirements:
- EU: Data is stored exclusively within the European Union, ensuring GDPR compliance. Even CDN nodes are restricted to EU countries, which may slightly reduce performance for requests made outside the EU due to limited replication. If your organization is registered in an EU member country, only the EU region can be selected for projects, ensuring compliance with GDPR regulations.
- USA (coming soon): Data will be stored and processed in the United States with global replication, enhancing delivery speed for requests made from any location.
Once set, the project region cannot be changed.
Environments
An environment is an isolated space within a project, designed for specific stages of content management and testing.
By default, a production environment is created when the project is set up, it is optimized for handling high loads, and ideal for live operations. There can only be one production environment per project, and it cannot be deleted.
Additional environments can be easily created to safely test and experiment without impacting live data.
The host for each environment is generated automatically in the format:
https://<ENVIRONMENT_KEY>.fxns.io
For the production environment, this can be customized to a more readable subdomain, such as
https://<CUSTOM_SUBDOMAIN>.fxns.io
or to a fully custom CNAME
https://example.com/my-delivery-api/folder-1/...
For test environments, the host remains fixed and cannot be changed.
Environment Details
- Data Usage and Billing: All environments consume database storage, and API requests across all environments (production and test) are counted toward your project’s usage limits.
- Entity Keys: Entity keys (such as for folders, schemas, etc.) can be identical across different environments within the same project, providing flexibility in managing similar structures across environments.
- Dedicated host: Each environment has its own unique host-specific URLs, ensuring isolated access to data via the Delivery API.
Environment API Model
- Name
key
- Type
- string
- Description
The unique identifier for the environment, automatically generated by the system.
- Name
name
- Type
- string
- Description
The name of the environment. This is the only required attribute when creating an environment. - Minimum length: 1 - Maximum length: 255
- Name
host
- Type
- string
- Description
The current host URL assigned to the environment. This URL provides access to the Delivery API for this specific environment.
- Name
custom_cname
- Type
- bool
- Description
Indicates if a custom CNAME has been set for the environment’s host. Defaults to
false
.
- Name
is_enabled
- Type
- bool
- Description
Indicates whether the environment is active and accessible. Defaults to
true
.
- Name
is_production
- Type
- bool
- Description
Specifies if this is the production environment for the project. Only one production environment is allowed per project.
- Name
created_at
- Type
- datetime
- Description
The timestamp when the environment was created.
Create Environment
This endpoint allows you to create a new environment within a specified project.
- Authentication method: JWT
Required attributes
- Name
name
- Type
- string
- Description
- Minimum length: 1
- Maximum length: 255
Error codes
- Name
validation_error
- Description
Refer to the
body
field for a JSON object containing specific validation errors.
- Name
too_many_environments
- Description
The maximum number of environments for this project has been reached.
Request
curl https://api.foxnose.net/organizations/dl55w3ds/projects/d7hazs1x/environments/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiI..." \
-H "Content-Type: application/json" \
-d '{
"name": "Staging"
}'
Response
{
"key": "4yiek4pa",
"name": "Staging",
"host": "4yiek4pa.fxns.io",
"custom_cname": false,
"is_enabled": true,
"is_production": false,
"created_at": "2024-10-29T07:02:53.215453-05:00"
}
List All Environments
Retrieves a list of all environments within a specified project.
- Authentication method: JWT
- Returns all results in a single response without pagination.
Request
curl https://api.foxnose.net/organizations/dl55w3ds/projects/d7hazs1x/environments/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiI..." \
-H "Content-Type: application/json"
Response
[
{
"key": "4yiek4pa",
"name": "Production",
"host": "4yiek4pa.fxns.io",
"custom_cname": false,
"is_enabled": true,
"is_production": true,
"created_at": "2024-10-29T07:02:53.215453-05:00"
},
{
"key": "3fa7c1bq",
"name": "Staging",
"host": "3fa7c1bq.fxns.io",
"custom_cname": false,
"is_enabled": true,
"is_production": false,
"created_at": "2024-11-01T12:15:30.154831-05:00"
}
]
Retrieve Environment
Fetches details of a specific environment by its key.
- Authentication method: JWT
Request
curl https://api.foxnose.net/organizations/dl55w3ds/projects/d7hazs1x/environments/7c9h4pwu/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiI..." \
-H "Content-Type: application/json"
Response
{
"key": "4yiek4pa",
"name": "Production",
"host": "4yiek4pa.fxns.io",
"custom_cname": false,
"is_enabled": true,
"is_production": true,
"created_at": "2024-10-29T07:02:53.215453-05:00"
}
Update Environment
This endpoint allows updating the attributes of a specific environment.
- Authentication method: JWT
Required attributes
- Name
name
- Type
- string
- Description
- Minimum length: 1
- Maximum length: 255
Error codes
- Name
validation_error
- Description
Refer to the
body
field for a JSON object containing specific validation errors.
- Name
too_many_environments
- Description
The maximum number of environments for this project has been reached.
Request
curl -X PUT https://api.foxnose.net/organizations/dl55w3ds/projects/d7hazs1x/environments/7c9h4pwu/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiI..." \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Environment"
}'
Response
{
"key": "4yiek4pa",
"name": "Updated Environment",
"host": "4yiek4pa.fxns.io",
"custom_cname": false,
"is_enabled": true,
"is_production": false,
"created_at": "2024-10-29T07:02:53.215453-05:00"
}
Delete Environment
Deletes a specific environment.
- Authentication method: JWT
- Production environment cannot be deleted.
- Returns a
202 Accepted
response and removes the environment along with all associated data in the background.
Request
curl -X DELETE https://api.foxnose.net/organizations/dl55w3ds/projects/d7hazs1x/environments/7c9h4pwu/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiI..." \
-H "Content-Type: application/json"
Summary
- Organizations are the top-level entity, encapsulating all projects, billing settings, and access controls, providing a centralized point for administration.
- Projects represent the primary unit of work, billing, and data compliance, organized by specific tasks or objectives, with a dedicated data storage region.
- Environments allow for isolated workspaces within each project, enabling safe testing and experimentation alongside live data, all while tracking usage and storage collectively across the project.