{"id":13534134,"url":"https://github.com/appwrite/sdk-for-node","last_synced_at":"2026-02-23T08:07:06.180Z","repository":{"id":41125118,"uuid":"190069719","full_name":"appwrite/sdk-for-node","owner":"appwrite","description":"[READ-ONLY] Official Appwrite Node.js SDK 🟢","archived":false,"fork":false,"pushed_at":"2026-02-12T10:57:56.000Z","size":1367,"stargazers_count":257,"open_issues_count":6,"forks_count":47,"subscribers_count":20,"default_branch":"main","last_synced_at":"2026-02-14T16:39:58.518Z","etag":null,"topics":["appwrite","baas","hacktoberfest","mbaas","nodejs"],"latest_commit_sha":null,"homepage":"https://appwrite.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appwrite.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-03T19:33:41.000Z","updated_at":"2026-02-08T14:22:46.000Z","dependencies_parsed_at":"2023-11-16T05:23:32.748Z","dependency_job_id":"bbde86ea-a90d-4dc1-9264-78851e61a08f","html_url":"https://github.com/appwrite/sdk-for-node","commit_stats":{"total_commits":189,"total_committers":11,"mean_commits":"17.181818181818183","dds":0.5291005291005291,"last_synced_commit":"7a2418cafaf3cff4247b2e8d9c106e1ab7e9288b"},"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/appwrite/sdk-for-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwrite%2Fsdk-for-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwrite%2Fsdk-for-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwrite%2Fsdk-for-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwrite%2Fsdk-for-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appwrite","download_url":"https://codeload.github.com/appwrite/sdk-for-node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwrite%2Fsdk-for-node/sbom","scorecard":{"id":204243,"data":{"date":"2025-08-11","repo":{"name":"github.com/appwrite/sdk-for-node","commit":"ad40290cb00c6137387597196f3e6445cb3a78f1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.7,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","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":"Maintained","score":10,"reason":"17 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/autoclose.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/autoclose.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/appwrite/sdk-for-node/autoclose.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/appwrite/sdk-for-node/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/appwrite/sdk-for-node/publish.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/publish.yml:35","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" 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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"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":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/appwrite/.github/SECURITY.md:1","Info: Found linked content: github.com/appwrite/.github/SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: github.com/appwrite/.github/SECURITY.md:1"],"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:9"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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"}}]},"last_synced_at":"2025-08-16T23:21:31.461Z","repository_id":41125118,"created_at":"2025-08-16T23:21:31.461Z","updated_at":"2025-08-16T23:21:31.461Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29616962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["appwrite","baas","hacktoberfest","mbaas","nodejs"],"created_at":"2024-08-01T07:01:26.786Z","updated_at":"2026-02-23T08:07:06.173Z","avatar_url":"https://github.com/appwrite.png","language":"TypeScript","readme":"# Appwrite Node.js SDK\n\n![License](https://img.shields.io/github/license/appwrite/sdk-for-node.svg?style=flat-square)\n![Version](https://img.shields.io/badge/api%20version-1.8.1-blue.svg?style=flat-square)\n[![Build Status](https://img.shields.io/travis/com/appwrite/sdk-generator?style=flat-square)](https://travis-ci.com/appwrite/sdk-generator)\n[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee\u0026label=twitter\u0026style=flat-square)](https://twitter.com/appwrite)\n[![Discord](https://img.shields.io/discord/564160730845151244?label=discord\u0026style=flat-square)](https://appwrite.io/discord)\n\n**This SDK is compatible with Appwrite server version 1.8.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-node/releases).**\n\n \u003e This is the Node.js SDK for integrating with Appwrite from your Node.js server-side code.\n                            If you're looking to integrate from the browser, you should check [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web)\n\nAppwrite is an open-source backend as a service server that abstracts and simplifies complex and repetitive development tasks behind a very simple to use REST API. Appwrite aims to help you develop your apps faster and in a more secure way. Use the Node.js SDK to integrate your app with the Appwrite server to easily start interacting with all of Appwrite backend APIs and tools. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)\n\n![Appwrite](https://github.com/appwrite/appwrite/raw/main/public/images/github.png)\n\n## Installation\n\nTo install via [NPM](https://www.npmjs.com/):\n\n```bash\nnpm install node-appwrite --save\n```\n\n\n## Getting Started\n\n### Init your SDK\n\nInitialize your SDK with your Appwrite server API endpoint and project ID which can be found in your project settings page and your new API secret Key project API keys section.\n\n```js\nconst sdk = require('node-appwrite');\n\nlet client = new sdk.Client();\n\nclient\n    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint\n    .setProject('5df5acd0d48c2') // Your project ID\n    .setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key\n    .setSelfSigned() // Use only on dev mode with a self-signed SSL cert\n;\n```\n\n### Make Your First Request\n\nOnce your SDK object is set, create any of the Appwrite service objects and choose any request to send. Full documentation for any service method you would like to use can be found in your SDK documentation or in the [API References](https://appwrite.io/docs) section.\n\n```js\nlet users = new sdk.Users(client);\n\nlet promise = users.create(sdk.ID.unique(), \"email@example.com\", \"+123456789\", \"password\", \"Walter O'Brien\");\n\npromise.then(function (response) {\n    console.log(response);\n}, function (error) {\n    console.log(error);\n});\n```\n\n### Full Example\n```js\nconst sdk = require('node-appwrite');\n\nlet client = new sdk.Client();\n\nclient\n    .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint\n    .setProject('5df5acd0d48c2') // Your project ID\n    .setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key\n    .setSelfSigned() // Use only on dev mode with a self-signed SSL cert\n;\n\nlet users = new sdk.Users(client);\nlet promise = users.create(sdk.ID.unique(), \"email@example.com\", \"+123456789\", \"password\", \"Walter O'Brien\");\n\npromise.then(function (response) {\n    console.log(response);\n}, function (error) {\n    console.log(error);\n});\n```\n\n### Type Safety with Models\n\nThe Appwrite Node SDK provides type safety when working with database documents through generic methods. Methods like `listDocuments`, `getDocument`, and others accept a generic type parameter that allows you to specify your custom model type for full type safety.\n\n**TypeScript:**\n```typescript\ninterface Book {\n    name: string;\n    author: string;\n    releaseYear?: string;\n    category?: string;\n    genre?: string[];\n    isCheckedOut: boolean;\n}\n\nconst databases = new Databases(client);\n\ntry {\n    const documents = await databases.listDocuments\u003cBook\u003e(\n        'your-database-id',\n        'your-collection-id'\n    );\n    \n    documents.documents.forEach(book =\u003e {\n        console.log(`Book: ${book.name} by ${book.author}`); // Now you have full type safety\n    });\n} catch (error) {\n    console.error('Appwrite error:', error);\n}\n```\n\n**JavaScript (with JSDoc for type hints):**\n```javascript\n/**\n * @typedef {Object} Book\n * @property {string} name\n * @property {string} author\n * @property {string} [releaseYear]\n * @property {string} [category]\n * @property {string[]} [genre]\n * @property {boolean} isCheckedOut\n */\n\nconst databases = new Databases(client);\n\ntry {\n    /** @type {Models.DocumentList\u003cBook\u003e} */\n    const documents = await databases.listDocuments(\n        'your-database-id',\n        'your-collection-id'\n    );\n    \n    documents.documents.forEach(book =\u003e {\n        console.log(`Book: ${book.name} by ${book.author}`); // Type hints available in IDE\n    });\n} catch (error) {\n    console.error('Appwrite error:', error);\n}\n```\n\n**Tip**: You can use the `appwrite types` command to automatically generate TypeScript interfaces based on your Appwrite database schema. Learn more about [type generation](https://appwrite.io/docs/products/databases/type-generation).\n\n### Error Handling\n\nThe Appwrite Node SDK raises `AppwriteException` object with `message`, `code` and `response` properties. You can handle any errors by catching `AppwriteException` and present the `message` to the user or handle it yourself based on the provided error information. Below is an example.\n\n```js\nlet users = new sdk.Users(client);\n\ntry {\n    let res = await users.create(sdk.ID.unique(), \"email@example.com\", \"+123456789\", \"password\", \"Walter O'Brien\");\n} catch(e) {\n    console.log(e.message);\n}\n```\n\n### Learn more\nYou can use the following resources to learn more and get help\n- 🚀 [Getting Started Tutorial](https://appwrite.io/docs/getting-started-for-server)\n- 📜 [Appwrite Docs](https://appwrite.io/docs)\n- 💬 [Discord Community](https://appwrite.io/discord)\n- 🚂 [Appwrite Node Playground](https://github.com/appwrite/playground-for-node)\n\n\n## Contribution\n\nThis library is auto-generated by Appwrite custom [SDK Generator](https://github.com/appwrite/sdk-generator). To learn more about how you can help us improve this SDK, please check the [contribution guide](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md) before sending a pull-request.\n\n## License\n\nPlease see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information.","funding_links":[],"categories":["SDK","TypeScript"],"sub_categories":["Official Appwrite SDKs"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappwrite%2Fsdk-for-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappwrite%2Fsdk-for-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappwrite%2Fsdk-for-node/lists"}