A product in Lukittu represents a software application that you want to manage access to. Through Lukittu’s flexible access control system, each license key can grant access to one or multiple products.
When implementing Lukittu in your application, you should specify which Lukittu product the software represents. While optional, this is recommended for:
Better tracking capabilities
Improved access management
Enhanced usage analytics
Product identification is done using a UUID v4 product ID in your implementation.
This is especially useful for classloader users who distribute Java JAR files to different platforms. Each platform can have its own branch with platform-specific releases while maintaining consistent versioning schemes.
We recommend following semver (Semantic Versioning)
conventions.
Semantic versioning:
Provides clear version hierarchy
Communicates change significance
Maintains industry-standard versioning
Helps users understand update importance
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Lukittu Documentation","colors":{"primary":"#4153af","light":"#4153af","dark":"#4153af"},"favicon":"https://mintcdn.com/lukittu/6zJgnK18BX-BsmLa/favicon.svg?fit=max\u0026auto=format\u0026n=6zJgnK18BX-BsmLa\u0026q=85\u0026s=96699ca0acde48eabbc067d6a49a4a79","logo":{"light":"https://mintcdn.com/lukittu/IMyITV4Hm6mm3d3f/logo/light.svg?fit=max\u0026auto=format\u0026n=IMyITV4Hm6mm3d3f\u0026q=85\u0026s=c8e52d03fc17d8237abc8151fd8136bf","dark":"https://mintcdn.com/lukittu/IMyITV4Hm6mm3d3f/logo/dark.svg?fit=max\u0026auto=format\u0026n=IMyITV4Hm6mm3d3f\u0026q=85\u0026s=d56767962980da3fd2602f121eeacb28"},"navbar":{"links":[{"label":"Discord","href":"https://discord.lukittu.com"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.lukittu.com"}},"footer":{"socials":{"discord":"https://discord.lukittu.com"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Documentation","href":"https://docs.lukittu.com","icon":"book-open-cover"},{"anchor":"Discord-server","href":"https://discord.lukittu.com","icon":"discord"},{"anchor":"Blog","href":"https://www.lukittu.com/blog","icon":"newspaper"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lukittu","hasAudioNarration":false,"actualSubdomain":"lukittu","customDomains":["docs.lukittu.com"],"gitSource":{"type":"github","owner":"kasperip","repo":"lukittu-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aaf857034b3bad849e9acb7","collectionId":"3ff6e04f-edfa-4627-8100-8e499f9f6457","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aaf857034b3bad849e9acb7"},"entitlements":{},"buildId":"6aaf857034b3bad849e9acb7","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"API Reference","count":24},{"language":"default","tag":"Documentation","count":12},{"language":"default","tag":"Dev - Licenses","count":11},{"language":"default","tag":"Dev - Customers","count":5},{"language":"default","tag":"Examples","count":4},{"language":"default","tag":"Integrations","count":4},{"language":"default","tag":"Platform","count":4},{"language":"default","tag":"Client - Verify","count":3},{"language":"default","tag":"Dev - Releases","count":3},{"language":"default","tag":"Java","count":2}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"platform/products","slug":"/platform/products","pageMetadata":{"title":"Products","description":"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu's flexible access control system, each license key can grant access to one or multiple products.","href":"/platform/products"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu’s flexible access control system, each license key can grant access to one or multiple products.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Mermaid,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`product-configuration`,children:`Product Configuration`}),`\n`,_jsx(_components.p,{children:`When implementing Lukittu in your application, you should specify which Lukittu product the software represents. While optional, this is recommended for:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Better tracking capabilities`}),`\n`,_jsx(_components.li,{children:`Improved access management`}),`\n`,_jsx(_components.li,{children:`Enhanced usage analytics`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Product identification is done using a UUID v4 product ID in your implementation.`}),`\n`,_jsx(Heading,{level:`2`,id:`release-management`,children:`Release Management`}),`\n`,_jsx(Heading,{level:`3`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`Products can maintain multiple releases to track different software versions. This feature provides:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Version tracking across your user base`}),`\n`,_jsx(_components.li,{children:`Integration with remote classloader functionality`}),`\n`,_jsx(_components.li,{children:`Historical version management`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`release-states`,children:`Release States`}),`\n`,_jsx(Heading,{level:`4`,id:`1-published`,children:`1. Published`}),`\n`,_jsx(_components.p,{children:`The standard state for active releases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Available to all licenses with product access`}),`\n`,_jsx(_components.li,{children:`Can be tagged as “latest” for fallback versioning`}),`\n`,_jsx(_components.li,{children:`Represents production-ready software`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`2-draft`,children:`2. Draft`}),`\n`,_jsx(_components.p,{children:`Preparation state for upcoming releases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Created but not yet publicly available`}),`\n`,_jsx(_components.li,{children:`Allows preparation of release materials`}),`\n`,_jsx(_components.li,{children:`Can be published when ready for deployment`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`3-archived`,children:`3. Archived`}),`\n`,_jsx(_components.p,{children:`Historical state for inactive releases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`No longer available for use`}),`\n`,_jsx(_components.li,{children:`Maintained for record-keeping`}),`\n`,_jsx(_components.li,{children:`Useful for audit and tracking purposes`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`4-deprecated`,children:`4. Deprecated`}),`\n`,_jsx(_components.p,{children:`Warning state for sunset releases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Remains functional and accessible`}),`\n`,_jsx(_components.li,{children:`Includes deprecation notifications`}),`\n`,_jsx(_components.li,{children:`Encourages users to upgrade`}),`\n`,_jsx(_components.li,{children:`Helps manage version transitions`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`latest-release-tag`,children:`Latest Release Tag`}),`\n`,_jsx(_components.p,{children:`Published releases can receive the “latest” designation:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Only one release can be “latest” at a time`}),`\n`,_jsx(_components.li,{children:`Serves as the default version for unspecified requests`}),`\n`,_jsx(_components.li,{children:`Simplifies version management`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`release-branching`,children:`Release Branching`}),`\n`,_jsx(_components.p,{children:`Lukittu supports release branching to manage multiple release streams for a single product. This feature is particularly useful when:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Your product has different artifacts for different platforms`}),`\n`,_jsx(_components.li,{children:`You maintain separate release cycles for various environments`}),`\n`,_jsx(_components.li,{children:`You need to distribute platform-specific versions`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`how-branching-works`,children:`How Branching Works`}),`\n`,_jsx(_components.p,{children:`Without branches (default behavior):`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A product has a single linear release timeline`}),`\n`,_jsx(_components.li,{children:`Only one release can be designated as “latest”`}),`\n`,_jsx(_components.li,{children:`Versioning follows a standard progression (e.g., 1.0.0 → 1.0.1)`}),`\n`]}),`\n`,_jsx(_components.p,{children:`With branches:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Each branch maintains its own release timeline`}),`\n`,_jsx(_components.li,{children:`Every branch can have its own “latest” release`}),`\n`,_jsx(_components.li,{children:`Versioning is branch-specific`}),`\n`,_jsx(_components.li,{children:`Verify requests can target a specific branch’s latest or a specific version`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`branch-use-case`,children:`Branch Use Case`}),`\n`,_jsx(_components.p,{children:`This is especially useful for classloader users who distribute Java JAR files to different platforms. Each platform can have its own branch with platform-specific releases while maintaining consistent versioning schemes.`}),`\n`,_jsx(Mermaid,{chart:`graph TD\n %% Main Product Node\n Product[Product]\n\n %% Default Case Section\n subgraph \"Default Release Structure\"\n Product --> Release1.0.0[Release 1.0.0]\n Product --> Release1.0.1[Release 1.0.1]\n Release1.0.1 -->|Latest Release| Product\n end\n\n %% Branching Case Section\n subgraph \"Branching Release Structure\"\n ProductB[Product]\n ProductB --> Branch1[Branch 1]\n ProductB --> Branch2[Branch 2]\n ProductB --> DirectRelease[Branchless Releases]\n\n Branch1 --> B1R1[Release 1.0.0]\n Branch1 --> B1R2[Release 1.0.1]\n B1R2 -->|Latest Branch 1 Release| Branch1\n\n Branch2 --> B2R1[Release 1.0.0]\n Branch2 --> B2R2[Release 1.0.1]\n Branch2 --> B2R3[Release 1.0.2]\n B2R3 -->|Latest Branch 2 Release| Branch2\n\n DirectRelease --> DR1[Release 2.0.0]\n DirectRelease --> DR2[Release 2.0.1]\n DR2 -->|Latest Product Release| ProductB\n end\n\n %% Styling\n classDef product fill:#f9f,stroke:#333,stroke-width:2px\n classDef branch fill:#bbf,stroke:#333,stroke-width:1px\n classDef release fill:#bfb,stroke:#333,stroke-width:1px\n classDef latest fill:#fbb,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5\n\n class Product,ProductB product\n class Branch1,Branch2,DirectRelease branch\n class Release1.0.0,Release1.0.1,B1R1,B1R2,B2R1,B2R2,B2R3,DR1,DR2 release`}),`\n`,_jsx(Heading,{level:`4`,id:`when-to-use-branching`,children:`When to Use Branching`}),`\n`,_jsx(_components.p,{children:`Consider using release branching when:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You need to maintain separate builds for different platforms`}),`\n`,_jsx(_components.li,{children:`Your application has different feature sets across deployment targets`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`When implementing verification logic, remember to specify the branch name\nwhen targeting branch-specific releases.`})}),`\n`,_jsx(Heading,{level:`3`,id:`release-restrictions`,children:`Release Restrictions`}),`\n`,_jsx(_components.p,{children:`Control release accessibility through license-specific restrictions:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enable controlled beta testing`}),`\n`,_jsx(_components.li,{children:`Manage gradual version rollouts`}),`\n`,_jsx(_components.li,{children:`Test with select users before wide release`}),`\n`,_jsx(_components.li,{children:`Create exclusive access for specific licenses`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`best-practices`,children:`Best Practices`}),`\n`,_jsx(Heading,{level:`3`,id:`version-naming`,children:`Version Naming`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`We recommend following `,_jsx(_components.a,{href:`https://semver.org/`,children:`semver`}),` (Semantic Versioning)\nconventions.`]})}),`\n`,_jsx(_components.p,{children:`Semantic versioning:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Provides clear version hierarchy`}),`\n`,_jsx(_components.li,{children:`Communicates change significance`}),`\n`,_jsx(_components.li,{children:`Maintains industry-standard versioning`}),`\n`,_jsx(_components.li,{children:`Helps users understand update importance`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Products","description":"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu's flexible access control system, each license key can grant access to one or multiple products.","href":"/platform/products"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Product Configuration","slug":"product-configuration","depth":2,"children":[]},{"title":"Release Management","slug":"release-management","depth":2,"children":[{"title":"Overview","slug":"overview","depth":3,"children":[]},{"title":"Release States","slug":"release-states","depth":3,"children":[]},{"title":"1. Published","slug":"1-published","depth":4,"children":[]},{"title":"2. Draft","slug":"2-draft","depth":4,"children":[]},{"title":"3. Archived","slug":"3-archived","depth":4,"children":[]},{"title":"4. Deprecated","slug":"4-deprecated","depth":4,"children":[]},{"title":"Latest Release Tag","slug":"latest-release-tag","depth":3,"children":[]},{"title":"Release Branching","slug":"release-branching","depth":3,"children":[]},{"title":"How Branching Works","slug":"how-branching-works","depth":4,"children":[]},{"title":"Branch Use Case","slug":"branch-use-case","depth":4,"children":[]},{"title":"When to Use Branching","slug":"when-to-use-branching","depth":4,"children":[]},{"title":"Release Restrictions","slug":"release-restrictions","depth":3,"children":[]}]},{"title":"Best Practices","slug":"best-practices","depth":2,"children":[{"title":"Version Naming","slug":"version-naming","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"lukittu","siteName":"Lukittu Documentation","title":"Products - Lukittu Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-07T04:54:14.844Z","originalFileLocation":"platform/products.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu\u0026#x27;s flexible access control system, each license key can grant access to one or multiple products.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Lukittu Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Products - Lukittu Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu\u0026#x27;s flexible access control system, each license key can grant access to one or multiple products.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Lukittu Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.lukittu.com/platform/products\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lukittu.mintlify.app/_mintlify/api/og/v2?division=Platform\u0026amp;title=Products\u0026amp;description=A+product+in+Lukittu+represents+a+software+application+that+you+want+to+manage+access+to.+Through+Lukittu%27s+flexible+access+control+system%2C+each+license+key+can\u0026amp;theme=27b79a569590f6fb679179bf\u0026amp;signature=c77ed9990dd7f98a2f2299584e00a7fe4bbdc417f8f0912d2eb839fbc27b5c01\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Products - Lukittu Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu\u0026#x27;s flexible access control system, each license key can grant access to one or multiple products.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lukittu.mintlify.app/_mintlify/api/og/v2?division=Platform\u0026amp;title=Products\u0026amp;description=A+product+in+Lukittu+represents+a+software+application+that+you+want+to+manage+access+to.+Through+Lukittu%27s+flexible+access+control+system%2C+each+license+key+can\u0026amp;theme=27b79a569590f6fb679179bf\u0026amp;signature=c77ed9990dd7f98a2f2299584e00a7fe4bbdc417f8f0912d2eb839fbc27b5c01\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lukittu/WGwgUHgmx_zMJpWz/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Lukittu Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4153af\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.lukittu.com/platform/products\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/platform/products.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.lukittu.com/#organization\",\"name\":\"Lukittu Documentation\",\"url\":\"https://docs.lukittu.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lukittu/IMyITV4Hm6mm3d3f/logo/light.svg?fit=max\u0026auto=format\u0026n=IMyITV4Hm6mm3d3f\u0026q=85\u0026s=c8e52d03fc17d8237abc8151fd8136bf\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.lukittu.com#website\",\"name\":\"Lukittu Documentation\",\"url\":\"https://docs.lukittu.com\",\"publisher\":{\"@id\":\"https://docs.lukittu.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.lukittu.com/platform/products#webpage\",\"url\":\"https://docs.lukittu.com/platform/products\",\"name\":\"Products\",\"description\":\"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu's flexible access control system, each license key can grant access to one or multiple products.\",\"dateModified\":\"2026-01-07T04:54:14.844Z\",\"isPartOf\":{\"@id\":\"https://docs.lukittu.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.lukittu.com/platform/products#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.lukittu.com/platform/products#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lukittu Documentation\",\"item\":\"https://docs.lukittu.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Products\",\"item\":\"https://docs.lukittu.com/platform/products\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.lukittu.com/platform/products#article\",\"headline\":\"Products\",\"name\":\"Products\",\"description\":\"A product in Lukittu represents a software application that you want to manage access to. Through Lukittu's flexible access control system, each license key can grant access to one or multiple products.\",\"url\":\"https://docs.lukittu.com/platform/products\",\"mainEntityOfPage\":{\"@id\":\"https://docs.lukittu.com/platform/products#webpage\"},\"dateModified\":\"2026-01-07T04:54:14.844Z\",\"publisher\":{\"@id\":\"https://docs.lukittu.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.lukittu.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Lukittu Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Lukittu Documentation","nav":{"global":{"anchors":[{"anchor":"Documentation","href":"https://docs.lukittu.com","icon":"book-open-cover"},{"anchor":"Discord-server","href":"https://discord.lukittu.com","icon":"discord"},{"anchor":"Blog","href":"https://www.lukittu.com/blog","icon":"newspaper"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Introduction","description":"Lukittu is a modern software licensing service that provides robust APIs to add an additional licensing layer to your software, enhancing security and trackability. This documentation contains all the information you need to get started.","href":"/introduction"}]},{"group":"Platform","pages":[{"title":"Products","href":"/platform/products"},{"title":"Licenses","description":"Licenses are the cornerstone of the Lukittu system, providing access control to your software. Without a valid license, users cannot access your software. License keys enable you to track software usage and prevent unauthorized access.","href":"/platform/licenses"},{"title":"Webhooks","href":"/platform/webhooks"},{"title":"Settings","href":"/platform/settings"}]},{"group":"Integrations","pages":[{"title":"Stripe Integration","href":"/integrations/stripe"},{"title":"BuiltByBit Integration","href":"/integrations/built-by-bit"},{"title":"Polymart Integration","href":"/integrations/polymart"},{"title":"Discord Integration","href":"/integrations/discord"}]},{"group":"Hosting","pages":[{"title":"Self-hosting","href":"/hosting/self-hosting"},{"title":"Managed Hosting","href":"/hosting/managed-hosting"}]},{"group":"Security","pages":[{"title":"General overview","href":"/security/general"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"Examples","pages":[{"title":"Examples","href":"/examples/introduction"}]}]},"title":"Products - Lukittu Documentation","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":[],"chunks":[]}