> 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).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.interlynk.io/api/concepts/data-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
