# Resource types (XaaS)

> A resource type is the category of items a blueprint deploys, such as Storage, Database, or Cluster

---

Site [llms.txt](/llms.txt)

---

Cloud Management Platform (CMP) ships with one resource type: Service. Defining more allows the Catalog to offer items beyond servers. A blueprint names the type it deploys, and every resource it creates is listed and managed under that type. CMP calls this feature XaaS, or anything as a service.

![Screenshot of the Resource Types page.](/img/cmp/use/resources/resource-types/resource-types.png)

## Manage resource types

Go to **Admin** > **Resource Types (XaaS)**. The page lists every resource type, and the **Quantity** column shows how many of that type you have access to. Select a type to see them.

**Servers** is listed alongside the resource types, though it is not one of them, so every kind of deployed item is accessible from a single page. Selecting Servers opens the server list.

To add a type, select **Add**, fill in the fields below, and select **Add** again. To update one, select the pencil icon, make changes, then select **Save**.

### Fields on a resource type

| Field | Description |
| --- | --- |
| **Display Name** | The name shown wherever the type appears: the list of types and the blueprints that deploy it. |
| **Database Name** | The identifier CMP uses internally, including in the URL of the type's resource list. Letters, digits, and underscores, starting with a letter. This cannot be changed later. |
| **Description** | An explanation of what the type is for, which helps users tell similar types apart. |
| **Categories** | Free-form labels that group related types. Start typing to find an existing category or to create a new one. Categories can contain spaces. |
| **Plural label** | What CMP calls more than one of them. Leave it blank, and CMP adds an "s" to the display name: a type named Storage needs one, and a type named Cluster does not. |
| **Icon** | An icon shown next to the type and above the actions on each of its resources. Give the icon's CSS class, such as `bi bi-alarm` or `fas fa-heartbeat`, from [Bootstrap Icons](https://icons.getbootstrap.com/) or [Font Awesome](https://fontawesome.com/search?ic=free-collection). |
| **Resource List View Columns** | Parameters to show as extra columns when viewing a list of resources of this type, so a Database type can list its version and port alongside each resource. Only user parameters are offered. |
| **Internal only** | Marks a type that exists for CMP's own use rather than to be ordered, such as a lookup resource a plugin reads. Internal types are hidden from everyone except Super Admins and Global Viewers. |

The description and categories can also be read and written through the `/api/v3/cmp/resourceTypes/` API.

### Delete a resource type

Select the **X** beside the type. CMP marks the type as historical, so anything that referred to it continues to work, and it no longer appears in the list. A type can only be deleted once nothing is using it: if active resources of that type exist, or an active blueprint deploys it, the dialog explains that instead of offering to delete.

## Who can see and change them

Everyone can open the page to see the display name and quantity of each type they have access to, which is how users find their own deployed resources. Super Admins can also run **Sync Resources** for an individual type, to bring its existing resources into CMP without waiting for the recurring job.

Super Admins and Global Viewers also see the plural label, database name, and internal-only columns. Only Super Admins can add, edit, or delete a type, and only Super Admins and Global Viewers get the **Exclude Internal Only** switch, which hides internal types from the list.

## Resource types on blueprints

A blueprint deploys at most one resource type, chosen when the blueprint is created or edited, and every order for it produces one resource of that type. [Blueprints that do not create resources](/docs/cmp/use/blueprints/order/#blueprints-that-do-not-create-resources) run their build items and leave nothing behind to manage.

The blueprint's tabs define the type's lifecycle. **Build** describes how a resource of that type is ordered; **Discovery** is another way to bring existing ones into CMP; **Management** holds the actions that can be taken on deployed ones; and **Teardown** describes what happens when one is deleted.

Several blueprints can deploy the same type, which is how a type behaves as a family: a Storage type might have separate blueprints for S3 buckets and NetApp volumes, and both appear together in the list of storage resources.

### Resources as build items in other blueprints

A resource can be a build item in another blueprint, so ordering one blueprint can produce several related resources at once. On the **Build** tab of a blueprint with a resource type, each resource type with at least one blueprint that can be nested appears as its own button, alongside **Server Tier** and **Blueprint**. CMP allows one layer of nesting, so those buttons do not appear on a blueprint that is already used within another.

Ordering that blueprint creates a parent resource and a sub-resource of each type it includes. The parent lists them on its **Sub-Resources** tab, and each sub-resource names its parent.

## Related

- [Discovery/sync configuration](/docs/cmp/use/blueprints/build/discovery-sync-configuration/): Write the plugin that finds resources and keeps them up to date.
- [Resource attributes](/docs/cmp/use/resources/resource-attributes/): Show a parameter's value on a resource's Overview tab.
- [Build configuration](/docs/cmp/use/blueprints/build/build-configuration/): The build items a blueprint can deploy, including other blueprints.
