> This page is for API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.eon.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.eon.io/_mcp/server.

# Get Resource

GET https://%7Baccount-domain%7D.console.eon.io/api/v1/projects/{projectId}/resources/{id}

Retrieves a resource by ID.

Reference: https://docs.eon.io/api/api-reference/resources/get-resource

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `projectId` (string, required) — ID of the project the resource is in. You can get your project ID from the [API Credentials](https://console.eon.io/global-management/api-credentials) page in your global management console.
- `id` (string, required) — Eon-assigned ID of the resource to retrieve.

### Query parameters

- `include` (list of enum, optional) — Whether to include indexes for AWS DynamoDB in the response. To minimize response size, these indexes are omitted by default.
  - Allowed values: `DYNAMODB_INDEXES`

## Response

### 200

Resource retrieved.

- `resource` (InventoryResource, required)

## Errors

### 404 Not Found Error

Resource wasn't found.

- `any`

## Types

### InventoryResource

- `id` (string, required) — Eon-assigned resource ID.
- `backupStatus` (enum, required) — Eon backup status. For an explanation of statuses, see [Backup Statuses](/data-protection/backup-and-protection/backup-management/backup-statuses). `BACKUP_POSTURE_STATUS_UNSPECIFIED` is supported only in responses.
  - Allowed values: `BACKUP_POSTURE_STATUS_UNSPECIFIED`, `NOT_BACKED_UP`, `VIOLATIONS_DETECTED`, `GENERIC_BACKUPS`, `EXCLUDED_FROM_BACKUP`, `ALL_VIOLATIONS_MUTED`, `PROTECTED`, `INITIAL_CLASSIFICATION`, `TERMINATED`, `UNSUPPORTED`, `DISCONNECTED`, `ACTION_REQUIRED`
- `providerResourceId` (string, required) — Cloud-provider-assigned resource ID.
- `resourceName` (string, required) — Resource display name.
- `providerAccountId` (string, required) — Cloud-provider-assigned account ID.
- `snapshotStorage` (SnapshotStorage, required) — Details about backup snapshot storage.
- `sourceStorage` (SourceStorage, required) — Details about storage at the source.
- `tags` (map from string to string, required) — Resource tags as key-value pairs. Both keys and values are strings. If a tag is a key with no value, the value is presented as an empty string. **Example:** `{"env": "prod", "app": "web"}`
- `cloudProvider` (enum, required) — Cloud provider. `PROVIDER_UNSPECIFIED` is supported only in responses.
  - Allowed values: `AWS`, `AZURE`, `GCP`, `MONGO_ATLAS`, `PROVIDER_UNSPECIFIED`
- `resourceType` (enum, required) — Resource type identifier combining cloud provider and service type. `RESOURCE_TYPE_UNSPECIFIED` is supported only in responses.
  - Allowed values: `AWS_EC2`, `AWS_RDS`, `AWS_S3`, `AWS_EFS`, `AWS_FSX`, `AWS_EKS_NAMESPACE`, `AWS_DYNAMO_DB`, `AZURE_VIRTUAL_MACHINE`, `AZURE_FILE_SHARE`, `AZURE_STORAGE_ACCOUNT`, `AZURE_DISK`, `AZURE_SQL_DATABASE`, `AZURE_SQL_MANAGED_INSTANCE`, `AZURE_SQL_VIRTUAL_MACHINE`, `AZURE_MYSQL`, `AZURE_POSTGRESQL`, `AZURE_COSMOSDB_MONGODB`, `AZURE_COSMOSDB_NOSQL`, `ATLAS_MONGODB_CLUSTER`, `GCP_COMPUTE_ENGINE_INSTANCE`, `GCP_CLOUD_SQL_INSTANCE`, `GCP_CLOUD_STORAGE_BUCKET`, `RESOURCE_TYPE_UNSPECIFIED`
- `region` (string, required) — Region the resource is hosted in.
- `createdTime` (datetime, optional) — Date and time the resource record was created in Eon.
- `discoveredTime` (datetime, optional) — Date and time the resource was first discovered.
- `latestSnapshotTime` (datetime, optional) — Date and time of the resource's latest Eon snapshot.
- `oldestSnapshotTime` (datetime, optional) — Date and time of the resource's first Eon snapshot.
- `classifications` (Classifications, optional) — Resource classification details.
- `controlViolationCounts` (ControlViolations, optional) — Counts of the resource's control violations.
- `vpc` (string, optional) — VPC the resource is in.
- `subnets` (list of string, optional) — List of subnets the resource belongs to.
- `resourceProperties` (ResourceProperties, optional) — Source resource properties. The properties present in this object change depending on the value set in `resourceType`.

### SnapshotStorage

Details about backup snapshot storage.

- `sizeBytes` (long, optional) — Total size of the resource's Eon snapshots, in bytes.
- `eonSnapshotCount` (integer, optional) — Number of Eon snapshots backing up the resource.
- `nonEonSnapshotCount` (integer, optional) — Number of non-Eon snapshots backing up the resource. Only cloud-provider-native snapshots in the source account are included in this count.

### SourceStorage

Details about storage at the source.

- `sizeBytes` (long, optional) — Total storage size at the source, in bytes.

### Classifications

Resource classification details.

- `dataClassesDetails` (DataClassesDetails, optional) — Details about the resource's data classes.
- `environmentDetails` (EnvironmentDetails, optional) — Details about the resource's environment.
- `appsDetails` (AppsDetails, optional) — Details about apps installed on the resource.

### ControlViolations

- `high` (integer, required) — Number of high-severity control violations.
- `medium` (integer, required) — Number of medium-severity control violations.
- `low` (integer, required) — Number of low-severity control violations.
- `muted` (integer, required) — Number of muted control violations.

### ResourceProperties

Source resource properties. The properties present in this object change depending on the value set in `resourceType`.

- `awsEc2` (AwsEc2Resource, optional) — Properties of the original AWS EC2 instance. Present only when `resourceType` is set to `AWS_EC2`.
- `awsDynamoDb` (AwsDynamoDbResource, optional)

### DataClassesDetails

Details about the resource's data classes.

- `dataClasses` (list of string, optional) — List of data classes.
- `isOverridden` (boolean, optional) — Whether the data classes are manually overridden. If `true`, the list of data classes is user-defined and remains static. If `false`, the data classes are automatically detected and listed by Eon.

### EnvironmentDetails

Details about the resource's environment.

- `environment` (enum, optional) — The resource's environment: production, internal production, or staging. `ENVIRONMENT_UNSPECIFIED` is supported only in responses.
  - Allowed values: `PROD`, `PROD_INTERNAL`, `STAGE`, `ENVIRONMENT_UNSPECIFIED`
- `isOverridden` (boolean, optional) — Whether the environment is manually overridden. If `true`, the environment is user-defined and remains static. If `false`, the environment is automatically detected and set by Eon.

### AppsDetails

Details about apps installed on the resource.

- `apps` (list of App, optional) — List of app details.
- `isOverridden` (boolean, optional) — Whether the apps are manually overridden. If `true`, the list of apps is user-defined and remains static. If `false`, the apps are automatically detected and listed by Eon.

### AwsEc2Resource

Properties of the original AWS EC2 instance. Present only when `resourceType` is set to `AWS_EC2`.

- `volumes` (list of InventoryVolume, optional) — List of volumes attached to the resource.

### AwsDynamoDbResource

- `billingMode` (enum, required) — DynamoDB billing mode.
  - Allowed values: `UNSPECIFIED`, `PAY_PER_REQUEST`, `PROVISIONED`
- `readCapacityUnits` (long, required) — Provisioned read capacity units of the table.
- `writeCapacityUnits` (long, required) — Provisioned write capacity units of the table.
- `globalSecondaryIndexes` (list of DynamoDbGlobalSecondaryIndex, optional) — Global secondary indexes on the table. To minimize response size, not returned by default. To include in the response, set `include` to `DYNAMODB_INDEXES` in the request.
- `localSecondaryIndexes` (list of DynamoDbLocalSecondaryIndex, optional) — Local secondary indexes on the table. To minimize response size, not returned by default. To include in the response, set `include` to `DYNAMODB_INDEXES` in the request.

### App

- `name` (string, required) — App display name. For a list of supported apps, see [Apps](/data-protection/backup-and-protection/backup-management/classifications/resource-classifications#apps).
- `paths` (list of string, optional) — List of paths where the app was found.

### InventoryVolume

- `providerVolumeId` (string, required) — The volume's cloud-provider-assigned resource ID.
- `path` (string, required) — Path of the volume on the machine it's attached to.
- `region` (string, required) — Region the volume is hosted in.
- `tags` (map from string to string, required) — Volume tags as key-value pairs. Both keys and values are strings. If a tag is a key with no value, the value is presented as an empty string. **Example:** `{"primary": ""}`
- `availabilityZone` (string, required) — Volume availability zone.
- `volumeSettings` (VolumeSettings, required) — Provisioned volume settings.
- `encryptionKeyId` (string, optional) — ID of the encryption key used to encrypt the volume.
- `isAwsManagedKey` (boolean, optional) — Whether the encryption key is an AWS-managed KMS key. If `true`, the key is AWS-managed. If `false`, the key is customer-managed.

### DynamoDbGlobalSecondaryIndex

Global secondary index of a DynamoDB table.

- `indexName` (string, optional) — Name of the global secondary index.
- `keySchema` (list of DynamoDbIndexKeySchemaElement, optional) — Complete key schema for the global secondary index.
- `projection` (DynamoDbIndexProjection, optional) — Attributes that are copied (projected) from the table into a DynamoDB index.
- `onDemandThroughput` (DynamoDbIndexThroughput, optional) — Throughput settings of a DynamoDB index.
- `provisionedThroughput` (DynamoDbIndexThroughput, optional) — Throughput settings of a DynamoDB index.
- `warmThroughput` (DynamoDbIndexThroughput, optional) — Throughput settings of a DynamoDB index.
- `indexSizeBytes` (long, optional, nullable) — Total size of the index, in bytes.

### DynamoDbLocalSecondaryIndex

Local secondary index of a DynamoDB table.

- `indexName` (string, optional) — Name of the local secondary index.
- `keySchema` (list of DynamoDbIndexKeySchemaElement, optional) — Complete key schema for the local secondary index.
- `projection` (DynamoDbIndexProjection, optional) — Attributes that are copied (projected) from the table into a DynamoDB index.
- `indexSizeBytes` (long, optional, nullable) — Total size of the index, in bytes.

### VolumeSettings

Provisioned volume settings.

- `type` (string, required) — Volume type.
- `sizeBytes` (long, required) — Volume size in bytes.
- `iops` (integer, optional) — Volume IOPS.
- `throughput` (integer, optional) — Volume throughput.

### DynamoDbIndexKeySchemaElement

Element of a DynamoDB index key schema.

- `name` (string, optional) — Name of the key attribute.
- `type` (enum, optional) — Role of an attribute in a DynamoDB key schema.
  - Allowed values: `HASH`, `RANGE`

### DynamoDbIndexProjection

Attributes that are copied (projected) from the table into a DynamoDB index.

- `projectionType` (enum, optional) — Set of attributes projected from a DynamoDB table into an index.
  - Allowed values: `ALL`, `KEYS_ONLY`, `INCLUDE`
- `nonKeyAttributes` (list of string, optional) — Non-key attribute names projected into the index.

### DynamoDbIndexThroughput

Throughput settings of a DynamoDB index.

- `readCapacityUnits` (long, optional, nullable) — Maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException.
- `writeCapacityUnits` (long, optional, nullable) — Maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.

## Examples

**Response**

```json
{
  "resource": {
    "id": "d38906a7-ef8e-50f5-868e-2109ab881b15",
    "backupStatus": "VIOLATIONS_DETECTED",
    "providerResourceId": "db-IPQ7PQ3Q7UMA2LIGOOSUV3B5XU",
    "resourceName": "customers db",
    "providerAccountId": "836638811603",
    "snapshotStorage": {
      "sizeBytes": 1340000000000,
      "eonSnapshotCount": 131,
      "nonEonSnapshotCount": 26
    },
    "sourceStorage": {
      "sizeBytes": 561566973952
    },
    "tags": {
      "app": "web",
      "env": "prod"
    },
    "cloudProvider": "AWS",
    "resourceType": "AWS_EC2",
    "region": "eu-central-1",
    "createdTime": "2024-08-29T13:24:03Z",
    "discoveredTime": "2024-11-29T11:22:33Z",
    "latestSnapshotTime": "2024-11-28T23:01:39Z",
    "oldestSnapshotTime": "2024-09-24T08:21:01Z",
    "classifications": {
      "dataClassesDetails": {
        "dataClasses": [
          "PII",
          "PHI"
        ],
        "isOverridden": true
      },
      "environmentDetails": {
        "environment": "PROD",
        "isOverridden": true
      },
      "appsDetails": {
        "apps": [
          {
            "name": "Jenkins",
            "paths": [
              "string"
            ]
          }
        ],
        "isOverridden": true
      }
    },
    "controlViolationCounts": {
      "high": 3,
      "medium": 2,
      "low": 1,
      "muted": 0
    },
    "vpc": "vpc-041d4426c201ee954",
    "subnets": [
      "subnet-0ee871cbf003fd112",
      "subnet-04e455b5a740d90c4"
    ],
    "resourceProperties": {
      "awsEc2": {
        "volumes": [
          {
            "providerVolumeId": "vol-0556d4633af5c430a",
            "path": "/dev/xvda",
            "region": "eu-central-1",
            "tags": {
              "primary": ""
            },
            "availabilityZone": "eu-central-1a",
            "volumeSettings": {
              "type": "gp3",
              "sizeBytes": 10000000000,
              "iops": 3000,
              "throughput": 125
            },
            "encryptionKeyId": "arn:aws:kms:eu-central-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "isAwsManagedKey": false
          }
        ]
      },
      "awsDynamoDb": {
        "billingMode": "PROVISIONED",
        "readCapacityUnits": 80000,
        "writeCapacityUnits": 80000,
        "globalSecondaryIndexes": [
          {
            "indexName": "userId-index",
            "keySchema": [
              {
                "name": "userId",
                "type": "HASH"
              }
            ],
            "projection": {
              "projectionType": "INCLUDE",
              "nonKeyAttributes": [
                "email"
              ]
            },
            "onDemandThroughput": {
              "readCapacityUnits": 100,
              "writeCapacityUnits": 100
            },
            "provisionedThroughput": {
              "readCapacityUnits": 100,
              "writeCapacityUnits": 100
            },
            "warmThroughput": {
              "readCapacityUnits": 100,
              "writeCapacityUnits": 100
            },
            "indexSizeBytes": 1048576
          }
        ],
        "localSecondaryIndexes": [
          {
            "indexName": "createdAt-index",
            "keySchema": [
              {
                "name": "userId",
                "type": "HASH"
              }
            ],
            "projection": {
              "projectionType": "INCLUDE",
              "nonKeyAttributes": [
                "email"
              ]
            },
            "indexSizeBytes": 1048576
          }
        ]
      }
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://{account-domain}.console.eon.io/api/v1/projects/1ee34dc5-0a7c-4e56-a820-917371e05c8d/resources/043090df-9fe5-4f89-9859-45db589c2936"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{account-domain}.console.eon.io/api/v1/projects/1ee34dc5-0a7c-4e56-a820-917371e05c8d/resources/043090df-9fe5-4f89-9859-45db589c2936';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://{account-domain}.console.eon.io/api/v1/projects/1ee34dc5-0a7c-4e56-a820-917371e05c8d/resources/043090df-9fe5-4f89-9859-45db589c2936")
  .header("Authorization", "Bearer <token>")
  .asString();
```