{"id":23639927,"url":"https://github.com/tsuki-lab/microcms-ts-sdk","last_synced_at":"2025-07-16T22:32:09.168Z","repository":{"id":63277589,"uuid":"566393374","full_name":"tsuki-lab/microcms-ts-sdk","owner":"tsuki-lab","description":"This package is a wrapper for \"microcms-js-sdk\". More type-safe.","archived":false,"fork":false,"pushed_at":"2025-05-01T06:17:35.000Z","size":526,"stargazers_count":34,"open_issues_count":7,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-07T00:42:00.025Z","etag":null,"topics":["microcms","sdk","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/microcms-ts-sdk","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsuki-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2022-11-15T15:25:35.000Z","updated_at":"2025-06-11T14:49:10.000Z","dependencies_parsed_at":"2023-02-16T04:30:35.920Z","dependency_job_id":"6a33137a-0caf-4661-9dda-f7ca46ad87d0","html_url":"https://github.com/tsuki-lab/microcms-ts-sdk","commit_stats":null,"previous_names":["tsuki-lab/microcms-ts-client"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/tsuki-lab/microcms-ts-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsuki-lab%2Fmicrocms-ts-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsuki-lab%2Fmicrocms-ts-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsuki-lab%2Fmicrocms-ts-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsuki-lab%2Fmicrocms-ts-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsuki-lab","download_url":"https://codeload.github.com/tsuki-lab/microcms-ts-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsuki-lab%2Fmicrocms-ts-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265545918,"owners_count":23785879,"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","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":["microcms","sdk","typescript"],"created_at":"2024-12-28T08:29:07.391Z","updated_at":"2025-07-16T22:32:09.151Z","avatar_url":"https://github.com/tsuki-lab.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# MicroCMS TypeScript SDK\n\nThis package is a wrapper for \"microcms-js-sdk\". More type-safe.\n\n[![npm version](https://badge.fury.io/js/microcms-ts-sdk.svg)](https://badge.fury.io/js/microcms-ts-sdk)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n## Getting Started\n\n### install\n\ninstall npm package.\n\n```shell\nnpm i microcms-ts-sdk\n# or\nyarn add microcms-ts-sdk\n```\n\n### How to use\n\nSupported of \"microcms-js-sdk\".\u003cbr /\u003e\nFor more information on how to use this service, please click [here](https://github.com/microcmsio/microcms-js-sdk#how-to-use).\n\n### Type safe usage\n\n```ts\nimport { createClient, MicroCMSSchemaInfer } from 'microcms-ts-sdk';\n\n// Type definition\ntype Content = {\n  text: string;\n};\n\ninterface Endpoints {\n  // API in list format.\n  list: {\n    contents: Content;\n  };\n  // API in object format\n  object: {\n    content: Content;\n  };\n}\n\n// Initialize Client SDK.\nconst client = createClient\u003cEndpoints\u003e({\n  serviceDomain: 'YOUR_DOMAIN', // YOUR_DOMAIN is the XXXX part of XXXX.microcms.io\n  apiKey: 'YOUR_API_KEY'\n});\n\n// Schema type inference\ntype Schema = MicroCMSSchemaInfer\u003ctypeof client\u003e;\n/**\n * Schema[contents]\n * {\n *   id: string;\n *   createdAt: string;\n *   updatedAt: string;\n *   publishedAt?: string;\n *   revisedAt?: string;\n *   text: string;\n * }\n *\n * Schema[content]\n * {\n *   createdAt: string;\n *   updatedAt: string;\n *   publishedAt?: string;\n *   revisedAt?: string;\n *   text: string;\n * }\n */\n```\n\nIt is also possible to use only type definitions for the original client.\n(Unsupported `getAll` method)\n\n```ts\nimport { createClient } from 'microcms-js-sdk';\nimport { MicroCMSClient } from 'microcms-ts-sdk';\n\ntype Endpoints = {\n  // definition\n};\n\nconst client: MicroCMSClient\u003cEndpoints\u003e = createClient({\n  serviceDomain: 'YOUR_DOMAIN',\n  apiKey: 'YOUR_API_KEY'\n});\n```\n\n## Feature\n\nSupport endpoint specification.\n\n```ts\n// The \"contents\" will be complemented.\nclient.getList({ endpoint: 'contents' });\n\n// Error: Not in list format endpoint.\nclient.getList({ endpoint: 'content' });\n```\n\nSupport response types.\n\n```ts\n/**\n * // getList response type\n * {\n *  contents: {\n *    id: string;\n *    createdAt: string;\n *    updatedAt: string;\n *    publishedAt?: string;\n *    revisedAt?: string;\n *    text: string;\n *  }[];\n *  totalCount: number;\n *  limit: number;\n *  offset: number;\n * }\n */\nclient.getList({ endpoint: 'contents' });\n\n/**\n * // Set options \"queries.fields\"\n * {\n *  contents: {\n *    id: string;\n *    publishedAt?: string;\n *    text: string;\n *  }[];\n *  totalCount: number;\n *  limit: number;\n *  offset: number;\n * }\n */\nclient.getList({\n  endpoint: 'contents',\n  queries: {\n    fields: ['id', 'text', 'publishedAt'] // (keyof (Content \u0026 MicroCMSListContent))[]\n  }\n});\n```\n\nSupport for all acquisitions.\n\n```ts\n/** Get all contents for endpoint */\nclient.getAll({\n  endpoint: 'contents'\n});\n```\n\nSupport relation schema.\u003cbr /\u003e\nhttps://document.microcms.io/manual/api-model-settings#h9c184228ff\n\n```ts\nimport { MicroCMSRelation } from 'microcms-ts-sdk';\n\ntype Writer = {\n  name: string;\n};\n\ntype Post = {\n  title: string;\n  writer: MicroCMSRelation\u003cWriter\u003e;\n  relatedPosts: MicroCMSRelation\u003cPost\u003e[];\n};\n\n// endpoint name `posts` API type List for `Post`\nclient\n  .getListDetail({\n    endpoint: 'posts',\n    contentId: 'xxxx',\n    queries: {\n      depth: 1 // 1 \u003c= default | https://document.microcms.io/content-api/get-list-contents#h30fce9c966\n    }\n  })\n  .then((res) =\u003e console.log(res));\n/**\n * {\n *   id: string;\n *   createdAt: string;\n *   updatedAt: string;\n *   publishedAt?: string;\n *   revisedAt?: string;\n *   title: string;\n *   writer: {\n *     id: string;\n *     createdAt: string;\n *     updatedAt: string;\n *     publishedAt?: string;\n *     revisedAt?: string;\n *     name: string;\n *   }\n *   relatedPosts: {\n *     id: string;\n *     createdAt: string;\n *     updatedAt: string;\n *     publishedAt?: string;\n *     revisedAt?: string;\n *     title: string;\n *     writer: {\n *       id: string;\n *     }\n *     relatedPosts: {\n *       id: string;\n *     }\n *   }[]\n * }\n */\n\n// get individual schema of depth.\ntype MicroCMSSchema = MicroCMSSchemaInfer\u003ctypeof client\u003e;\ntype PostDetailDepth2 = MicroCMSDepthInfer\u003cMicroCMSSchema['posts'], 2\u003e; // depth: 2\n/**\n * {\n *   id: string;\n *   createdAt: string;\n *   updatedAt: string;\n *   publishedAt?: string;\n *   revisedAt?: string;\n *   title: string;\n *   writer: {\n *     id: string;\n *     createdAt: string;\n *     updatedAt: string;\n *     publishedAt?: string;\n *     revisedAt?: string;\n *     name: string;\n *   }\n *   relatedPosts: {\n *     id: string;\n *     createdAt: string;\n *     updatedAt: string;\n *     publishedAt?: string;\n *     revisedAt?: string;\n *     title: string;\n *     writer: {\n *       id: string;\n *       createdAt: string;\n *       updatedAt: string;\n *       publishedAt?: string;\n *       revisedAt?: string;\n *       name: string;\n *     }\n *     relatedPosts: {\n *       id: string;\n *       createdAt: string;\n *       updatedAt: string;\n *       publishedAt?: string;\n *       revisedAt?: string;\n *       title: string;\n *       writer: {\n *         id: string;\n *       }\n *       relatedPosts: {\n *         id: string;\n *       }[]\n *     }[]\n *   }[]\n * }\n */\n\n// microCMS POST method API\nclient.create({\n  endpoint: 'posts',\n  content: {\n    title: 'example',\n    writer: '\u003c WRITER_CONTENT_ID \u003e', // type-safe\n    relatedPosts: ['\u003c POST_CONTENT_ID \u003e'] // type-safe\n  }\n});\n```\n\n# LICENSE\n\nApache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsuki-lab%2Fmicrocms-ts-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsuki-lab%2Fmicrocms-ts-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsuki-lab%2Fmicrocms-ts-sdk/lists"}