Kana Concepts
In order to get Kana working, you’ll need to first understand a few of the concepts that make up our product, alongside how these all work together. This guide acts as a reference for all things Kana - in particular the terminology and inner workings of how things link.
Key Terminology
Here’s three terms specific to Kana which are vital to know in order to understand how we think about them and what we expect from them:
How does everything fit together?
Features & Package
You can create a feature.
You can also create a package. The feature can then be added to the package.
When a feature is added to a package, we record details about the feature as it exists in that particular package.
We create a PackageFeature in order to record these details.
This includes information such as:
-
The type of feature
-
The limit of the feature within that package
Feature Type
The type of the feature within the package can either be:
-
Binary: You give users access to the feature. There is no limit.
-
Consumable: You give users an amount of this feature. There will be a limit.
As the type of feature is added when a feature is created, and is related to the feature overall (not just when it’s added to a package), we will automatically record this based on what the type of the feature is.
Feature Limit
You can set an amount of a feature that is given to a user if they select this package. The type of feature changes the required values:
-
Binary: No limit needs to be provided.
-
Consumable: The number specifying the amount of the feature given in the package (ie.
“500”
).
The same feature can therefore be used across multiple packages with different limits. The type of feature will remain consistently the same throughout however.
What if I want to give an unlimited amount of a feature in a package?
You can specify that the amount should be unlimited via the Set to unlimited button.
Users & Subscriptions
You can create a user.
That user can then be subscribed to a package.
That user will then be entitled to the features within the package they are subscribed to.
We record this with an Entitlement which is linked to a particular feature and user.
When looking for how much of a feature a user is entitled to, you will see information on:
-
The PackageSubscription of a user to a package with that feature
-
The amount of the feature that the user is entitled to plus their Consumption
Subscription
You can see a package which the feature in question is linked to, plus the user that is subscribed to that package and thus has access to the feature in question.
What if a user is subscribed to multiple packages with the same feature?
If the user is subscribed to multiple package which contain the same feature, then we will look for the associated PackageSubscription with the highest limit
and will only return the Entitlement (and thus Consumption) for that package/feature combination.
Consumption
You can see how much of the feature the user is entitled to, and the amount which they have currently used of that feature.
This only appears for a feature which is Consumable (as noted by the type of the feature on the related package). More here.
How do I report usage of a feature to Kana?
You will need to tell us when a user has used a particular feature, and how much of the feature they have used. You can do this through our API/SDKs with the recordUsage mutation.