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

# Marketplace

> Publiez des applications pour que d'autres espaces les découvrent et les installent.

# Marketplace

La publication d'une application sur le marketplace la rend disponible pour que d'autres espaces Kazzle la découvrent et l'installent.

## Ce que fait la publication

La publication rend l'application installable par d'autres espaces. Les utilisateurs voient le nom, le sous-titre, l'icône, l'éditeur et la visibilité de l'application, puis l'installent dans leur propre espace. La publication nécessite un `subtitle` dans `kazzle.config.ts` — un slogan d'une ligne sous le nom de l'application.

La version publiée utilise le dernier commit sur `main`. Il n'y a pas de branche de version séparée pour les applications publiées.

La définition de l'application choisit explicitement si cliquer sur une application installée ouvre un composant, ouvre une URL intégrée ou externe, ou n'a pas de surface de lancement. Les applications peuvent également exiger une identité Kazzle avant ouverture ou recevoir des webhooks de cycle de vie.

Consultez [Publiez votre application](/apps/build-and-publish) pour savoir comment publier une application.

## Installations

Quand quelqu'un installe une application publiée, Kazzle crée un enregistrement d'installation dans son espace. L'espace qui installe possède l'installation et toutes les données qui y sont associées.

## Identité utilisateur

Quand un utilisateur Kazzle connecté ouvre une application installée, Kazzle fournit à l'application des informations sur l'utilisateur actuel.

Kazzle joint un JWT de courte durée en tant que jeton porteur. L'application peut vérifier le jeton par rapport au JWKS public de Kazzle pour lire l'utilisateur, l'espace et l'installation.

Le jeton contient ces revendications :

| Revendication | Signification                                          |
| ------------- | ------------------------------------------------------ |
| `aud`         | `kazzle:app`                                           |
| `iss`         | `https://api.kazzle.app`                               |
| `sub`         | ID utilisateur Kazzle                                  |
| `user`        | `{ id, email }` de l'utilisateur                       |
| `space`       | ID de l'espace dans lequel l'application est installée |
| `install`     | ID de cette installation spécifique                    |

Exemple de vérification :

```ts theme={"theme":"material-theme-darker"}
import { jwtVerify, createRemoteJWKSet } from 'jose';

const JWKS = createRemoteJWKSet(new URL('https://api.kazzle.app/auth/.well-known/jwks.json'));

async function getUserFromToken(token: string) {
  const { payload } = await jwtVerify(token, JWKS, {
    audience: 'kazzle:app',
    issuer: 'https://api.kazzle.app',
  });
  return payload;
}
```

La définition de l'application contrôle le comportement de lancement pour les applications publiées :

* `launch` : sélectionne `none`, un composant d'application nommé, ou une URL avec une cible intégrée ou externe explicite.
* `kazzleAuth` : `required` signifie que seuls les utilisateurs Kazzle connectés peuvent ouvrir l'application ; `optional` permet à l'application d'être ouverte sans identité Kazzle.

## Webhooks

Si la définition de l'application inclut une `webhookUrl`, Kazzle envoie des requêtes HTTP POST quand l'application est installée ou désinstallée.

`app.installed` inclut la clé d'installation que le backend de l'éditeur peut utiliser pour s'authentifier auprès de l'API par installation :

```json theme={"theme":"material-theme-darker"}
{
  "event": "app.installed",
  "installId": "...",
  "appId": "...",
  "spaceId": "...",
  "apiUrl": "https://api.kazzle.app",
  "installKey": "kzl_inst_...",
  "user": { "id": "...", "email": "..." }
}
```

`app.uninstalled` contient l'événement, l'ID d'installation, l'ID d'application, l'ID d'espace et l'URL de l'API. L'éditeur doit cesser d'utiliser la clé d'installation après réception de cet événement.

## API par installation

Chaque installation peut appeler une API délimitée sur `https://api.kazzle.app`. Les appels sont authentifiés avec soit la clé d'installation (depuis le backend de l'éditeur), soit le jeton d'identité utilisateur (depuis l'interface hébergée). Toutes les opérations sont automatiquement délimitées à cette installation.

Points de terminaison disponibles :

Les schémas complets de requête et de réponse sont publiés dans la spécification OpenAPI de Kazzle à `https://api.kazzle.app/openapi.json` sous ces chemins.

| Méthode | Chemin                | Description                                                       |
| ------- | --------------------- | ----------------------------------------------------------------- |
| GET     | `/apps/secrets`       | Lister les noms de secrets stockés pour l'installation            |
| GET     | `/apps/secrets/:name` | Lire une valeur de secret                                         |
| PUT     | `/apps/secrets/:name` | Stocker une valeur de secret                                      |
| DELETE  | `/apps/secrets/:name` | Supprimer un secret                                               |
| GET     | `/apps/metadata`      | Lire les métadonnées non secrètes pour l'installation             |
| PUT     | `/apps/metadata`      | Fusionner les mises à jour dans les métadonnées de l'installation |

Les secrets écrits via cette API sont chiffrés au repos et isolés à l'installation spécifique. Ils sont séparés des secrets stockés dans le coffre d'un espace.

## Étapes suivantes

* [Publiez votre application](/apps/build-and-publish) — comment publier une application et ce qui se passe après.
