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

# मार्केटप्लेस

> ऐप्स प्रकाशित करें ताकि अन्य स्पेस उन्हें खोज सकें और इंस्टॉल कर सकें।

# मार्केटप्लेस

ऐप को मार्केटप्लेस में प्रकाशित करने से यह अन्य Kazzle स्पेस के लिए खोजने और इंस्टॉल करने के लिए उपलब्ध हो जाता है।

## प्रकाशन क्या करता है

प्रकाशन ऐप को अन्य स्पेस द्वारा इंस्टॉल करने योग्य बनाता है। लोग ऐप का नाम, सबटाइटल, आइकन, प्रकाशक और दृश्यता देखते हैं, फिर इसे अपने स्पेस में इंस्टॉल करते हैं। प्रकाशन के लिए `kazzle.config.ts` में `subtitle` की आवश्यकता होती है — ऐप के नाम के नीचे एक पंक्ति की टैगलाइन।

प्रकाशित संस्करण `main` पर नवीनतम कमिट का उपयोग करता है। प्रकाशित ऐप्स के लिए कोई अलग रिलीज़ शाखा नहीं है।

ऐप परिभाषा स्पष्ट रूप से चुनती है कि इंस्टॉल किए गए ऐप पर क्लिक करने से कोई घटक खुलता है, कोई एम्बेडेड या बाहरी URL खुलता है, या कोई लॉन्च सतह नहीं है। ऐप्स खोलने से पहले Kazzle पहचान की भी आवश्यकता हो सकती है या लाइफसाइकल वेबहुक प्राप्त कर सकते हैं।

ऐप प्रकाशित करने के तरीके के लिए [अपना ऐप प्रकाशित करें](/apps/build-and-publish) देखें।

## इंस्टॉलेशन

जब कोई प्रकाशित ऐप इंस्टॉल करता है, तो Kazzle उनके स्पेस के अंदर एक इंस्टॉलेशन रिकॉर्ड बनाता है। इंस्टॉल करने वाला स्पेस इंस्टॉलेशन और इससे जुड़े किसी भी डेटा का मालिक होता है।

## उपयोगकर्ता पहचान

जब कोई लॉगिन किया हुआ Kazzle उपयोगकर्ता कोई इंस्टॉल किया गया ऐप खोलता है, तो Kazzle ऐप को वर्तमान उपयोगकर्ता के बारे में जानकारी प्रदान करता है।

Kazzle एक अल्पकालिक JWT को बेयरर टोकन के रूप में संलग्न करता है। ऐप उपयोगकर्ता, स्पेस और इंस्टॉल को पढ़ने के लिए Kazzle के सार्वजनिक JWKS के विरुद्ध टोकन को सत्यापित कर सकता है।

टोकन में ये क्लेम होते हैं:

| क्लेम     | अर्थ                             |
| --------- | -------------------------------- |
| `aud`     | `kazzle:app`                     |
| `iss`     | `https://api.kazzle.app`         |
| `sub`     | Kazzle उपयोगकर्ता ID             |
| `user`    | उपयोगकर्ता का `{ id, email }`    |
| `space`   | वह स्पेस ID जिसमें ऐप इंस्टॉल है |
| `install` | इस विशिष्ट इंस्टॉलेशन की ID      |

सत्यापन उदाहरण:

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

ऐप परिभाषा प्रकाशित ऐप्स के लिए लॉन्च व्यवहार को नियंत्रित करती है:

* `launch`: `none`, एक नामित ऐप घटक, या स्पष्ट एम्बेडेड या बाहरी लक्ष्य के साथ एक URL चुनता है।
* `kazzleAuth`: `required` का अर्थ है कि केवल लॉगिन किए गए Kazzle उपयोगकर्ता ही ऐप खोल सकते हैं; `optional` ऐप को Kazzle पहचान के बिना खोलने की अनुमति देता है।

## वेबहुक

यदि ऐप परिभाषा में `webhookUrl` शामिल है, तो Kazzle ऐप के इंस्टॉल या अनइंस्टॉल होने पर इसे HTTP POST अनुरोध भेजता है।

`app.installed` में इंस्टॉल कुंजी शामिल होती है जिसका उपयोग प्रकाशक का बैकएंड प्रति-इंस्टॉल API के लिए प्रमाणीकरण के लिए कर सकता है:

```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` में ईवेंट, इंस्टॉल ID, ऐप ID, स्पेस ID और API URL होता है। प्रकाशक को यह ईवेंट प्राप्त करने के बाद इंस्टॉल कुंजी का उपयोग बंद कर देना चाहिए।

## प्रति-इंस्टॉल API

प्रत्येक इंस्टॉलेशन `https://api.kazzle.app` पर एक स्कोप्ड API को कॉल कर सकता है। कॉल को इंस्टॉल कुंजी (प्र
