{"id":13799540,"url":"https://github.com/tejashah88/node-alexa-smapi","last_synced_at":"2026-04-02T01:51:10.649Z","repository":{"id":57311213,"uuid":"112067783","full_name":"tejashah88/node-alexa-smapi","owner":"tejashah88","description":"A node.js client library for using the Alexa Skill Management API.","archived":false,"fork":false,"pushed_at":"2019-07-09T16:20:57.000Z","size":158,"stargazers_count":13,"open_issues_count":1,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-15T14:22:42.023Z","etag":null,"topics":["alexa","alexa-skill","client-library","nodejs","skill-management","smapi"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tejashah88.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-26T08:37:00.000Z","updated_at":"2023-01-05T11:57:45.000Z","dependencies_parsed_at":"2022-09-06T05:42:04.718Z","dependency_job_id":null,"html_url":"https://github.com/tejashah88/node-alexa-smapi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tejashah88/node-alexa-smapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejashah88%2Fnode-alexa-smapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejashah88%2Fnode-alexa-smapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejashah88%2Fnode-alexa-smapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejashah88%2Fnode-alexa-smapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tejashah88","download_url":"https://codeload.github.com/tejashah88/node-alexa-smapi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejashah88%2Fnode-alexa-smapi/sbom","scorecard":{"id":872822,"data":{"date":"2025-08-11","repo":{"name":"github.com/tejashah88/node-alexa-smapi","commit":"5cfb2eb8ae3de8888345c4aa83938459215ca030"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Code-Review","score":4,"reason":"Found 5/11 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"60 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-rrc9-gqf8-8rwg","Warn: Project is vulnerable to: GHSA-4w2v-q235-vp99","Warn: Project is vulnerable to: GHSA-cph5-m8f7-6c5x","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-pp7h-53gx-mx7r","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-3gx7-xhv7-5mx3","Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5","Warn: Project is vulnerable to: GHSA-w457-6q6x-cgp9","Warn: Project is vulnerable to: GHSA-62gr-4qp9-h98f","Warn: Project is vulnerable to: GHSA-f52g-6jhx-586p","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-8hfj-j24r-96c4","Warn: Project is vulnerable to: GHSA-wc69-rhjr-hc9g","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-g6ww-v8xp-vmwg","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-3f95-r44v-8mrg","Warn: Project is vulnerable to: GHSA-28xr-mwxg-3qc8","Warn: Project is vulnerable to: GHSA-9p95-fxvg-qgq2","Warn: Project is vulnerable to: GHSA-9w5j-4mwv-2wj8","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T04:49:34.899Z","repository_id":57311213,"created_at":"2025-08-24T04:49:34.899Z","updated_at":"2025-08-24T04:49:34.899Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272149876,"owners_count":24882043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alexa","alexa-skill","client-library","nodejs","skill-management","smapi"],"created_at":"2024-08-04T00:01:03.794Z","updated_at":"2026-04-02T01:51:10.607Z","avatar_url":"https://github.com/tejashah88.png","language":"JavaScript","funding_links":[],"categories":["NPM Modules"],"sub_categories":[],"readme":"# node-alexa-smapi\n\n[![NPM Version](https://img.shields.io/npm/v/node-alexa-smapi.svg)](https://www.npmjs.com/package/node-alexa-smapi)\n[![Build Status](https://travis-ci.org/tejashah88/node-alexa-smapi.svg?branch=master)](https://travis-ci.org/tejashah88/node-alexa-smapi)\n[![Coverage Status](https://coveralls.io/repos/github/tejashah88/node-alexa-smapi/badge.svg?branch=master)](https://coveralls.io/github/tejashah88/node-alexa-smapi?branch=master)\n\nA node.js client library for using the Alexa Skill Management API.\n\n## Table Of Contents\n\n* [Obtaining Essential Credentials](#obtaining-essential-credentials)\n* [Documentation](#documentation)\n  * [Constructor](#constructor)\n  * [Constants](#constants)\n  * [Access Tokens](#access-tokens)\n  * [Skill Operations](#skill-operations)\n  * [Interaction Model Operations](#interaction-model-operations)\n  * [Account Linking Operations](#account-linking-operations)\n  * [Vendor Operations](#vendor-operations)\n  * [Skill Enablement Operations](#skill-enablement-operations)\n  * [Skill Certification Operations](#skill-certification-operations)\n  * [Skill Testing Operations](#skill-testing-operations)\n  * [Intent Request History Operations](#intent-request-history-operations)\n  * [Miscellaneous Functions](#miscellaneous-functions)\n  * [Custom API calls](#custom-api-calls)\n* [Examples](#examples)\n  * [Using Promises](#using-promises)\n  * [Using Async/Await](#using-asyncawait)\n\n## Obtaining Essential Credentials\n\nIn order to obtain the `refreshToken`, `clientId`, and `clientSecret`, you'll need to follow the instructions below:\n1. Follow [these instructions](https://developer.amazon.com/docs/smapi/ask-cli-command-reference.html#util-command) to retrieve `clientId` and `clientSecret`.\n2. Run `ask util generate-lwa-tokens` to generate a refreshToken (copy the value from `refresh_token` and use it to initialize `refreshToken` in the next step).\n3. Create a file called `secrets.json` which should look something like:\n\n```json\n{\n  \"refreshToken\": \"generated by ask util generate-lwa-tokens\",\n  \"clientId\": \"amzn1.application-oa2-client.myClientId\",\n  \"clientSecret\": \"myClientSecret\"\n}\n```\n\nAnd here is some example code to test that the credentials are valid:\n```js\nconst mySmapiClient = require('node-alexa-smapi')();\nconst mySecrets = require('./secrets.json');\n\nmySmapiClient.tokens.refresh({\n  refreshToken: mySecrets.refreshToken,\n  clientId: mySecrets.clientId,\n  clientSecret: mySecrets.clientSecret,\n}).then(() =\u003e {\n  mySmapiClient.vendors.list().then(result =\u003e {\n    console.log(`My vendor list: ${JSON.stringify(result, null, ' ')}`);\n  })\n});\n```\n\nSee the [examples](#examples) part for more examples.\n\n## Documentation\nOfficial Documentation: https://developer.amazon.com/docs/smapi/ask-cli-intro.html#smapi-intro\n\nAll methods return a promise, which either resolves to the SMAPI data received, or rejects with an error.\n\n### Constructor\n```javascript\n// Constructor for building the SMAPI REST client.\n// params should be in the form: {version: \"v0, or v1 (default)\", region: \"NA (default), EU, or FE\"}.\nObject alexaSmapi(optional Object params)\n```\n\n### Constants\n```javascript\n// All possible base URLs. By default, the NA url is used.\nconst BASE_URLS = {\n  NA: 'https://api.amazonalexa.com',\n  EU: 'https://api.eu.amazonalexa.com',\n  FE: 'https://api.fe.amazonalexa.com'\n};\n```\n\n### Access Tokens\nThis module includes operation to retrieve a SMAPI compliant (Login with Amazon) access token. Immediately after instantiation invoke alexaSmapi.tokens.refresh(params) to seed the (Authorization header) access token for all future operations.\n```javascript\n// Constructor for building the SMAPI REST client.\n// params should be in the form: {version: \"v0, or v1 (default)\", region: \"NA (default), EU, or FE\"}.\nconst alexaSmapi = require('node-alexa-smapi');\nvar smapiClient = alexaSmapi(optional Object params);\nsmapiClient.tokens.refresh({\n  refreshToken: \"MY_REFRESH_TOKEN\",\n  clientId: \"MY_CLIENT_ID\",\n  clientSecret: \"MY_CLIENT_SECRET\"\n});\n```\n\n### Skill Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/skill-operations.html\n\n```javascript\n// Fetches the skill manifest associated with the skill ID.\nObject alexaSmapi.skills.getManifest(String skillId, String stage)\n\n// Creates a new skill associated with the vendor ID.\nObject alexaSmapi.skills.create(String vendorId, Object skillManifest)\n\n// Updates a skill's manifest with the specified skill ID.\nalexaSmapi.skills.update(String skillId, String stage, Object skillManifest)\n\n// Retrieves the current statuc of the skill\nObject alexaSmapi.skills.status(String skillId)\n\n// List the skills for a specified vendorId, which is a mandatory parameter.\n// The optional maxResults and nextToken values provide paging for the results.\nObject alexaSmapi.skills.list(String vendorId, optional Integer maxResults, optional String nextToken)\n\n// Deletes a skill by its skill ID.\nalexaSmapi.skills.delete(String skillId)\n```\n\n### Interaction Model Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/interaction-model-operations.html\n\n```javascript\n// Retrieves the interaction model for a specified skill.\nObject alexaSmapi.interactionModel.get(String skillId, String stage, String locale)\n\n// Retrieves the Etag for a specified skill.\nString alexaSmapi.interactionModel.getEtag(String skillId, String stage, String locale)\n\n// Updates the interaction model for a specified skill.\nObject alexaSmapi.interactionModel.update(String skillId, String stage, String locale, Object interactionModel)\n\n// Retrieves the building status of the interaction model.\nObject alexaSmapi.interactionModel.getStatus(String skillId, String stage, String locale)\n```\n\n### Account Linking Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/account-linking-operations.html\n\n```javascript\n// Updates the account linking details\nalexaSmapi.accountLinking.update(String skillId, String stage, Object accountLinkingRequest)\n\n// Retrieves the account linking details\nObject alexaSmapi.accountLinking.readInfo(String skillId, String stage)\n\n// Deletes the account linking details\nalexaSmapi.accountLinking.delete(String skillId, String stage)\n```\n\n### Vendor Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/vendor-operations.html\n\n```javascript\n// List all of the vendors associated with a user (access token).\nArray alexaSmapi.vendors.list()\n```\n\n### Skill Enablement Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/skill-enablement.html\n\n```javascript\n// Enables a skill stage for the requestor. The requestor should be either a developer or the owner of the skill.\n// Please note that only one skill stage can be enabled for a given user at one time.\nalexaSmapi.skillEnablement.enable(String skillId, String stage)\n\n// Checks whether a skill stage is enabled or not for the requestor.\nalexaSmapi.skillEnablement.status(String skillId, String stage)\n\n// Disables a skill by deleting the skill enablement.\nalexaSmapi.skillEnablement.disable(String skillId, String stage)\n```\n\n### Skill Certification Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/skill-certification-operations.html\n\n```javascript\n// Submit a skill for certification for potential publication.\nalexaSmapi.skillCertification.submit(String skillId)\n\n// Check status of a skill certification.\n// Working for v1 only as it was implemented mainly trough trial \u0026 error as operation  is not documented under https://developer.amazon.com/docs/smapi/skill-certification-operations.html\nalexaSmapi.skillCertification.status(String vendorId, String skillId)\n\n// Withdraw a skill from the certification process.\n// Possible enumeration values for 'reason'\n// * TEST_SKILL\n// * MORE_FEATURES\n// * DISCOVERED_ISSUE\n// * NOT_RECEIVED_CERTIFICATION_FEEDBACK\n// * NOT_INTEND_TO_PUBLISH\n// * OTHER\nalexaSmapi.skillCertification.withdraw(String skillId, String reason, String message)\n```\n\n### Skill Testing Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/skill-testing-operations.html\n\n```javascript\n// Used for directly testing a skill by passing the skill request object directly.\nObject alexaSmapi.skillTesting.validate(String skillId, String stage, [String] locales)\n\n// Used for directly testing a skill by passing the skill request object directly.\nObject alexaSmapi.skillTesting.validationStatus(String skillId, String stage, String validationId)\n\n// Used for directly testing a skill by passing the skill request object directly.\nObject alexaSmapi.skillTesting.invoke(String skillId, String endpointRegion, Object skillRequest)\n\n// Simulates a skill execution.\nObject alexaSmapi.skillTesting.simulate(String skillId, String content, String locale)\n\n// Retrieves the status of the simulated skill execution.\nObject alexaSmapi.skillTesting.simulationStatus(String skillId, String requestId)\n```\n\n### Intent Request History Operations\nOfficial Documentation: https://developer.amazon.com/docs/smapi/intent-request-history.html\n\n```javascript\n// Provides aggregated and anonymized transcriptions of user speech data and intent request details for their skills, on a per-skill basis.\n// A skill must have at least 10 unique users per locale in a day, in order for data to be available for that locale for that day.\n// Here is the format for params (only the skillId is required all others are optional):\n// * skillId - The skillId for which utterance data is returned.\n// * nextToken (default: null) - Use nextToken along with the maxResults parameter to specify how many results should be loaded in the page.\n// * maxResults (default: 10) - Maximum number of result items (at-most and not at-least) that will be returned in the response.\n// * sortDirection (dafault: desc) - Valid values: asc (for ascending) or desc (for descending).\n// * sortField - Valid values: dialogAct.name, locale, intent.confidence.bin, stage, publicationStatus, intent.name, interactionType, or utteranceText.\n// * dialogAct.name (default: null) - Valid values: Dialog.ElicitSlot, Dialog.ConfirmSlot, or Dialog.ConfirmIntent.\n// * locale (default: null) - Valid values: All currently supported locales. Example: en-US. This filter can have multiple values and is not case-sensitive.\n// * intent.confidence.bin (default: null) - Valid values: HIGH, MEDIUM, OR LOW. This filter can have multiple values and is not case-sensitive.\n// * stage (default: null) - Valid values: live or development. This filter can have multiple values and is not case-sensitive.\n// * publicationStatus (default: null) - Valid values: certification or development. This filter can have multiple values and is not case-sensitive.\n// * utteranceText (default: null) - Valid values: Any string. This filter can have multiple values and is not case-sensitive.\n// * intent.name (default: null) - Valid values: Any string without white spaces. This filter can have multiple values and is not case-sensitive.\n// * intent.slot.name (default: null) - Valid values: Any string without white spaces. This filter can have multiple values and is not case-sensitive.\n// * interactionType (default: null) - This filter can have multiple values. Valid values:\n//   * ONE_SHOT: The user invokes the skill and states their intent in a single phrase.\n//   * MODAL: The user first invokes the skill and then states their intent.\nalexaSmapi.intentRequests.list(Object params)\n```\nSample params:\n```javascript\nconst params = {\n  skillId: 'MY_SKILL_ID',\n  maxResults: 10,\n  sortDirection: 'desc',\n  sortField: 'intent.confidence.bin',\n  locale: 'en-US',\n  locale: 'en-CA',\n  locale: 'en-GB',\n  locale: 'en-AU',\n  locale: 'en-IN',\n  'intent.confidence.bin': 'high',\n  'intent.confidence.bin': 'medium',\n  'intent.confidence.bin': 'low',\n  stage: 'live',\n  stage: 'development',\n  publicationStatus: 'certification',\n  publicationStatus: 'development',\n  utteranceText: 'api',\n  utteranceText: 'a pie',\n  utteranceText: 'ape',\n  'intent.name': 'testIntent',\n  'intent.name': 'AMAZON.HelpIntent',\n  interactionType: 'ONE_SHOT',\n  interactionType: 'MODAL'\n};\n```\n\n### Miscellaneous Functions\n```javascript\n// Refeshes the authorization token with the access token provided.\nalexaSmapi.refreshToken(String accessToken)\n\n// Sets the new base URL for future API calls.\nalexaSmapi.setBaseUrl(String url)\n```\n\n### Custom API calls\nDue to its recent release to the public, some API methods may not be covered by this module. In that case, a bunch of custom functions are available to use. They will return the response received from making the call.\n\n```javascript\n// Perform a custom HEAD request\nalexaSmapi.custom.head(String url)\n\n// Perform a custom GET request\nalexaSmapi.custom.get(String url, Object parameters)\n\n// Perform a custom POST request\nalexaSmapi.custom.post(String url, Object parameters)\n\n// Perform a custom PUT request\nalexaSmapi.custom.put(String url, Object parameters)\n\n// Perform a custom DELETE request\nalexaSmapi.custom.delete(String url)\n```\n\n## Examples\n\nNote that you'll always need to have a valid `refreshToken`, in which you can obtain that code below:\n```js\nconst mySmapiClient = require('node-alexa-smapi')();\nconst mySecrets = require('./secrets.json');\n\nmySmapiClient.tokens.refresh({\n  refreshToken: mySecrets.refreshToken,\n  clientId: mySecrets.clientId,\n  clientSecret: mySecrets.clientSecret,\n}).then(() =\u003e {\n  // do something with the SMAPI client...\n});\n```\n\n### Using Promises\n```javascript\nconst mySmapiClient = require('node-alexa-smapi')();\nconst mySecrets = require('./secrets.json');\n\nmySmapiClient.tokens.refresh({\n  refreshToken: mySecrets.refreshToken,\n  clientId: mySecrets.clientId,\n  clientSecret: mySecrets.clientSecret,\n})\n.then(() =\u003e smapiClient.skills.getManifest(skillId, 'development'))\n.then(data =\u003e console.log(data))\n.catch(error =\u003e console.log(error));\n```\n\n### Using Async/Await\n```javascript\nconst mySmapiClient = require('node-alexa-smapi')();\nconst mySecrets = require('./secrets.json');\n\n(async function() {\n  try {\n    await mySmapiClient.tokens.refresh({\n      refreshToken: mySecrets.refreshToken,\n      clientId: mySecrets.clientId,\n      clientSecret: mySecrets.clientSecret,\n    });\n    \n    let manifest = await smapiClient.skills.getManifest(skillId, 'development');\n    console.log(manifest);\n  } catch (error) {\n    console.log(error);\n  }\n})();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftejashah88%2Fnode-alexa-smapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftejashah88%2Fnode-alexa-smapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftejashah88%2Fnode-alexa-smapi/lists"}