How to setup

1. Install

Run the following command in your terminal to install the package globally:

npm install -g @usekana/cli

2. Add API Keys

Find your private Admin (Backend) API Keys in the Dashboard. You will need both the development and live environment API Keys. Add these to a .env file in your project like so:

KANA_DEV_KEY="prv_test_..."
KANA_LIVE_KEY="prv_live_..."

Click on the ‘Live environment’ toggle in the upper right hand corner of the dashboard to switch environments. The dashboard primary colour will be purple when development and green when live.

3. Setup your YAML file

The YAML file is the source of truth for your pricing and packaging configurations where you can see and define all your packages and features. How to initially set this upon will vary based on if you already have packages and features setup previously in Kana.

The generated Kana YAML configuration files will sit within a kana folder in your repository.

Existing configuration

If you already have packages and features setup, run the following in the root directory of your project to autogenerate the ./kana/kana.dev.yaml file with your existing configuration:

kana pull

New configuration

If you’re getting started for the first time without prior setup, run the following in the root directory of your project to generate an example  ./kana/kana.dev.yaml file:

kana bootstrap

How to make changes

1. Edit the YAML file

Add or edit the packages and features within the YAML file with the correct nesting and all necessary fields. The potential nestings/fields are:

File

On the top-level of the YAML file.

FieldDescription
versionThe version of the configuration for experimentation or if you have multiple pricing models. Not functional currently.
updatedThe time when the configuration was last updated.
projectThe identifier of the workspace within Kana.

Features

Starts with features.

FieldDescription
idThe identifier of the feature.
nameThe name of the feature.
typeThe type of the feature. Can be either BINARY or CONSUMABLE.

Packages

Starts with packages and the status of the package. This can be draft or published.

FieldDescription
idThe identifier of the package.
nameThe name of the package.
featuresThe features within the package. Can have an id which corresponds to that in ‘Features’ and a limit if the type of that feature is CONSUMABLE.

Example

version: 1.0.0

# Updated: Fri Oct 14 2022 13:57:25 GMT+0100 (Irish Standard Time)

# PROJECT: testApp123

# FEATURES
features:
  - id: messages
    name: Messages
    type: BINARY
  - id: api-calls
    name: API Calls
    type: CONSUMABLE
  - id: Seat
    name: Seats
    type: CONSUMABLE
  - id: 24-hour-support
    name: 24 Hour Support
    type: BINARY
  - id: email-messages
    name: Email Messages
    type: CONSUMABLE
  - id: known-email-messages
    name: Known Email Messages
    type: CONSUMABLE
  - id: add-on-packages
    name: Add-on Packages
    type: CONSUMABLE

# PACKAGES
packages:
  draft:
    - id: premium
      name: Add-on
      features: []
    - id: extra-messages-500
      name: 500 Extra Messages
      features:
        - id: api-calls
          limit: 500
    - id: addon
      name: Base
      features:
        - id: api-calls
          limit: 200
    - id: pro
      name: Pro
      features:
        - id: api-calls
          limit: 50
  published:
    - id: free
      name: Free
      features:
        - id: api-calls
          limit: 50
    - id: identifier
      name: Basic
      features:
        - id: messages
        - id: api-calls
          limit: 1000
    - id: pro-package
      name: Pro
      features:
        - id: Seat
          limit: 10
        - id: email-messages
          limit: 5

2. Validate the changes

We strongly recommend checking whether your configuration is correctly structured or if you have introduced any breaking changes with your changes. To do so, run the following command:

kana validate

3. Publish the changes

When you are ready, you will need to publish your updated kana.yaml file to production by running the following command:

kana publish