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

# Core concepts

> The Passlet vocabulary — what workspaces, templates, passes, projects, and scanners are and how they fit together.

## Workspace

The top-level account container. A workspace has members (with [roles](/guides/team-and-roles)), templates, passes, projects, access tokens, webhooks, billing, and security policy. You can belong to several workspaces and switch between them under **Settings → Workspaces**.

Every workspace has an immutable **Workspace ID** and a URL-safe **API slug** — both visible under **Settings → General** and used in API requests and webhooks.

## Template

A reusable pass **design**: colors, logos, layout, fields, barcode — everything every pass issued from it will look like. A template targets **Apple Wallet**, **Google Wallet**, or both, and each wallet has its own designer with a live preview.

Templates are **versioned**:

* A template is a **Draft** until you publish it; publishing creates an immutable **published
  version** (v1, v2, …).
* Passes are always issued from — and stay **pinned to** — a specific published version, so a
  later redesign never silently changes passes already in wallets.
* You can [upgrade issued passes](/guides/updating-passes) to a newer version explicitly.

## Variable

A named placeholder defined on a template — text, integer, date/time, or a single/multiple choice — **bound** into pass fields. Variables are filled in per pass at issue time (`attendeeName`, `tier`, `seat`), and can be [updated later](/guides/updating-passes) on issued passes.

Two variable names are reserved and have special behaviour: `barcodeMessage` (what the wallet barcode encodes) and `redemption` (a per-pass override of validity windows and usage caps).

## Pass

An individual issued wallet credential, created from a published template version. A pass has:

* a **Label** — the holder's display name,
* an **External Pass ID** — your system's reference, also used for idempotency,
* a **status**: `QUEUED` → `ISSUING` → `ISSUED`, or `VOID`, `FAILED`, `EXPIRED`,
* **variable values**, a **revision history**, **add-to-wallet links**, and a **scan history**.

## Add-to-wallet link

Every issued pass exposes hosted links — one per wallet provider — that add the pass to Apple Wallet or Google Wallet. You distribute these links however you like. Links can be **resent** (regenerated, invalidating the old ones) or **revoked**. See [Distributing passes](/guides/distributing-passes).

## Project

An organizational container that groups templates and the passes issued from them — useful for separating campaigns, business lines, or per-customer deployments. Templates without a project are **Uncategorised**; passes always inherit their template's project. See [Projects](/guides/projects).

## Redemption rule

A template-level policy that controls **when** a pass can be scanned (always, during date windows, or after first scan) and **how often** (recurring limits, cooldowns, lifetime totals). Enforced server-side at scan time and projected into the wallet's native validity fields. See [Redemption & scanning](/guides/redemption-and-scanning).

## Scanner device

A mobile device running the Passlet Scanner app, connected to your workspace by scanning a **setup QR**. Scanner devices authenticate with scoped credentials — they never sign in to the admin console — and can be revoked at any time from the **Scanner app** page.

## Access token

An API key (`plt_…`) that authenticates external systems against the [public REST API](/api-reference/overview). Tokens carry **scopes** (e.g. `passes:write`, `scans:read`) that limit what they can do. See [Access tokens](/developers/access-tokens).

## Webhook

An HTTPS endpoint you register to receive pass lifecycle events (`pass.issued`, `pass.updated`, `pass.voided`, `pass.failed`, `pass.scanned`, `pass.scan.reversed`), with signed payloads and per-delivery tracking. See [Webhooks](/developers/webhooks).

## How it all fits together

```mermaid theme={null}
flowchart LR
    T[Template<br/>draft → published vN] -->|issue| P[Pass<br/>pinned to vN]
    P --> L[Add-to-wallet links]
    L --> W[Apple / Google Wallet]
    P --> S[Scans]
    SD[Scanner devices] --> S
    T -.grouped in.-> PR[Project]
    P -.inherits.-> PR
    P -->|events| WH[Webhooks]
```
