---
title: "Resource definitions"
description: "Reference overview of the Calico Enterprise API resources, including the manifest format and how calicoctl and kubectl manage them."
product: "Calico Enterprise"
version: "3.23 (latest)"
section: "Reference"
canonical_url: "https://docs.tigera.io/calico-enterprise/latest/reference/resources/overview"
---

# Resource definitions

This section describes the set of valid resource types that can be managed through `calicoctl` or `kubectl`.

While resources may be supplied in YAML or JSON format, this guide provides examples in YAML.

## Overview of resource structure

The calicoctl commands for resource management (create, apply, delete, replace, get) all take resource manifests as input.

Each manifest may contain a single resource (e.g. a profile resource), or a list of multiple resources (e.g. a profile and two hostEndpoint resources).

The general structure of a single resource is as follows:

```yaml
apiVersion: projectcalico.org/v3
kind: <type of resource>
metadata:
  # Identifying information
  name: <name of resource>
  ...
spec:
  # Specification of the resource
  ...
```

### Schema

| Field      | Description                                                                             | Accepted Values      | Schema                   |
| ---------- | --------------------------------------------------------------------------------------- | -------------------- | ------------------------ |
| apiVersion | Indicates the version of the API that the data corresponds to.                          | projectcalico.org/v3 | string                   |
| kind       | Specifies the type of resource described by the YAML document.                          |                      | [kind](#supported-kinds) |
| metadata   | Contains information used to uniquely identify the particular instance of the resource. |                      | map                      |
| spec       | Contains the resource specification.                                                    |                      | map                      |

### Supported kinds

The following resources are supported:

- [AlertException](https://docs.tigera.io/calico-enterprise/latest/reference/resources/alertexception.md)
- [BGPConfiguration](https://docs.tigera.io/calico-enterprise/latest/reference/resources/bgpconfig.md)
- [BGPPeer](https://docs.tigera.io/calico-enterprise/latest/reference/resources/bgppeer.md)
- [DeepPacketInspection](https://docs.tigera.io/calico-enterprise/latest/reference/resources/deeppacketinspection.md)
- [EgressGatewayPolicy](https://docs.tigera.io/calico-enterprise/latest/reference/resources/egressgatewaypolicy.md)
- [FelixConfiguration](https://docs.tigera.io/calico-enterprise/latest/reference/resources/felixconfig.md)
- [GlobalAlert](https://docs.tigera.io/calico-enterprise/latest/reference/resources/globalalert.md)
- [GlobalNetworkPolicy](https://docs.tigera.io/calico-enterprise/latest/reference/resources/globalnetworkpolicy.md)
- [GlobalNetworkSet](https://docs.tigera.io/calico-enterprise/latest/reference/resources/globalnetworkset.md)
- [GlobalReport](https://docs.tigera.io/calico-enterprise/latest/reference/resources/globalreport.md)
- [GlobalThreatFeed](https://docs.tigera.io/calico-enterprise/latest/reference/resources/globalthreatfeed.md)
- [HostEndpoint](https://docs.tigera.io/calico-enterprise/latest/reference/resources/hostendpoint.md)
- [IPPool](https://docs.tigera.io/calico-enterprise/latest/reference/resources/ippool.md)
- [IPReservation](https://docs.tigera.io/calico-enterprise/latest/reference/resources/ipreservation.md)
- [KubeControllersConfiguration](https://docs.tigera.io/calico-enterprise/latest/reference/resources/kubecontrollersconfig.md)
- [LicenseKey](https://docs.tigera.io/calico-enterprise/latest/reference/resources/licensekey.md)
- [ManagedCluster](https://docs.tigera.io/calico-enterprise/latest/reference/resources/managedcluster.md)
- [NetworkPolicy](https://docs.tigera.io/calico-enterprise/latest/reference/resources/networkpolicy.md)
- [NetworkSet](https://docs.tigera.io/calico-enterprise/latest/reference/resources/networkset.md)
- [Node](https://docs.tigera.io/calico-enterprise/latest/reference/resources/node.md)
- [PacketCapture](https://docs.tigera.io/calico-enterprise/latest/reference/resources/packetcapture.md)
- [Profile](https://docs.tigera.io/calico-enterprise/latest/reference/resources/profile.md)
- [RemoteClusterConfiguration](https://docs.tigera.io/calico-enterprise/latest/reference/resources/remoteclusterconfiguration.md)
- [StagedGlobalNetworkPolicy](https://docs.tigera.io/calico-enterprise/latest/reference/resources/stagedglobalnetworkpolicy.md)
- [StagedKubernetesNetworkPolicy](https://docs.tigera.io/calico-enterprise/latest/reference/resources/stagedkubernetesnetworkpolicy.md)
- [StagedNetworkPolicy](https://docs.tigera.io/calico-enterprise/latest/reference/resources/stagednetworkpolicy.md)
- [Tier](https://docs.tigera.io/calico-enterprise/latest/reference/resources/tier.md)
- [WorkloadEndpoint](https://docs.tigera.io/calico-enterprise/latest/reference/resources/workloadendpoint.md)

### Resource name requirements

Every resource must have the `name` field specified. Name must be unique within a namespace. Name required when creating resources, and cannot be updated. A valid resource name can have alphanumeric characters with optional `.`, `_`, or `-`. of up to 128 characters total.

### Multiple resources in a single file

A file may contain multiple resource documents specified in a YAML list format. For example, the following is the contents of a file containing two `HostEndpoint` resources:

```yaml
- apiVersion: projectcalico.org/v3
  kind: HostEndpoint
  metadata:
    name: endpoint1
    labels:
      type: database
  spec:
    interface: eth0
    node: host1
    profiles:
      - prof1
      - prof2
    expectedIPs:
      - 1.2.3.4
      - '00:bb::aa'
- apiVersion: projectcalico.org/v3
  kind: HostEndpoint
  metadata:
    name: endpoint2
    labels:
      type: frontend
  spec:
    interface: eth1
    node: host1
    profiles:
      - prof1
      - prof2
    expectedIPs:
      - 1.2.3.5
```
