> For the complete documentation index, see [llms.txt](https://docs.interlynk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.interlynk.io/api/concepts/data-model.md).

# Data Model

Before you call the API, it helps to know how Interlynk organizes data. Four levels nest inside your organization.

```
Organization
└── Product            (a piece of software you track)
    └── Environment    (default, development, production, ...)
        └── Version    (one uploaded SBOM)
            └── Component   (a dependency inside that SBOM)
```

## The four levels

| Level           | What it is                                                                                      |
| --------------- | ----------------------------------------------------------------------------------------------- |
| **Product**     | A piece of software you track, for example `payments-service`.                                  |
| **Environment** | A stage within a product. Every product starts with `default`, `development`, and `production`. |
| **Version**     | A single SBOM uploaded to an environment. Each upload creates a new version.                    |
| **Component**   | One dependency listed inside a version's SBOM.                                                  |

When you upload an SBOM, you upload it to a product and an environment. The upload becomes a new version.

## Dashboard names vs API names

The GraphQL schema uses different names than the dashboard. They mean the same things. You will see the API names in queries and responses.

| Dashboard   | GraphQL schema |
| ----------- | -------------- |
| Product     | `projectGroup` |
| Environment | `project`      |
| Version     | `sbom`         |
| Component   | `component`    |

So a product's ID is the `id` of a `projectGroup`, an environment's ID is the `id` of a `project`, and a version's ID is the `id` of an `sbom`.

{% hint style="info" %}
Two field names trip people up. A version ID is called `sbomId` in most queries. An environment ID is called `projectId`. Keep that in mind when you read the [download](/api/managing-sboms/download-sbom.md) and [upload](/api/managing-sboms/upload-sbom.md) guides.
{% endhint %}

## Identifiers

Every object has a UUID `id`, for example `4e423fe0-d089-4025-b1e4-8fe9608138d6`. Most calls need one or more of these IDs.

You can refer to objects two ways:

* **By ID.** Pass the UUID directly. This is exact and fast.
* **By name.** Some calls accept a product name and environment name instead. Useful when you do not have IDs yet, for example in a build script.

To find IDs, see [List Products and Versions](/api/inventory/list-resources.md).
