Node Packaged Masterfully

    ask-kodiak-js

    2.0.3 • Public • Published

    Ask Kodiak JS

    Table of Contents

    Overview

    Ask Kodiak JS is a dependency free implementation of the Ask Kodiak API for browser environments. API Keys are required to use, you can obtain those keys from Company Settings once you've created an account.

    Installation

    Ask Kodiak JS is available on npm as ask-kodiak-js.

    $ npm install --save ask-kodiak-js

    Basic Usage

    To use Ask Kodiak JS, include the JavaScript file in your page, instantiate, and go.

    Ask Kodiak JS supports using either Promises or callback functions (default).

    Promises are not supported natively in any version of Internet Explorer, so if you choose to enable promises in your implementation and want to support IE, you'll need to implement a polyfill like https://github.com/taylorhakes/promise-polyfill.

    Use Callbacks

    <script src="ask-kodiak-js/dist/ask-kodiak-js-min.js"></script>
    <script>
      var askKodiak= new AskKodiak('GROUP_ID', 'KEY'), //instantiate using your key and group id. get these from company settings in Ask Kodiak.
          callback = function (response) {
            console.log(response);
          };
     
      askKodiak.productsForCode('44-45', {}, callback); // get all products for the retail NAICS sector
      askKodiak.productsForCode('44-45', {'productCodes': 'BOP'}, callback); // get all products for the retail NAICS sector that are BOP
      askKodiak.productsForCode('44-45', {'entityTypes': 'AS+CCORP', 'productCodes': 'BOP'}, callback); // get all BOP products for the retail NAICS sector that accept Associations and C Corps as entity types
      askKodiak.trackEvent('test', {foo: 'bar'}, callback); // track an event called 'test' with one property, foo, that has a value of bar.
     
    </script> 

    Or, Use Promises

    <script src="ask-kodiak-js/dist/ask-kodiak-js-min.js"></script>
    <script>
      var askKodiak = new AskKodiak('GROUP_ID', 'KEY', true); //instantiate using your key and group id. get these from company settings in Ask Kodiak. Third boolean parameter enables promises
     
      // get all BOP products for the retail NAICS sector
      askKodiak.productsForCode('44-45', {'productCodes': 'BOP'}).then(function (response) {
        // handle response here
      }).catch(function (error) {
        // handle error here
      });
     
    </script> 
     

    API Key Security

    Your API keys give read access to your content on Ask Kodiak. Be sure to keep them safe. If you consider the information your company has added to Ask Kodiak sensitive, be sure to keep these keys behind a login screen in your app.

    Request Parameters

    For any API request that supports optional request parameters, pass an options object to the method with those values. For example, if making a request where it's important to filter by geography and owner, you would pass the following options object to the method:

    {
      'geos': 'US-MN+US-HI',
      'owners': 'ABC123'
    }

    Contributing

    Please refer to the CONTRIBUTING page for more information about how you can contribute to this project. We welcome bug reports, feature requests, code review feedback, and also pull requests.

    Supported Environments

    Ask Kodiak JS supports all major modern browsers. If you choose to enable Ask Kodiak JS Promise support in your implementation and intend to support Internet Explorer, you'll need to implement a polyfill like https://github.com/taylorhakes/promise-polyfill.

    Upgrading

    Version 2 brings with it breaking changes. Make sure to review the Ask Kodiak API Upgrade Guide before upgrading.

    Changes to this library:

    Documentation

    For a full list of options supported by each interface, see the Ask Kodiak API documentation.


    Products

    Products for Code

    Get products eligible for a given NAICS code. https://api.askkodiak.com/doc/v2/#api-Products-GetProductsForNAICSCode

    Using Callbacks
     
    //return all products for the retail sector
    askKodiak.productsForCode('44-45', options, callback);
     
    // alternative example, all products for the retail sector for companies with 1,000,000 in annual revenue
    // any valid optional request parameter for this interface can be passed in the options object.
    askKodiak.productsForCode('44-45', {'annualRevenue':1000000}, callback);
     
    Using Promises
    //return all products for the retail sector
    askKodiak.productsForCode('44-45').then(function (response) {
      //handle response
    }).catch(function (error) {
      // handle error
    });

    Products for Company

    Get products for a given Company. https://api.askkodiak.com/doc/v2/#api-Products-GetProductsForCompany

    Using Callbacks
     
    //return all products owned by the company with id -Nj840c1sd9nnByho
    askKodiak.productsForCompany('-Nj840c1sd9nnByho', options, callback)
     
    //return all BOP products owned by the company with id -Nj840c1sd9nnByho
    askKodiak.productsForCompany('-Nj840c1sd9nnByho', {'productCodes': 'BOP'}, callback);
     
    Using Promises
    //return all BOP products owned by the company with id -Nj840c1sd9nnByho
    askKodiak.productsForCompany('-Nj840c1sd9nnByho', {'productCodes': 'BOP'}).then(function (response) {
      //handle response
    }).catch(function (error) {
      // handle error
    });

    Product

    Get Product

    Return a product with the specified id. https://api.askkodiak.com/doc/v2/#api-Product-GetProduct

    Using Callbacks
     
    askKodiak.getProduct('-Kv9s36or1XZKVHvlYwx', options, callback);
     
    Using Promises
    askKodiak.getProduct('-Kv9s36or1XZKVHvlYwx').then(function (product) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Check Eligibility for NAICS Code

    Check the eligibility of a product for any valid 2-6 digit NAICS code or computed NAICS Hash. https://api.askkodiak.com/doc/v2/#api-Product-ProductIsEligibleForNAICSCode

    Using Callbacks
    askKodiak.isProductEligibleForNaics('-Kv9s36or1XZKVHvlYwx', '44-45', options, callback);
     
    Using Promises
    askKodiak.isProductEligibleForNaics('-Kv9s36or1XZKVHvlYwx', '44-45').then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Get Eligibility By NAICS Group Type

    Get the eligibility of a product at a given NAICS group level (sector, subsector, etc).https://api.askkodiak.com/doc/v2/#api-Product-ProductEligibilityByNAICSGroupType

    Using Callbacks
    askKodiak.getEligibilityByNaicsGroupType('-Kv9s36or1XZKVHvlYwx', 'sector', options, callback);
     
    Using Promises
    askKodiak.getEligibilityByNaicsGroupType('-Kv9s36or1XZKVHvlYwx', 'sector').then(function (response) {
     
    }).catch(function (error) {
      // handle error
    });

    Render Conditional Content

    Render conditional content for the product associated with the specified conditions. https://api.askkodiak.com/doc/v2/#api-Product-RenderConditionalContent

    Using Callbacks
     
    askKodiak.renderConditionalContent('-Kv9s36or1XZKVHvlYwx', { naicsGroups: '44-45', geos: 'US-MA' }, callback);
    Using Promises
     
    askKodiak.renderConditionalContent('-Kv9s36or1XZKVHvlYwx', { naicsGroups: '44-45', geos: 'US-MA' }).then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });
     

    Get Conditional Rules

    Get unprocessed conditional rules for the requested product. Please note, this interface exists primarily for debugging. The rules expressed in the response are automatically applied to other product interfaces based on the parameters of the specific request. This interface simply provides a getter for all the rules that have been specified for a product. https://api.askkodiak.com/doc/v2/#api-Product-GetConditionalRulesForProduct

    Using Callbacks
     
    askKodiak.getConditionalRules('-Kv9s36or1XZKVHvlYwx', {}, callback);
    Using Promises
     
    askKodiak.getConditionalRules('-Kv9s36or1XZKVHvlYwx', {}).then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });
     

    Company

    Get Companies

    Get the basic information about companies with storefronts on Ask Kodiak, including their name, website, and other descriptive information as available. https://api.askkodiak.com/doc/v2/#api-Company-GetCompanies

    Using Callbacks
     
    askKodiak.getCompanies(options, callback)
     
    Using Promises
    askKodiak.getCompanies().then(function (companies) {
      //handle response
    }).catch(function (error) {
      //handle error
    });

    Get Company

    Get the basic information about a company on Ask Kodiak. https://api.askkodiak.com/doc/v2/#api-Company-GetCompany

    Using Callbacks
    // get the profile of the company by it's id
    askKodiak.getCompany('-L635HNnakPWk0QNHat-', options, callback);
     
    Using Promises
    askKodiak.getCompany('-L635HNnakPWk0QNHat-').then(function (company) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    NAICS

    Get Code

    Decode a NAICS MD5 hash into the 6 digit naics code and sub-description it represents. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNaicsCode

    Using Callbacks
    askKodiak.getNaicsCode('0000dc045c872f122d694ef600c394df', options, callback);
    /*
      { 
        code: '621511',
        description: 'Pathology laboratories, medical',
        hash: '0000dc045c872f122d694ef600c394df' 
      }
    */
    Using Promises
     
    askKodiak.getNaicsCode('0000dc045c872f122d694ef600c394df').then(function (code) {
      // handle response
      /*
     
      { code: '621511',
      description: 'Pathology laboratories, medical',
      hash: '0000dc045c872f122d694ef600c394df' }
     
      */
    }).catch(function (error) {
      // handle error
    });
     

    Get Codes

    Get all computed NAICS hashes. Heads up, this is a big hunk of data. We recommend that you cache a copy on your end for best performance. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNaicsCodes

    Using Callbacks
    askKodiak.getNaicsCodes(options, callback);
    Using Promises
     
    askKodiak.getNaicsCodes().then(function (code) {
      //big wad-o-data
    }).catch(function (error) {
      // handle error
    });
     

    Get Description

    Get a description for a NAICS group. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNaicsDescription

    Using Callbacks
    askKodiak.getNaicsDescription('811310', options, callback);
    Using Promises
    askKodiak.getNaicsDescription('811310').then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Get Group

    Get any given NAICS group using its numerical group number. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNaicsGroup

    Using Callbacks
    askKodiak.getNaicsGroup('8113', options, callback);
    Using Promises
    askKodiak.getNaicsGroup('8113').then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Get Path

    Given a code, return it's NAICS parentage. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNaicsGroupPath

    Using Callbacks
    //As Array...
    askKodiak.getNaicsPath('488190', {}, callback); //{ path: [ '48-49', '488', '4881', '48819', '488190' ] 
     
    // As Object...
    askKodiak.getNaicsPath('488190', {'asObject': true}, callback);
    /*
     
      sector: '48-49',
      subsector: '488',
      industryGroup: '4881',
      internationalIndustry: '48819',
      nationalIndustry: '488190' 
    }
     
    */
     
    Using Promises
    //As Array...
    askKodiak.getNaicsPath('488190').then(function (response) {
      // handle response
      //{ path: [ '48-49', '488', '4881', '48819', '488190' ] }
    }).catch(function (error) {
      // handle error
    });
     
    // As Object...
    askKodiak.getNaicsPath('488190', {'asObject': true}).then(function (response) {
      // handle response
      /*
     
        { sector: '48-49',
          subsector: '488',
          industryGroup: '4881',
          internationalIndustry: '48819',
          nationalIndustry: '488190' }
     
      */
    }).catch(function (error) {
      // handle error
    });

    Get Sectors

    Get detailed information about all NAICS sectors. Heads up, this is a big hunk of data. We recommend that you cache a copy on your end for best performance. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNaicsSectors

    Using Callbacks
    askKodiak.getNaicsSectors(options, callback);
    Using Promises
     
    askKodiak.getNaicsSectors().then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle errors
    });
     

    Get Summary for Group Type

    Get a comprehensive list of all valid naics groups of the requested type. https://api.askkodiak.com/doc/v2/#api-NAICS-GetNAICSSummaryForGroupType

    Using Callbacks
    askKodiak.getNaicsSummaryForGroupType('sector', options, callback);
    /*
      {
        '11': 'Agriculture, Forestry, Fishing and Hunting',
        '21': 'Mining, Quarrying, and Oil and Gas Extraction',
        '22': 'Utilities',
        '23': 'Construction',
        '42': 'Wholesale Trade',
        '51': 'Information',
        '52': 'Finance and Insurance',
        '53': 'Real Estate and Rental and Leasing',
        '54': 'Professional, Scientific, and Technical Services',
        '55': 'Management of Companies and Enterprises',
        '56': 'Administrative and Support and Waste Management and Remediation Services',
        '61': 'Educational Services',
        '62': 'Health Care and Social Assistance',
        '71': 'Arts, Entertainment, and Recreation',
        '72': 'Accommodation and Food Services',
        '81': 'Other Services (except Public Administration)',
        '92': 'Public Administration',
        '31-33': 'Manufacturing',
        '44-45': 'Retail Trade',
        '48-49': 'Transportation and Warehousing'
      }
     
    */
     
    Using Promises
     
    askKodiak.getNaicsSummaryForGroupType('sector').then(function (response) {
      // handle response
      /*
      {
        '11': 'Agriculture, Forestry, Fishing and Hunting',
        '21': 'Mining, Quarrying, and Oil and Gas Extraction',
        '22': 'Utilities',
        '23': 'Construction',
        '42': 'Wholesale Trade',
        '51': 'Information',
        '52': 'Finance and Insurance',
        '53': 'Real Estate and Rental and Leasing',
        '54': 'Professional, Scientific, and Technical Services',
        '55': 'Management of Companies and Enterprises',
        '56': 'Administrative and Support and Waste Management and Remediation Services',
        '61': 'Educational Services',
        '62': 'Health Care and Social Assistance',
        '71': 'Arts, Entertainment, and Recreation',
        '72': 'Accommodation and Food Services',
        '81': 'Other Services (except Public Administration)',
        '92': 'Public Administration',
        '31-33': 'Manufacturing',
        '44-45': 'Retail Trade',
        '48-49': 'Transportation and Warehousing'
      }
     
      */
    }).catch(function (error) {
      // handle error
    });
     

    Get Summary

    Get a comprehensive list of all valid naics groups indexed by type (e.g. sector, subsector, industry-group, international-industry, or national-industry). https://api.askkodiak.com/doc/v2/#api-NAICS-GetNAICSSummary

    Using Callbacks
    askKodiak.getNaicsSummary(options, callback);
      
    Using Promises
     
    askKodiak.getNaicsSummary().then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });
     

    Admin

    Products

    Get products owned by your your group regardless of their permission. https://api.askkodiak.com/doc/v2/#api-Admin-AdminGetProducts.

    Using Callbacks
    // all products
    askKodiak.adminGetProducts(options, callback);
     
    // all products with eligibility in VA
    askKodiak.adminGetProducts({geos: 'US-VA'}, callback);
    Using Promises
    // all products
    askKodiak.adminGetProducts().then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });
     
    // all products with eligibility in VA
    askKodiak.adminGetProducts({geos: 'US-VA'}).then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Analytics

    Track Event

    Track an event (for example a search or a user action). https://api.askkodiak.com/doc/v2/#api-Analytics-TrackEvent

    Using Callbacks
    // track an event with the name 'inbound-referral' and pass it the specified data
    askKodiak.trackEvent('inbound-referral', {'referrer': 'https://www.google.com'}, callback);
     
    Using Promises
    // track an event with the name 'inbound-referral' and pass it the specified data
    askKodiak.trackEvent('inbound-referral', {'referrer': 'https://www.google.com'}).then(function (response) {
      // handle response
      //{ created: true }
    }).catch(function (error) {
      // handle error
    });

    Get Referrals

    Retrieve all of your groups referrals from Ask Kodiak. https://api.askkodiak.com/doc/v2/#api-Analytics-GetReferrals

    Using Callbacks
     
    askKodiak.getReferrals(options, callback)
     
    Using Promises
    askKodiak.getReferrals().then(function (companies) {
      //handle response
    }).catch(function (error) {
      //handle error
    });

    Get Referral

    Retrieve the details of a referral using it's id. https://api.askkodiak.com/doc/v2/#api-Analytics-GetReferral

    Using Callbacks
     
    askKodiak.getReferral('-L876NNhjuPWk0QNTay-', options, callback);
     
    Using Promises
    askKodiak.getReferral('-L876NNhjuPWk0QNTay-d').then(function (company) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Reference Data

    Business Entity Types

    Get a list of business entity types for use decoding the coded values associated with a product. https://api.askkodiak.com/doc/v2/#api-Reference_Data-BusinessEntityTypes

    Using Callbacks
    askKodiak.getRefDataEntityTypes(options, callback);
    /*
      {
        AS: 'Association',
        CA: 'Condo Association',
        CC: 'City Commission',
        CCORP: 'C Corporation',
        ...
      }
    */
    Using Promises
    askKodiak.getRefDataEntityTypes().then(function (response) {
      // handle response
      /*
      {
        AS: 'Association',
        CA: 'Condo Association',
        CC: 'City Commission',
        CCORP: 'C Corporation',
        ...
      */
    }).catch(function (error) {
      // handle error
    });

    Product Codes

    Get a list of product codes for use decoding the coded values associated with a product. https://api.askkodiak.com/doc/v2/#api-Reference_Data-ProductCodes

    Using Callbacks
    askKodiak.getRefDataProductCodes(options, callback);  
    /*
    {
      ACCT: 'Accountants Professional',
      ACHE: 'Accident and Health',
      AGENTS: 'Insurance Agents',
      AGLIA: 'Agriculture Liability',
      ...
    }
    */
     
    Using Promises
    askKodiak.getRefDataProductCodes().then(function (response) {
      // handle response
      /*
      {
        ACCT: 'Accountants Professional',
        ACHE: 'Accident and Health',
        AGENTS: 'Insurance Agents',
        AGLIA: 'Agriculture Liability',
        ...
      }
      */
    }).catch(function (error) {
      // handle error
    });

    Geographies

    Get geographies supported by Ask Kodiak as objects indexed by an ISO 3166-2 code. For more information on the ISO 3166 standard, see https://www.iso.org/iso-3166-country-codes.html. https://api.askkodiak.com/doc/v2/#api-Reference_Data-Geographies

    Using Callbacks
    askKodiak.getRefDataGeos(options, callback);
     
    Using Promises
    askKodiak.getRefDataGeos().then(function (response) {
      // handle response
    }).catch(function (error) {
      // handle error
    });

    Suggest

    If your application has a scenario where the user needs to type in a NAICS code, these interfaces are great for making suggestions in a type-ahead control.

    Naics Codes

    Get suggested hashes associated with a search term. https://api.askkodiak.com/doc/v2/#api-Suggest-NAICSCodes

    Using Callbacks
    // returns 20 hits...
    askKodiak.suggestNaicsCodes('ro', {}, callback);
     
    // returns 100 hits...
    askKodiak.suggestNaicsCodes('ro', { hitsPerPage: '100' } callback);
    Using Promises
    // returns 20 hits...
    askKodiak.suggestNaicsCodes('ro').then(function (response) {
      console.log(response.hits.length);
    }).catch(function (error) {
      console.error(error);
    });
     
    // returns 100 hits...
    askKodiak.suggestNaicsCodes('ro', { hitsPerPage: '100' }).then(function (response) {
      console.log(response.hits.length);
    }).catch(function (error) {
      console.error(error);
    });

    Naics Groups

    Get suggested 2-6 digit NAICS groups for a search term. https://api.askkodiak.com/doc/v2/#api-Suggest-NAICSGroups

    Using Callbacks
    // returns 20 hits...
    askKodiak.suggestNaicsGroups('ro', {}, callback);
     
    // page three of results 5 pages at a time..
    askKodiak.suggestNaicsGroups('ro', { hitsPerPage: 5, page: 3 }, callback);
    Using Promises
    // returns 20 hits...
    askKodiak.suggestNaicsGroups('ro').then(function (response) {
      console.log(response.hits.length);
    }).catch(function (error) {
      console.error(error);
    });
     
    // page three of results 5 pages at a time..
    askKodiak.suggestNaicsGroups('ro', { hitsPerPage: 5, page: 3 }).then(function (response) {
      console.log(response.hits.length);
    }).catch(function (error) {
      console.error(error);
    });

    Install

    npm i ask-kodiak-js

    DownloadsWeekly Downloads

    9

    Version

    2.0.3

    License

    MIT

    Unpacked Size

    315 kB

    Total Files

    39

    Last publish

    Collaborators

    • tairamandy
    • albertmw
    • aegbertjr