{"templateId":"GuidePage","sharedDataIds":{"sidebar":"sidebar-miniapps/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["callout"]},"type":"markdown"},"seo":{"title":"Submit for review","description":"Developer API, partner integration, MCP, SDK, and customer help center.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"submit-for-review","__idx":0},"children":["Submit for review"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["MiniApps are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not self-published"]},". You build the JSON definition locally, test against your provider's API, then submit it to Karzoun for review. After approval, Karzoun registers the MiniApp and lists it in the Marketplace (or enables it for your partner program)."]},{"$$mdtype":"Tag","name":"Callout","attributes":{"type":"info","title":"Who this is for"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Independent integrators and ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/partners"},"children":["partners"]}," building connectors for external services. Karzoun operates the hosting layer — you deliver the definition and supporting assets."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-submit","__idx":1},"children":["Before you submit"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Complete document"]}," — Identity, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["actions"]},", and (if applicable) ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggers"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webhook"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sync"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source"]}," blocks per the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/miniapps/reference/document-schema"},"children":["document schema"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Unique ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ns"]}]}," — Lowercase kebab-case namespace (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["my-service"]},"). Cannot change after approval without a new submission."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Marketplace metadata"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]},", descriptions, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["icon"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["logo"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["category"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["docsUrl"]},". See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/miniapps/guides/marketplace"},"children":["Marketplace listing"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Provider assets"]}," — Host ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["icon"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["logo"]}," on HTTPS URLs you control (SVG or PNG). Karzoun does not host partner brand assets during review."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Test credentials"]}," — Sandbox API keys or OAuth app for reviewers (see checklist below)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhook URL"]}," — Document the Karzoun endpoint pattern: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{tenant-api}/miniapps/{ns}/webhooks"]}," (exact host provided during onboarding)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"submission-package","__idx":2},"children":["Submission package"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send to your Karzoun partner contact or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["developers@karzoun.chat"]},":"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Item"},"children":["Item"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Format"},"children":["Format"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["MiniApp definition"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".json"]}," file (pretty-printed) or link to private repo"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Changelog"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["What changed if this is an update"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Test account"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sandbox store / workspace + credentials for reviewers"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Setup guide"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3–5 steps for end users (can match ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," markdown)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Webhook events"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List of subscribed events and sample payloads"]}]}]}]}]},{"$$mdtype":"Tag","name":"Callout","attributes":{"type":"warning","title":"Secrets in submissions"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Never embed production secrets in the JSON you submit. Use empty strings in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.config"]}," for user-provided values. OAuth ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_secret"]}," for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["public"]}," OAuth apps are acceptable when required for the flow."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"review-process","__idx":3},"children":["Review process"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Stage"},"children":["Stage"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What happens"},"children":["What happens"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Intake"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Karzoun validates schema, naming, and security (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sensitiveKeys"]},", webhook verification)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["QA"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reviewers install in a sandbox tenant, connect auth, run actions, fire test webhooks"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Approval"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Definition is registered; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status: 'public'"]}," (or partner-only) is set by Karzoun"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Updates"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Submit a new version with incremented ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]},"; Karzoun publishes after review"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Typical turnaround is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["5–10 business days"]}," depending on complexity (OAuth + webhooks + sync take longer than bearer-token + actions)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"after-approval","__idx":4},"children":["After approval"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your MiniApp appears in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Marketplace"]}," for tenants to install."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OAuth redirect URI to register with your provider: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{SAAS_API_URL}/miniapps/{ns}/oauth2"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Webhook URL tenants register: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{SAAS_API_URL}/miniapps/{ns}/webhooks"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For breaking changes, increment ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]}," and submit again — do not change ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ns"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"updating-an-approved-miniapp","__idx":5},"children":["Updating an approved MiniApp"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Edit your JSON definition locally."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Bump ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]}," (semver)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Submit the package again with a short changelog."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Karzoun rolls out after QA — existing installs keep working unless you document migration steps."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":6},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/miniapps/guides/marketplace"},"children":["Marketplace listing"]}," — Copy and media checklist"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/miniapps/guides/troubleshooting"},"children":["Troubleshooting"]}," — Issues while building locally"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/miniapps/examples"},"children":["Examples"]}," — Reference definitions"]}]}]},"headings":[{"value":"Submit for review","id":"submit-for-review","depth":1},{"value":"Before you submit","id":"before-you-submit","depth":2},{"value":"Submission package","id":"submission-package","depth":2},{"value":"Review process","id":"review-process","depth":2},{"value":"After approval","id":"after-approval","depth":2},{"value":"Updating an approved MiniApp","id":"updating-an-approved-miniapp","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"title":"Submit for review","titleTranslationKey":"sidebar.miniapps.submission","audience":"developer","status":"published","locales":["en"],"template":"GuidePage","seo":{"title":"Submit for review"}},"lastModified":"2026-06-23T14:20:16.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/miniapps/guides/submission","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}