# Manage Resources with the CLI

> List, create, inspect, enable, disable, delete, and assign configured capabilities from reviewed JSON definitions.

## Before you begin {#before-you-begin}

Select the namespace and identify the exact Resource kind, id, immutable implementation, configuration, Credential relationship, and Policies. Use a schema-validated JSON file for creation. Platform catalog Resources are visible to tenants but cannot be mutated or deleted by tenant commands.

## Steps {#steps}

1. List all Resources or filter by kind:

   ```sh
   constal resources list --kind service
   ```

2. Create a tenant-managed Resource with `constal resources create --body @resource.json`.
3. Inspect its authoritative definition and control head with `resources get <kind> <id>` and `resources control <kind> <id>`.
4. Use `resources disable` or `resources enable` with a retained `--event-id` and optional `--reason`. Disabling affects new admission; existing Runs retain their accepted snapshot according to runtime rules.
5. Delete only a tenant-managed Resource after checking consumers and active bindings.
6. Use the `bindings` command group for tenant defaults and customer- or principal-scoped assignments. Creation and promotion take reviewed JSON and stable event ids.

## Verify {#verify}

Read the Resource again and confirm the current hash, status, contract, configuration, Policies, and Credential reference. Start a controlled Run, inspect its Resource bindings, and verify the exact accepted CRN rather than relying only on the current revision.

## Next steps {#next-steps}

Read [Use Resources with the SDK](/docs/resources/sdk.md), [Configure a Resource](/docs/resources/configure.md), [Scoped bindings](/docs/credentials/scoped-bindings), and the [Resources command reference](/docs/cli/reference.md#resources).
