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.


POST/organizations/:org/projects/:project/environments/

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

POST
/organizations/:org/projects/:project/environments/
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"
}

GET/organizations/:org/projects/:project/environments/

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

GET
/organizations/:org/projects/:project/environments/
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"
}
]

GET/organizations/:org/projects/:project/environments/:env/

Retrieve Environment

Fetches details of a specific environment by its key.

  • Authentication method: JWT

Request

GET
/organizations/:org/projects/:project/environments/:env/
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"
}

PUT/organizations/:org/projects/:project/environments/:env/

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

PUT
/organizations/:org/projects/:project/environments/:env/
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/organizations/:org/projects/:project/environments/:env/

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

DELETE
/organizations/:org/projects/:project/environments/:env/
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.

Was this page helpful?