> ## 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

> Uygulamaları yayınlayın, böylece diğer alanlar bunları keşfedebilir ve yükleyebilir.

# Marketplace

Bir uygulamayı marketplace'e yayınlamak, diğer Kazzle alanlarının onu keşfetmesini ve yüklemesini sağlar.

## Yayınlama ne yapar

Yayınlama, uygulamayı diğer alanlar tarafından yüklenebilir hale getirir. Kullanıcılar uygulamanın adını, alt başlığını, simgesini, yayıncısını ve görünürlüğünü görür, ardından kendi alanlarına yüklerler. Yayınlama, `kazzle.config.ts` dosyasında bir `subtitle` gerektirir — uygulama adının altında tek satırlık bir slogan.

Yayınlanan sürüm `main` üzerindeki en son commit'i kullanır. Yayınlanan uygulamalar için ayrı bir release dalı yoktur.

Uygulama tanımı, yüklü bir uygulamaya tıklandığında bir bileşeni açıp açmayacağını, gömülü veya harici bir URL'yi açıp açmayacağını veya hiçbir başlatma yüzeyine sahip olmayacağını açıkça seçer. Uygulamalar ayrıca açılmadan önce Kazzle kimliği gerektirebilir veya yaşam döngüsü webhook'ları alabilir.

Bir uygulamayı yayınlama hakkında bilgi için [Uygulamanızı yayınlayın](/apps/build-and-publish) bölümüne bakın.

## Yüklemeler

Birisi yayınlanan bir uygulamayı yüklediğinde, Kazzle kendi alanlarında bir yükleme kaydı oluşturur. Yükleyen alan, yüklemeyi ve onunla ilişkili tüm verileri sahiplenmiş olur.

## Kullanıcı kimliği

Oturum açmış bir Kazzle kullanıcısı yüklü bir uygulamayı açtığında, Kazzle uygulamaya geçerli kullanıcı hakkında bilgi sağlar.

Kazzle, bir taşıyıcı token olarak kısa ömürlü bir JWT ekler. Uygulama, token'ı Kazzle'nin genel JWKS'sine karşı doğrulayarak kullanıcı, alan ve yükleme bilgilerini okuyabilir.

Token şu talepleri içerir:

| Talep     | Anlamı                                |
| --------- | ------------------------------------- |
| `aud`     | `kazzle:app`                          |
| `iss`     | `https://api.kazzle.app`              |
| `sub`     | Kazzle kullanıcı kimliği              |
| `user`    | Kullanıcının `{ id, email }` bilgisi  |
| `space`   | Uygulamanın yüklendiği alanın kimliği |
| `install` | Bu belirli yüklemenin kimliği         |

Doğrulama örneği:

```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;
}
```

Uygulama tanımı, yayınlanan uygulamalar için başlatma davranışını kontrol eder:

* `launch`: `none`, adlandırılmış bir uygulama bileşeni veya açık gömülü veya harici hedefi olan bir URL'yi seçer.
* `kazzleAuth`: `required` yalnızca oturum açmış Kazzle kullanıcılarının uygulamayı açabileceği anlamına gelir; `optional` uygulamanın Kazzle kimliği olmadan açılmasına izin verir.

## Webhook'lar

Uygulama tanımı bir `webhookUrl` içeriyorsa, Kazzle uygulama yüklendiğinde veya kaldırıldığında buna HTTP POST istekleri gönderir.

`app.installed` yayıncının arka ucunun yükleme başına API'ye kimlik doğrulaması yapmak için kullanabileceği yükleme anahtarını içerir:

```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` olayı, yükleme kimliğini, uygulama kimliğini, alan kimliğini ve API URL'sini içerir. Yayıncı bu olayı aldıktan sonra yükleme anahtarını kullanmayı durdurmalıdır.

## Yükleme başına API

Her yükleme, `https://api.kazzle.app` üzerinde kapsamlı bir API'yi çağırabilir. Çağrılar, yükleme anahtarı (yayıncının arka ucundan) veya kullanıcı kimliği token'ı (barındırılan kullanıcı arayüzünden) ile kimlik doğrulaması yapılır. Tüm işlemler otomatik olarak bu yüklemeye kapsamlandırılır.

Kullanılabilir uç noktalar:

Tam istek ve yanıt şemaları Kazzle OpenAPI spec'inde `https://api.kazzle.app/openapi.json` adresinde bu yollar altında yayınlanmıştır.

| Yöntem | Yol                   | Açıklama                                            |
| ------ | --------------------- | --------------------------------------------------- |
| GET    | `/apps/secrets`       | Yükleme için depolanan gizli adlarını listele       |
| GET    | `/apps/secrets/:name` | Gizli değeri oku                                    |
| PUT    | `/apps/secrets/:name` | Gizli değeri depola                                 |
| DELETE | `/apps/secrets/:name` | Gizli sil                                           |
| GET    | `/apps/metadata`      | Yükleme için gizli olmayan meta verileri oku        |
| PUT    | `/apps/metadata`      | Yüklemenin meta verilerine güncellemeleri birleştir |

Bu API aracılığıyla yazılan gizliler, beklemede şifrelenmiş ve belirli yüklemeye izole edilmiştir. Bunlar, bir alanın vault'unda depolanan gizlilerden ayrıdır.

## Sonraki adımlar

* [Uygulamanızı yayınlayın](/apps/build-and-publish) — bir uygulamayı yayınlama ve sonrasında ne olacağı hakkında.
