{"_id":"@aitmed/aitmed-ecos-sdk","_rev":"9-d9bcbc83bfb5c63856a9b82ed8a74494","name":"@aitmed/aitmed-ecos-sdk","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.1":{"name":"@aitmed/aitmed-ecos-sdk","version":"1.0.1","description":"> Application layer sdk for the AiTmed platform.","main":"dist/index.js","module":"dist/index.es.js","jsnext:main":"dist/index.es.js","types":"dist/types/index.d.ts","scripts":{"build":"npm run clean && npm run build:js && npm run build:types","build:js":"rollup -c","build:types":"tsc --emitDeclarationOnly","dev":"npx nodemon --inspect dist/index.js","start":"rollup -c -w --input src/playground.ts","clean":"rm -rf dist","test":"jest --watch","test:ci":"jest","type-check":"tsc --noEmit","bump-version":"npm version patch","prepublish-public":"npm run build && npm run bump-version","publish-public":"npm publish --access public","server-build":"rm -rf dist && webpack --mode development --config ./server/webpack.config.server.js && webpack --mode development --config ./server/webpack.config.js","server-start":"npm run server-build && export PORT=3000 && node ./dist/server.js","update-crypto-sdk-test":"npm i -d @aitmed/ecos-lvl2-sdk@latest"},"author":{"name":"Leng Zhang","email":"lengzhang@aitmed.com"},"license":"ISC","dependencies":{"@aitmed/ecos-lvl2-sdk":"^1.4.27","@babel/runtime":"^7.7.2"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-runtime":"^7.6.2","@babel/polyfill":"^7.7.0","@babel/preset-env":"^7.6.3","@babel/preset-typescript":"^7.6.0","@types/jest":"^24.0.20","@types/node":"^12.7.9","babel-jest":"^24.9.0","babel-loader":"^8.0.6","core-js":"^3.4.1","express":"^4.17.1","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^24.9.0","jest-localstorage-mock":"^2.4.0","nodemon":"^1.19.4","prettier":"^1.18.2","prettier-eslint":"^9.0.0","regenerator-runtime":"^0.13.3","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-peer-deps-external":"^2.2.0","ts-jest":"^24.1.0","typescript":"^3.7.2","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-node-externals":"^1.7.2"},"gitHead":"6d0fc9079ad752c10f544b464aa1231da47c860e","_id":"@aitmed/aitmed-ecos-sdk@1.0.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-I2cf83u7sEeQTKMkHzXMiWAIE+bRkTti9izuwEnVKaHzZxAUcuPMr3Quw7Ltj8DjJ28U0Mm5E0/mC/mqpFL9Fw==","shasum":"4c2ce0ac1ad6cbdbcf0e934357ddd2d0a55e7d2e","tarball":"https://registry.npmjs.org/@aitmed/aitmed-ecos-sdk/-/aitmed-ecos-sdk-1.0.1.tgz","fileCount":36,"unpackedSize":9223125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8ChlCRA9TVsSAnZWagAACCMP/1avy7lOnmqmXN+37j5j\n7yN3Hujl0Xw2LNt4T3pcZqqp2E2XU7RkrkOlvDWGS01dv5kPm7+RNiaDFx/d\nqTFKHHW+HprTVehT+4KdMDuF8uXDQcMyqTViJ8Sq/Q756oO6ryjdYIawEiR9\nOA1KHg+irfTdFrYL2FTZzV6b687P+wbgUJi3xfujNTO/CjlPvCd0yEGr4IUo\nXpYRKjWAh9cBpc7979KbWrdrUMFbhqmhVWfGPuHtbHXZJwf5seUHeE8gibmb\nBiMk4Tjyv+uECUV9em11sCarUb8qtOfZGRJgJ38Z29YsJLyOmwH0AgafwUUF\ng3Dap0N6njtkwWnau3mVdM1J6MvYy652uF6lnAgll377rpItyKgOCzbY9bmF\noUPc+DuoGyHGSc82bD1rj8nzfQ5yX7fq1B0J/99H6RdCcobzu5MroobdCSja\nk7yWh0u48x0XTlQZEpHWN9RsDKwv1eD+8N21QXq0x5sw57Mk7tmxAoIiql0q\n8/rJfe//kJ3R7qi78Z9IQPDlnOq3R2xsVWdx0wZ4EgIVBd71x44UzeVL8Fjr\nbIzINVN/qCZ0bsPjVbUuCHBvoJruq8p7eQuaNQLZZ8ziGCiVIF958ELjKcnY\nTve/p0yGpZNVTBnsESlgdTTEQXMyr4QXZYu+uEH65+Qgo82lA0hXGskxU+Dg\n2Zoi\r\n=rs8O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDQjV1hset74+7mUpHyEqYNlq4Lqmf/FCjymrO4wV8yOAiEApDrOGlacgaZmSy4qPVHkoXHVZs4vliEEUOlumx+uN9o="}]},"maintainers":[{"name":"lengzhang","email":"lengzhang@live.com"},{"name":"junrupait","email":"junrup@aitmed.com"},{"name":"fullstackray","email":"fullstackray@gmail.com"},{"name":"junrup","email":"pujunru@gmail.com"},{"name":"pfftdammitchris","email":"pfftdammitchris@gmail.com"},{"name":"pfftdammitchris2","email":"christopher@aitmed.com"}],"_npmUser":{"name":"fullstackray","email":"fullstackray@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aitmed-ecos-sdk_1.0.1_1576020068650_0.7019795647312395"},"_hasShrinkwrap":false},"1.0.2":{"name":"@aitmed/aitmed-ecos-sdk","version":"1.0.2","description":"> Application layer sdk for the AiTmed platform.","main":"dist/index.js","module":"dist/index.es.js","jsnext:main":"dist/index.es.js","types":"dist/types/index.d.ts","scripts":{"build":"npm run clean && npm run build:js && npm run build:types","build:js":"rollup -c","build:types":"tsc --emitDeclarationOnly","dev":"npx nodemon --inspect dist/index.js","start":"rollup -c -w --input src/playground.ts","clean":"rm -rf dist","test":"jest --watch","test:ci":"jest","type-check":"tsc --noEmit","bump-version":"npm version patch","prepublish-public":"npm run build && npm run bump-version","publish-public":"npm publish --access public","server-build":"rm -rf dist && webpack --mode development --config ./server/webpack.config.server.js && webpack --mode development --config ./server/webpack.config.js","server-start":"npm run server-build && export PORT=3000 && node ./dist/server.js","update-crypto-sdk-test":"npm i -d @aitmed/ecos-lvl2-sdk@latest"},"author":{"name":"Leng Zhang","email":"lengzhang@aitmed.com"},"license":"ISC","dependencies":{"@aitmed/ecos-lvl2-sdk":"^1.4.27","@babel/runtime":"^7.7.2"},"devDependencies":{"@babel/cli":"^7.6.4","@babel/core":"^7.6.4","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-runtime":"^7.6.2","@babel/polyfill":"^7.7.0","@babel/preset-env":"^7.6.3","@babel/preset-typescript":"^7.6.0","@types/jest":"^24.0.20","@types/node":"^12.7.9","babel-jest":"^24.9.0","babel-loader":"^8.0.6","core-js":"^3.4.1","express":"^4.17.1","html-loader":"^0.5.5","html-webpack-plugin":"^3.2.0","jest":"^24.9.0","jest-localstorage-mock":"^2.4.0","nodemon":"^1.19.4","prettier":"^1.18.2","prettier-eslint":"^9.0.0","regenerator-runtime":"^0.13.3","rollup":"^1.22.0","rollup-plugin-babel":"^4.3.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","rollup-plugin-peer-deps-external":"^2.2.0","ts-jest":"^24.1.0","typescript":"^3.7.2","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0","webpack-node-externals":"^1.7.2"},"gitHead":"f46ef79b50f2fea1d690c33814c3680072283c03","_id":"@aitmed/aitmed-ecos-sdk@1.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-N5ZOHJ73MCTdyHJB9DrkX5irlcAILaXR691CXlRagawslHshTa4vRAZmU2mKjUrbGy+WhdRex9xph2hda4Xybw==","shasum":"afa0f7933e1c8a0c823409096fdd3b16fe295649","tarball":"https://registry.npmjs.org/@aitmed/aitmed-ecos-sdk/-/aitmed-ecos-sdk-1.0.2.tgz","fileCount":36,"unpackedSize":9223122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8CsYCRA9TVsSAnZWagAA2SUP+wZlqN1KAlpAO2NmrUin\nQ2U2ySuOx1NOShCbMRt89Xos33hZgT9Y8YJRardHf8OLwzxCvb+6Qu75MvDP\nUeqlAsOh4sdY/+QsZzj6GoaW7/+L/9KjiaEGboJNsy7IpoKHJ1i4sGKcOI84\nFMioHlbZV8cx96sYdWnIFnTPOxIATYnlf/4U+nMybsvmxllaA4vzwapFCyS9\nqedM8s/VswXroigFI8j6F4iQ84s6WRYpMafSAO+xEnSyL6MPAJ0uwLAfyyVo\nolCMOLSqUmPnp+5bnjX3tCjUqMQIcfm1b0/dD7aVhV1CVQPaDQidFHOUDvKM\nHq5tiQsI/gyP7REnELXe2YZUEmRUtyeBTtRBQ769YYCpzUDaHkYgA7ek37GT\nlfjqqJsu4BddsXH8TImCAHJAEElBU6pv4302vyruq11sSXPlnNIomeoiIL4o\nUbHIyJQYDMQBJPSBiwz29sGqG2nbauSrefxiFZ/LTl80vp+eBPX6bsovlNaD\nItaMgI/gGqPeGnTiv5aIVX9ZseO9/CLofLm47P4Vr5TmZeyv4zHHEYI72AAv\nr8KDnd/Vse4ADEDmgpCePLVZDhFvi386n6zHQx2X3SuJQ5xAGbXZs10dJcX4\nx9OgSkKfkWKocDw0i61wkKtuD5pVxeD9apPmuDOUxlVH9V5mfk6TUwIEkJkq\nMsbr\r\n=qdtZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC98ZBYk9hiXRarKFv6BA4ZuP4HZBXQd49HRmu8vRK5/gIhANxsxKQJrq1kQ9XKKECIJ4Udxqz2WPbq7xIKJnh5IYgx"}]},"maintainers":[{"name":"fullstackray","email":"fullstackray@gmail.com"},{"name":"junrup","email":"pujunru@gmail.com"},{"name":"junrupait","email":"junrup@aitmed.com"},{"name":"lengzhang","email":"lengzhang@live.com"},{"name":"pfftdammitchris","email":"pfftdammitchris@gmail.com"},{"name":"pfftdammitchris2","email":"christopher@aitmed.com"}],"_npmUser":{"name":"fullstackray","email":"fullstackray@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aitmed-ecos-sdk_1.0.2_1576020759647_0.4156841440986636"},"_hasShrinkwrap":false}},"time":{"created":"2019-12-10T23:21:08.434Z","1.0.1":"2019-12-10T23:21:08.845Z","modified":"2023-02-18T08:54:33.227Z","1.0.2":"2019-12-10T23:32:39.936Z"},"maintainers":[{"email":"q441321034@gmail.com","name":"atslotus"},{"email":"3286614219@qq.com","name":"dazhoutong"},{"email":"yuyongjian1998@gmail.com","name":"yongjian.yu"},{"email":"chenxu2656@163.com","name":"chenchen.xu"},{"email":"christopher@aitmed.com","name":"pfftdammitchris2"},{"email":"pfftdammitchris@gmail.com","name":"pfftdammitchris"},{"email":"yuhan@aitmed.com","name":"blairgao"}],"description":"> Application layer sdk for the AiTmed platform.","author":{"name":"Leng Zhang","email":"lengzhang@aitmed.com"},"license":"ISC","readme":"# AiTmed's Ecos SDK\n\n## Usage\n\n```JavaScript\nconst sdk = new SDK({ apiVersion, env: 'development' })\n\nconst doSomething = async () => {\n  const phone_number = '+1 1234567890'\n  const password = '1234567890'\n  // Request Verification Code\n  const verification_code = await sdk.account.requestVerificationCode(phone_number)\n  // Create User\n  await sdk.account.create(\n    phone_number,\n    password,\n    parseInt(verification_code),\n  )\n  // Login\n  await sdk.account.login(\n    phone_number,\n    password,\n    verification_code,\n  )\n}\n```\n\n## API\n\n### [**Store**](src/common/store/Store.ts)\n\n```TypeScript\ntype ApiVersion = 'v1beta1' | 'v1beta2'\ntype ENV = 'development' | 'production'\n\ninterface ResponseCatcher {\n  (response: Response): Response\n}\n\ninterface ErrorCatcher {\n  (error: Level2Error): void\n}\n\nclass Store {\n  constructor({\n    apiVersion: ApiVersion\n    env: ENV\n  })\n\n  public readonly level2SDK\n  public env: ENV\n  public apiVersion: ApiVersion\n\n  public responseCatcher: ResponseCatcher\n  public errorCatcher: ErrorCatcher\n\n  public setResponseCatcher(catcher?: ResponseCatcher)\n  public setErrorCatcher(catcher?: ErrorCatcher)\n}\n```\n\n### [**SDK**](/src/SDK/SDK.ts)\n\n```TypeScript\nclass SDK {\n  constructor({\n    apiVersion: ApiVersion\n    env: ENV\n  })\n\n  public readonly account: Account\n  public readonly notebook: Notebook\n  public readonly note: Note\n\n  public apiVersion: ApiVersion\n\n  public setResponseCatcher(catcher?: ResponseCatcher)\n  public setErrorCatcher(catcher?: ErrorCatcher)\n}\n```\n\n### [**AiTmedError**](/src/common/AiTmedError/AiTmedError.ts)\n\n```TypeScript\nAiTmedError {\n  readonly code: number\n  readonly name: string\n  readonly message: string\n\n  constructor({\n    code?: number,\n    name?: string,\n    message?: string\n  })\n}\n```\n\n| [AiTmedError](src/common/AiTmedError/AiTmedError.ts) | Name                       | Default Message               |\n| ---------------------------------------------------- | -------------------------- | ----------------------------- |\n| -1                                                   | UNKNOW_ERROR               | error occurred                |\n| 1                                                    | PERMISSION_DENIED          | permission denied             |\n| 2                                                    | UNREGISTERED               | account is not registered     |\n| 3                                                    | REGISTERED                 | account is already registered |\n| /_ Accoutn _/                                        |                            |                               |\n| 1000                                                 | PHONE_NUMBER_INVALID       | phone number is invalid       |\n| 1001                                                 | PASSWORD_INVALID           | password is invalid           |\n| 1002                                                 | VERIFICATION_CODE_INVALID  | verification code is invalid  |\n| 1003                                                 | REQUIRED_VERIFICATION_CODE | verification code is required |\n| 1004                                                 | REQUIRED_PASSWORD          | password is required          |\n| 1005                                                 | USER_NOT_FOUND             | user is not found             |\n| /_ Notebook _/                                       |                            |                               |\n| 2000                                                 | NOTEBOOK_NOT_EXIST         | notebook is not exist         |\n| 2001                                                 | NOTEBOOK_PERMISSION_DENIED | notebook permission denied    |\n| /_ Note _/                                           |                            |                               |\n| 3000                                                 | NOTE_NOT_EXIST             | note is not exist             |\n| 3001                                                 | NOTE_PERMISSION_DENIED     | note permission denied        |\n| 3002                                                 | NOTE_CONTENT_INVALID       | note content is invalid       |\n\n### [**Account**](/src/Account/index.ts)\n\n```TypeScript\ninterface User {\n  id: Uint8Array | string\n  phone_number: string\n\n  roles: number\n\n  first_name?: string\n  middle_name?: string\n  last_name?: string\n\n  profile_photo?: string\n\n  gender?: 'MALE' | 'FEMALE' | 'PNS'\n  birthday?: number\n  languages?: string[]\n}\n```\n\n#### `account.requestVerificationCode`\n\n```TypeScript\nrequestVerificationCode(\n  phone_number: string\n): Promise<string>\n```\n\n#### `account.create`\n\n```TypeScript\ncreate(\n  phone_number: string,\n  password: string,\n  verification_code: number\n): Promise<void>\n```\n\n#### `account.login`\n\n```TypeScript\nlogin(\n  phone_number: string,\n  password: string,\n  verification_code: number\n): Promise<void>\n```\n\n#### `account.loginByPassword`\n\n```TypeScript\nlogin(\n  password: string\n): Promise<void>\n```\n\n> This method is only able to be used after login new device (`loginByVerificationCode`)\n\n#### `account.loginByVerificationCode`\n\n```TypeScript\nlogin(\n  phone_number: string,\n  verification_code: number\n): Promise<void>\n```\n\n#### `account.logout`\n\n```TypeScript\nlogout(): Status\n```\n\n#### `account.update`\n\n```TypeScript\ninterface UpdateParams {\n  first_name?: string\n  middle_name?: string\n  last_name?: string\n\n  profile_photo?: string\n\n  gender?: 'MALE' | 'FEMALE' | 'PNS'\n  birthday?: number\n  languages?: string[]\n}\nupdate(\n  id: Uint8Array | string,\n  params: UpdateParams\n): Promise<User>\n```\n\n#### `account.updatePhoneNumber` <span style='color: red'>**NOT IMPLEMENT**</span>\n\n```TypeScript\nupdatePhoneNumber(params: {\n  phone_number: string,\n  new_phone_number: string,\n  verification_code: string,\n}): Promise<User>\n```\n\n#### `account.updatePassword` <span style=\"color: red\">**NOT IMPLEMENT**</span>\n\n```TypeScript\ninterface UdpatePasswordParams {\n  phone_number: string\n  new_password: string\n  verification_code?: string\n  password?: string\n}\nupdatePassword(params: UdpatePasswordParams): Promise<void>\n```\n\n#### `account.retrieve`\n\n```TypeScript\nupdatePassword(id: Uint8Array | string): Promise<User>\n```\n\n### [**Notebook**](/src/Notebook/Notebook.ts)\n\n```TypeScript\ninterface Notebook {\n  id: Uint8Array | string\n  owner_id: Uint8Array | string\n\n  info: {\n    title: string\n    edit_mode: number\n  }\n}\n```\n\n#### `account.getStatus`\n\n```TypeScript\ngetStatus(): Status\n```\n\n#### `notebook.create`\n\n```TypeScript\ncreate(title: string): Promise<NotebookType>\n```\n\n#### `notebook.remove`\n\n```TypeScript\nremove(id: string | Uint8Array): Promise<NotebookType>\n```\n\n#### `notebook.update`\n\n```TypeScript\nupdate(id: string | Uint8Array, fields: {\n  title?: string\n}): Promise<NotebookType>\n```\n\n#### `notebook.retrieve`\n\n```TypeScript\nretrieve(id: string | Uint8Array): Promise<NotebookType>\n```\n\n#### `notebook.list`\n\n```TypeScript\nlist(params: {\n  shared?: Boolean\n  count?: number\n  edit_mode?: number\n  sort_by?: 0 | 1 | 2\n}): Promise<{\n  ids: Set<string | Uint8Array>\n  mapper: Map<string | Uint8Array, NotebookType>\n}>\n```\n\n#### `notebook.share` <span style='color: red'>**NOT IMPLEMENT**</span>\n\n```TypeScript\nshare(\n  id: string | Uint8Array,\n  invite_phone_number: string,\n  edit_mode: number\n): Promise<void>\n```\n\n#### `notebook.unshare` <span style='color: red'>**NOT IMPLEMENT**</span>\n\n```TypeScript\nunshare(\n  id: string | Uint8Array,\n  invited_phone_number: string\n): Promise<void>\n```\n\n### [**Note**](/src/Note/index.ts)\n\n```TypeScript\ninterface NoteBase {\n  id: string\n  owner_id: string\n  notebook_id: string\n  edit_mode: number\n\n  title: string\n\n  tags: string[]\n\n  created_at: number\n  modified_at: number\n  modified_by: string\n}\ntype NoteTypes =\n  | 0 // text\n  | 1 // form\n\ninterface Note extends NoteBase {\n  type: NoteTypes\n  content: string\n}\n\ntype NoteFileTypes =\n  | 2 // image\n  | 3 // pdf\n  | 4 // vedio\n\ninterface NoteFile extends NoteBase {\n  // title will be the file name\n  type: NoteFileTypes\n  file: Blob\n  file_size: number\n}\n```\n\n#### `note.create`\n\n```TypeScript\ncreate(params: {\n    notebook_id: string\n    title: string\n    content: string | Blob\n    type: NoteTypes | NoteFileTypes\n}): {\n  code: Code\n  data: {\n    note: Note | NoteFile | null\n  }\n}\n```\n\n| Return Code                |     |\n| -------------------------- | --- |\n| SUCCESS                    |\n| PERMISSION_DENIED          |\n| NOTEBOOK_NOT_EXIST         |\n| NOTEBOOK_PERMISSION_DENIED |\n\n#### `note.remove`\n\n```TypeScript\nremove(id: string): {\n  code: Code\n  data: {\n    note: Note | NoteFile | null\n  }\n}\n```\n\n| Return Code                |     |\n| -------------------------- | --- |\n| SUCCESS                    |\n| PERMISSION_DENIED          |\n| NOTEBOOK_NOT_EXIST         |\n| NOTEBOOK_PERMISSION_DENIED |\n\n#### `note.update`\n\n```TypeScript\nupdate(id: string, fields: {\n  notebook_id?: string\n  title?: string\n  content?: string | Blob\n}): {\n  code: Code\n  data: {\n    note: Note | NoteFile | null\n  }\n}\n```\n\n| Return Code                |     |\n| -------------------------- | --- |\n| SUCCESS                    |\n| PERMISSION_DENIED          |\n| NOTEBOOK_NOT_EXIST         |\n| NOTEBOOK_PERMISSION_DENIED |\n| NOTE_NOT_EXIST             |\n| NOTE_PERMISSION_DENIED     |\n| NOTE_CONTENT_INVALID       |\n\n#### `note.retrieve`\n\n```TypeScript\nretrieve(id: string): {\n  code: Code\n  data: {\n    note: Note | NoteFile | null\n  }\n}\n```\n\n| Return Code            |     |\n| ---------------------- | --- |\n| SUCCESS                |\n| PERMISSION_DENIED      |\n| NOTE_NOT_EXIST         |\n| NOTE_PERMISSION_DENIED |\n\n#### `note.list`\n\n```TypeScript\nlist(notebook_id: string, options: {\n  shared?: Boolean\n\n  types?: (NoteTypes | NoteFileTypes)[]\n  tags?: string[]\n\n  count?: number\n  edit_mode?: number\n  sort_by?: 0 | 1 | 2\n}): {\n  code: Code\n  data: {\n    ids: string[]\n    mapper: {\n      [id: string]: Note | NoteFile\n    }\n  }\n}\n```\n\n| Return Code            |     |\n| ---------------------- | --- |\n| SUCCESS                |\n| PERMISSION_DENIED      |\n| NOTE_NOT_EXIST         |\n| NOTE_PERMISSION_DENIED |\n\n#### `note.share`\n\n```TypeScript\nshare(id: string, invite_phone_number: string, edit_mode: number): {\n  code: Code\n}\n```\n\n| Return Code            |     |\n| ---------------------- | --- |\n| SUCCESS                |\n| PERMISSION_DENIED      |\n| PHONE_NUMBER_INVALID   |\n| NOTE_NOT_EXIST         |\n| NOTE_PERMISSION_DENIED |\n\n#### `note.unshare`\n\n```TypeScript\nunshare(id: string, invited_phone_number: string): {\n  code: Code\n}\n```\n\n| Return Code            |     |\n| ---------------------- | --- |\n| SUCCESS                |\n| PERMISSION_DENIED      |\n| PHONE_NUMBER_INVALID   |\n| NOTE_NOT_EXIST         |\n| NOTE_PERMISSION_DENIED |\n","readmeFilename":"README.md"}