Queries define GraphQL operations which retrieve data from the server. They return only the data you specify, based on the fields which you provide in a query. If an object is returned, then you must specify the fields of that object which you want to return. The final result of the query must only return scalars.
At the start of every query operation, ensure that you specify query before the field(s).
{"data":{"canUseFeature":{"access":true,"reason":"The user has a subcription to a package with this consumable feature and either has an allowance remaining or overage is enabled.","consumption":{"used":0,"budget":50,"overageEnabled":false}}}}
{"data":{"canUseFeature":{"access":true,"reason":"The user has a subcription to a package with this consumable feature and either has an allowance remaining or overage is enabled.","consumption":{"used":0,"budget":50,"overageEnabled":false}}}}
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.features.canUse({userId:'124',featureId:'api-calls',delta:1});console.log(data);console.log(error);
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: {API_KEY}"\-H"Content-Type:application/json"\-d'{ "query": "query listFeatures { features { id name type unitLabel unitLabelPlural metadata packages { id name metadata isAddon updatedAt } } }"}'
Understand if a User is able to use a particular Feature.
The returned access boolean is true when the user has access (for Binary features), has enough of a feature remaining to be used (for Consumable features), or has overage enabled (for Consumable features).
{"data":{"canUseFeature":{"access":true,"reason":"The user has a subcription to a package with this consumable feature and either has an allowance remaining or overage is enabled.","consumption":{"used":0,"budget":50,"overageEnabled":false}}}}
{"data":{"canUseFeature":{"access":true,"reason":"The user has a subcription to a package with this consumable feature and either has an allowance remaining or overage is enabled.","consumption":{"used":0,"budget":50,"overageEnabled":false}}}}
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.features.canUse({userId:'124',featureId:'api-calls',delta:1});console.log(data);console.log(error);
Retrieve both the current and historical usage of a Feature for a User.
Why can I only see the current usage through the SDKs?
We’re in the process of returning past usage of a feature via our SDKs. Let us know if you’d love to see it and we’ll keep you posted on when it’s launched!
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query showUsage($userId: String!, $featureId: String!) { showUsage(userId: $userId, featureId: $featureId) { current { periodStart periodEnd consumption { used budget overageEnabled } } past { periodStart periodEnd consumption { used budget overageEnabled } } } }", "variables": "{ \"userId\": \"124\", \"featureId\": \"api-calls\" }" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.features.showUsage({userId:'124',featureId:'api-calls'});console.log(data);console.log(error);
query retrievePackage($id:String!){package(id: $id){ id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}
query retrievePackage($id:String!){package(id: $id){ id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query retirevePackage($id: String!, $includeFeatures: Boolean) { package(id: $id, includeFeatures: $includeFeatures) { id name status metadata features { id name limit type unitLabel unitLabelPlural metadata } prices { id provider amount displayAmount currency interval } isAddon updatedAt } }", "variables": "{ \"id\": \"pro-plan\", \"includeFeatures\": true }" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.packages.retrieve({id:"pro-plan"});console.log(data);console.log(error);
query listPackages($status:String!){package(status: $status){ data { id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}}
query listPackages($status:String!){package(status: $status){ data { id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}}
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query listPackages($status: String!) { packages(status: $status) { id name status metadata features { id name limit type unitLabel unitLabelPlural metadata } prices { id provider amount displayAmount currency interval } isAddon updatedAt } }", "variables": "{ \"status\": \"PUBLISHED\"}" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.packages.list({includeFeatures:true});console.log(data);console.log(error);
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query retrieveUser($id: String!) { user(id: $id) { id name email metadata } }", "variables": "{ \"id\": \"124\"}" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.users.retrieve({id:'124'});console.log(data);console.log(error);
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query listUsers { users { id name email metadata } }", "variables": "{ \"id\": \"124\"}" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.users();console.log(data);console.log(error);
query retrieveSubscription($id:String!){subscription(id: $id){ id userId statuspackage{ id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}}
query retrieveSubscription($id:String!){subscription(id: $id){ id userId statuspackage{ id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}}
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query retrieveSubscription($id: String!) { subscription(id: $id) { id userId status package { id name status metadata features { id name limit type unitLabel unitLabelPlural metadata } prices { id provider amount displayAmount currency interval } isAddon updatedAt } } }", "variables": "{ \"id\": \"2\"}" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.subscriptions.retrieve({id:'2'});console.log(data);console.log(error);
query listSubscriptions($userId:String!){subscriptions(userId: $userId){ id userId statuspackage{ id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}}
query listSubscriptions($userId:String!){subscriptions(userId: $userId){ id userId statuspackage{ id name status metadata features { id name limit type unitLabel unitLabelPlural metadata} prices { id provider amount displayAmount currency interval} isAddon updatedAt}}}
curl https://api.usekana.com/graphql \-X POST \-H"Authorization: INSERT_API_KEY"\-H"Content-Type:application/json"\-d'{ "query": "query listSubscriptions($userId: String!) { subscription(userId: $userId) { id userId status package { id name status metadata features { id name limit type unitLabel unitLabelPlural metadata } prices { id provider amount displayAmount currency interval } isAddon updatedAt } } }", "variables": "{ \"userId\": \"124\"}" }'
import{KanaAdmin}from'@usekana/admin-kana-js'; \const client =newKanaAdmin({apiKey:API_KEY// Replace with own Private API Key});const{ data, error }=await client.subscriptions.list({userId:'124'});console.log(data);console.log(error);