> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truenroll.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Core concepts

> The building blocks of TruEnroll: cases, credentials, features, and webhooks.

Understanding these concepts is enough to navigate every part of TruEnroll.

## Glossary

| Term                  | Definition                                                                                                                                                                                                                               |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Case**              | The central unit of work, identified by your `externalId`. Groups every document submission for a single candidate or evaluation subject.                                                                                                |
| **`externalId`**      | Your reference for a case: a candidate ID, application number, or any identifier from your own system. Unique per organization; one `externalId` maps to exactly one case.                                                               |
| **Upload**            | The set of files sent in a single `POST /cases` call. Each submission adds a new upload to the case; uploads never replace earlier ones.                                                                                                 |
| **Credential**        | A normalized academic qualification record created from one or more uploaded files, such as a degree certificate, transcript, marksheet, or supporting document. Classification produces one credential per qualification it identifies. |
| **Classification**    | The AI step that reads the uploaded files and splits them into credentials, identifying and excluding non-education documents. Controlled by the `classify` flag.                                                                        |
| **Feature**           | An opt-in capability requested per case: `extraction`, `forensics`, or `translation`. Each must be provisioned for your organization.                                                                                                    |
| **Extraction**        | Structured data pulled from a credential: candidate identity, institution, qualification, and course-level detail.                                                                                                                       |
| **Forensics**         | Fraud and tamper-detection analysis of the document, producing a report with a verdict and risk score.                                                                                                                                   |
| **Translation**       | A readable, page-structured HTML representation of a document, regardless of its original language.                                                                                                                                      |
| **Webhook**           | An HTTPS endpoint you register that receives event payloads as each processing stage completes or fails, so you don't have to poll.                                                                                                      |
| **`Idempotency-Key`** | An optional request header that makes an upload safe to retry. Replaying the same key with an identical payload returns the original upload instead of creating a duplicate.                                                             |

## Case

A **case** is the central unit of work. It is identified by your `externalId` and groups all
document submissions for a single candidate or evaluation subject. Each submission adds an
**upload** to the case.

```
Case
 ├── id              TruEnroll's unique case ID
 ├── externalId      your reference, unique per organization
 ├── status          queued | processing | completed | failed
 ├── uploads[]       one per POST /cases call
 │    ├── uploadId
 │    ├── files[]    the uploaded source files
 │    ├── features[] one per requested feature, each with its own status
 │    ├── classify   whether to run classification (default: true)
 │    └── status     queued | processing | completed | failed
 └── credentials[]   one per education credential identified by classification
      ├── credentialId
      ├── uploadId        links back to the upload that produced this credential
      ├── credentialType  e.g. "Academic Credentials"
      └── status
```

Key behaviors:

* **`externalId` is unique per organization.** Submitting to an existing `externalId` adds a new
  upload to the existing case rather than creating a new one.
* **Status is aggregate.** A case is `completed` only when every upload (and every enabled feature
  within each upload) has reached a terminal state.
* **Soft delete.** Deleting a case excludes it from list results; the case cannot receive new uploads.

***

## Credential

A **credential** is the structured representation of a single education qualification
identified by classification. One uploaded file can produce multiple credentials. For
example, a transcript covering two degrees produces two credentials, one per qualification.
Non-education documents (ID cards, cover letters, etc.) are identified and excluded from
further processing.

A credential holds:

* The document type (e.g., academic transcript, diploma)
* Candidate identity (name, date of birth)
* The issuing institution (name, country, accreditation)
* Qualification details (degree, program, enrollment period)
* A list of courses with codes, credits, and grades

Extraction, forensics, and grade normalization all run per credential.

***

## Features

Features are opt-in capabilities you specify at case submission time. Your organization
must be provisioned for a feature before it can be used. Requesting an unavailable
feature fails synchronously with `403` before any files are stored or processed.

| Feature       | What it does                                                          | Requirement                           |
| ------------- | --------------------------------------------------------------------- | ------------------------------------- |
| `extraction`  | AI extraction of candidate identity, institution, courses, and grades | Always available                      |
| `forensics`   | Document fraud and tamper detection, runs in parallel with extraction | Must be enabled for your organization |
| `translation` | Page-structured readable representation of each file                  | Must be enabled for your organization |

Institution accreditation status is returned as part of the extraction result (the
`institution.accreditation` object). It is not a separately requested feature.

***

## API keys

Partner API keys are provisioned by your TruEnroll account manager and scoped to your
organization. All Partner API routes (`/partner/v1/...`) require a partner key; other
key types are rejected.

***

## Webhooks

TruEnroll delivers results as events rather than requiring you to poll. A **webhook configuration**
is a registered HTTPS endpoint that receives event payloads when processing stages complete.

You register webhook endpoints yourself through the Partner API. An endpoint registered with
`partner` audience receives all `case.*.completed` and `case.*.failed` events for your cases.

<CardGroup cols={2}>
  <Card title="Configuring webhooks" icon="gear" href="/partner-api/webhook-configuration">
    Register an endpoint and set the shared secret.
  </Card>

  <Card title="Webhook event reference" icon="bell" href="/partner-api/webhooks">
    Every event name, payload shape, and delivery behavior.
  </Card>
</CardGroup>
