{"_id":"@blogger-mon/sdk","_rev":"8-07e9eb4b877fa61c9cbae3c584031a88","name":"@blogger-mon/sdk","dist-tags":{"latest":"1.3.2"},"versions":{"1.0.0":{"name":"@blogger-mon/sdk","version":"1.0.0","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.0.0","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"155e54451fe731e98fb500f76de9f0fa716a98b5","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.0.0.tgz","fileCount":9,"integrity":"sha512-apN8+EFrMSiHxPCpZ+Mj7CKXiZSOgSjxSar//yj9O/HBZysy/EZGEesdgY5Rvw6hAEudt2m0HZ8XaPKEw6bxcQ==","signatures":[{"sig":"MEUCIChPijD91Mbd9yDPsXdukA1xta2iivVvKv5mAFK80YJQAiEAzBYMgRPDrvZsFzlI9cQxoPk8xoTCmH1KnIYk6zdoZFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44741},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"bdf4c9b0b4c7aedb2a15342333cf251996ab6514","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1764096096557_0.23393993988558326","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@blogger-mon/sdk","version":"1.0.1","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.0.1","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"e7b3f6996490853f89f7bb8efd3488d0fd87f751","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.0.1.tgz","fileCount":9,"integrity":"sha512-jTu1zU9nvDIOZc8d6XDG1kkJUbuhqiG2Oy3yagbtxBk1dvwv+YZkI4WvpAewJod3VnDOW+t1+fBJvZEDQtfaRQ==","signatures":[{"sig":"MEUCIDLflhQ7Qrz+b9AVJbaUH8PC3dvoY8B3uIqudQuIzYhZAiEA1meul74PzcWAsEqU7xFyDeJv5tMfGiosse+SO2hnS8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46215},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d0e933412ded9c3b631a6f510ee75630e1216001","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.1_1764096450273_0.88239012318325","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@blogger-mon/sdk","version":"1.0.2","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.0.2","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"be1e76a828631ae0f914f7a8647903011168adb1","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.0.2.tgz","fileCount":9,"integrity":"sha512-5Ba6+KPwkQth9PemQYezXQK6j3wIuGgCzSzs1DAw1duxgWtw39psCXS8Uvb8+tTDcGb4/37qQms29Tucs7x13Q==","signatures":[{"sig":"MEUCIFSrA7jABuv/jixZQ0DrDLucxPiGOSUIsyhZ9/XdJWP2AiEA2gHZKU7SV6KnDzK9z3YoCRjHll0QsNxBlH/xoVnticc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46226},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d0e933412ded9c3b631a6f510ee75630e1216001","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.2_1764096728179_0.8892801961007921","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@blogger-mon/sdk","version":"1.1.0","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.1.0","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"8a0d2918f47b23826611daf81fef20a43fca1703","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.1.0.tgz","fileCount":9,"integrity":"sha512-whmc5RsRG+gLBXO8jMAC5h+ut3BhHV1NhB27a7JuNCEPc3XsaIziLDgGqMsSB5gHn7lxA0RN5bLJ/FBTRiiBjQ==","signatures":[{"sig":"MEQCIEe0iPt4J6AMYHaFFuX3Trzsb9VnytSYaW2fGQIMiHyUAiB1J1t5PzXMpgMOA+Sj8scAkrKCmyDWdfHJIi3VZjy60Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67754},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"96cdd493f32e4c6cfec68c0f61d6dbfd97dd5361","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.0_1764101922937_0.5495538590425777","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@blogger-mon/sdk","version":"1.2.0","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.2.0","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"2118637a1b7654332f397ef502beff306615302d","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.2.0.tgz","fileCount":9,"integrity":"sha512-4zEhyVI8YvBvdUT056FQOSAlI1rsXnYeZp2ANFPBiThXM+5Q2aa0HUDVY2rsCx545cpue+KMVY5BxruML3weQQ==","signatures":[{"sig":"MEUCIQCtL2hZfigZk9wmnzInSaJ+Qz4Ep9EGST8rFsSaL34gFAIga14fgAEXBj815duf6+Vph+3yHsJvnm2a//LwxfYaIXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91892},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"77927ae0067349272ecf42bef1b31b1d3be542d9","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test","test:integration":"vitest run tests/blog-sdk.integration.test.ts"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.0_1764219260662_0.12496187400730463","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@blogger-mon/sdk","version":"1.3.0","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.3.0","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"a3849d4f7ad4c7825bb86bbc37781fd5b14afac5","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.3.0.tgz","fileCount":9,"integrity":"sha512-XXof2bu4mi2wTH4Kh8MjbMzqkOx8oGMFnu3u7/hAcV08ONQOZDxrcm4vpIYR9ZdYAFu4GKzLD+8GRIKTzJ0Hfg==","signatures":[{"sig":"MEUCIFHKbvPt/p8xMqwVNuqJAdIZV5dpP0/tdhm2Zx+irkIzAiEAq6zDzTh8SbOGS+6eBZmfrk7QyIJjX71ap7IKVfSf+0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92798},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a655246e13d0e86a679fdf25a637bf56c2c5b3ad","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test","test:integration":"vitest run tests/blog-sdk.integration.test.ts"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.3.0_1764227802558_0.8113540644154578","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@blogger-mon/sdk","version":"1.3.1","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon"},"license":"MIT","_id":"@blogger-mon/sdk@1.3.1","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"homepage":"https://github.com/blogger-mon/sdk#readme","bugs":{"url":"https://github.com/blogger-mon/sdk/issues"},"dist":{"shasum":"51ef0f40aea91989680e33a423632929a17cc6c1","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.3.1.tgz","fileCount":9,"integrity":"sha512-dW4CA2MA1kV4wJ51v3xTrU3hFk0jKw3Q2Si95djAmoQlbjkNj1K9YS2D0+P+BoRGzwdlVUzb18XcocRNDio4eg==","signatures":[{"sig":"MEUCIQCEr0Wcsgancj5josEMZo0Oct+AxKW+7i5HN9AIsmHqpgIgWMYEmHzchnMIvMcJtPU17SohNlsI7OAoKf4RqCqD+uo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93281},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8730fc941240a45f12fde692f3a671378d07459f","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts --clean","test:ci":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm test","test:integration":"vitest run tests/blog-sdk.integration.test.ts"},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"repository":{"url":"git+https://github.com/blogger-mon/sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","directories":{},"_nodeVersion":"24.3.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.32.0","vitest":"^1.0.0","typescript":"^5.8.3","@types/node":"^22.16.5","@typescript-eslint/parser":"^8.38.0","@typescript-eslint/eslint-plugin":"^8.38.0"},"peerDependencies":{"typescript":">=4.9.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.3.1_1764230559846_0.8384410482963267","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@blogger-mon/sdk","version":"1.3.2","description":"TypeScript SDK for BloggerMon API - easy integration for blog management","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest run","test:watch":"vitest","test:ci":"vitest run","test:integration":"vitest run tests/blog-sdk.integration.test.ts","lint":"eslint src --ext .ts,.tsx","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test"},"keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"author":{"name":"BloggerMon","email":"x@navyaai.com"},"license":"MIT","homepage":"https://bloggermon.com","repository":{"type":"git","url":"git+https://github.com/blogger-mon/sdk.git"},"bugs":{"url":"https://github.com/blogger-mon/sdk/issues","email":"x@navyaai.com"},"devDependencies":{"@types/node":"^22.16.5","@typescript-eslint/eslint-plugin":"^8.38.0","@typescript-eslint/parser":"^8.38.0","eslint":"^9.32.0","tsup":"^8.0.0","typescript":"^5.8.3","vitest":"^1.0.0"},"dependencies":{},"peerDependencies":{"typescript":">=4.9.0"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"_id":"@blogger-mon/sdk@1.3.2","gitHead":"8730fc941240a45f12fde692f3a671378d07459f","_nodeVersion":"24.3.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-RZhK9sxypM7HvGlPpQZ7tItT0+zcGy5DyTddVXJR61Mcqy30bp8A8lcjXEFpWjol20q3xCEu6eUhU2QAs4yWrQ==","shasum":"8b21ec57bee30e3a26fd9e51b4f3db14ef843448","tarball":"https://registry.npmjs.org/@blogger-mon/sdk/-/sdk-1.3.2.tgz","fileCount":9,"unpackedSize":93306,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBrehahXgxylHz9w1pwuAn4QcFT9uPJR/axE76iJVBjIAiAkbJdVyDfmBD8I/mJtdd6X9oUrY+63vTCNCd2l7c+biA=="}]},"_npmUser":{"name":"navyaai","email":"vikas@navyaai.com"},"directories":{},"maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.3.2_1764230749590_0.16821575885326445"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-25T18:41:36.450Z","modified":"2025-11-27T08:05:50.021Z","1.0.0":"2025-11-25T18:41:36.752Z","1.0.1":"2025-11-25T18:47:30.463Z","1.0.2":"2025-11-25T18:52:08.414Z","1.1.0":"2025-11-25T20:18:43.123Z","1.2.0":"2025-11-27T04:54:20.860Z","1.3.0":"2025-11-27T07:16:42.741Z","1.3.1":"2025-11-27T08:02:40.028Z","1.3.2":"2025-11-27T08:05:49.822Z"},"bugs":{"url":"https://github.com/blogger-mon/sdk/issues","email":"x@navyaai.com"},"author":{"name":"BloggerMon","email":"x@navyaai.com"},"license":"MIT","homepage":"https://bloggermon.com","keywords":["blog","cms","api","sdk","typescript","blogger-mon","supabase","headless-cms"],"repository":{"type":"git","url":"git+https://github.com/blogger-mon/sdk.git"},"description":"TypeScript SDK for BloggerMon API - easy integration for blog management","maintainers":[{"name":"navyaai","email":"vikas@navyaai.com"}],"readme":"# BloggerMon SDK\n\n[![npm version](https://badge.fury.io/js/%40blogger-mon%2Fsdk.svg)](https://badge.fury.io/js/%40blogger-mon%2Fsdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTypeScript SDK for BloggerMon API - easy integration for blog management with full type safety.\n\n## Features\n\n- 🚀 **Full TypeScript support** with comprehensive type definitions\n- 🔑 **API Key Authentication** with scoped permissions\n- 📝 **Complete CRUD operations** for blog posts\n- 🔄 **Async/await support** with proper error handling\n- 📊 **Comments and Ratings** integration\n- 🌐 **RSS Feed** support\n- 📋 **OpenAPI spec** access\n- 🤖 **AI-powered features**: Blog analysis, content refinement, idea generation, and automated workflows\n- ⚡ **Lightweight** with zero dependencies\n\n## Installation\n\n```bash\nnpm install @blogger-mon/sdk\n```\n\n```bash\nyarn add @blogger-mon/sdk\n```\n\n```bash\npnpm add @blogger-mon/sdk\n```\n\n## Quick Start\n\n### 1. Get Your API Key\n\nFirst, create an API key in your BloggerMon dashboard:\n1. Go to Dashboard → API Keys\n2. Click \"Create API Key\"\n3. Select the scopes you need (`write_posts`, `upload_media`, `manage_posts`)\n4. Copy the generated key (starts with `bmk_`)\n\n### 2. Initialize the SDK\n\n```typescript\nimport { BlogSDK } from '@blogger-mon/sdk';\n\nconst blog = new BlogSDK({\n  apiKey: 'bmk_your_api_key_here'\n});\n// Optional: override the API host if you're pointing at another environment\n// const blog = new BlogSDK({ baseUrl: 'https://custom-api.yourdomain.com', apiKey: 'bmk_custom_key' });\n// (Defaults to https://ysqzeskcvmalzhvjyncp.supabase.co)\n```\n\n> Prefer Python? Install `pip install blogger-mon-sdk-py` and use the companion client in `packages/blogger-mon-python-sdk`.\n\n### 3. Start Using It\n\n```typescript\n// Get all published posts\nconst { posts, total } = await blog.getPosts({ \n  limit: 10, \n  offset: 0 \n});\n\n// Get a single post with comments and ratings\nconst post = await blog.getPost('post-id');\n\n// Create a new post\nconst newPost = await blog.createPost({\n  title: 'My Amazing Blog Post',\n  content: '# Hello World\\n\\nThis is my first post!',\n  status: 'published',\n  meta_description: 'A great post about...'\n});\n\n// Update a post\nawait blog.updatePost({\n  id: 'post-id',\n  title: 'Updated Title',\n  content: 'Updated content...'\n});\n\n// Delete a post\nawait blog.deletePost('post-id');\n```\n\n## API Reference\n\n### Constructor\n\n```typescript\nnew BlogSDK(config: BlogSDKConfig | string)\n```\n\n**BlogSDKConfig:**\n- `baseUrl` (string): Optional override for the BloggerMon API (defaults to https://ysqzeskcvmalzhvjyncp.supabase.co)\n- `baseUrl` (string, optional): Your API base URL (defaults to https://ysqzeskcvmalzhvjyncp.supabase.co)\n- `apiKey` (string, optional): Your BloggerMon API key\n\n### Methods\n\n#### `getPosts(options?: GetPostsOptions): Promise<GetPostsResponse>`\n\nGet a list of blog posts.\n\n**Options:**\n- `limit` (number, default: 10): Maximum number of posts to return\n- `offset` (number, default: 0): Number of posts to skip\n- `status` ('draft' | 'published', optional): Filter by post status\n\n**Returns:**\n```typescript\n{\n  posts: Post[];\n  total: number;\n}\n```\n\n#### `getPost(postId: string): Promise<PostWithDetails>`\n\nGet a single post with comments and ratings.\n\n#### `createPost(data: CreatePostData): Promise<Post>`\n\nCreate a new blog post. Requires `write_posts` scope.\n\n**CreatePostData:**\n```typescript\n{\n  title: string;\n  content: string;\n  status?: 'draft' | 'published';\n  category_id?: string;\n  meta_description?: string;\n  featured_image_url?: string;\n  slug?: string;\n}\n```\n\n#### `updatePost(data: UpdatePostData): Promise<Post>`\n\nUpdate an existing post. Requires `write_posts` scope.\n\n#### `deletePost(postId: string): Promise<void>`\n\nDelete a post. Requires `manage_posts` scope.\n\n#### `getRssFeedUrl(): string`\n\nGet the URL for the RSS feed.\n\n#### `getOpenApiSpec(): Promise<any>`\n\nFetch the OpenAPI specification for the API.\n\n### AI-Powered Features\n\nAll AI features require authentication (API key or JWT token).\n\n#### `analyzeBlog(title: string, content: string): Promise<AnalysisResult>`\n\nAnalyze blog content and get AI-powered improvement suggestions with detailed scores.\n\n**Returns:**\n```typescript\n{\n  score: number;              // Overall quality score (0-100)\n  readabilityScore: number;   // How easy to read (0-100)\n  seoScore: number;           // SEO optimization score (0-100)\n  structureScore: number;     // Content structure score (0-100)\n  suggestions: string[];      // List of improvement suggestions\n}\n```\n\n**Example:**\n```typescript\nconst analysis = await blog.analyzeBlog(\n  'My Blog Post Title',\n  '# Introduction\\n\\nContent here...'\n);\n\nconsole.log(`Overall Score: ${analysis.score}/100`);\nconsole.log(`SEO Score: ${analysis.seoScore}/100`);\nconsole.log('Suggestions:', analysis.suggestions);\n```\n\n#### `generateIdeas(userInput: string, niche?: string): Promise<GenerateIdeasResult>`\n\nGenerate blog post ideas based on user interests and trending topics.\n\n**Parameters:**\n- `userInput` (string): User interests or topics\n- `niche` (string, optional): Specific niche/category\n\n**Returns:**\n```typescript\n{\n  ideas: Array<{\n    title: string;\n    description: string;\n    targetAudience: string;\n    keywords: string[];\n    trending: boolean;\n  }>;\n  trendingTopics: string[];\n}\n```\n\n**Example:**\n```typescript\nconst result = await blog.generateIdeas(\n  'AI and machine learning',\n  'technology'\n);\n\nresult.ideas.forEach(idea => {\n  console.log(`${idea.title} (${idea.trending ? 'Trending' : 'Evergreen'})`);\n  console.log(`Target: ${idea.targetAudience}`);\n  console.log(`Keywords: ${idea.keywords.join(', ')}`);\n});\n```\n\n#### `refineContent(title: string, content: string): Promise<RefineContentResult>`\n\nRefine blog content using AI to fix structural issues and improve formatting.\n\n**Returns:**\n```typescript\n{\n  refinedContent: string;  // Improved markdown content\n}\n```\n\n**Example:**\n```typescript\nconst result = await blog.refineContent(\n  'My Blog Title',\n  '# My Blog Title\\n\\n## Section\\n\\nContent...'\n);\n\nconsole.log('Refined content:', result.refinedContent);\n```\n\n#### `runAiWorkflow(options: AiWorkflowOptions): Promise<AiWorkflowResult>`\n\nOrchestrate idea generation, drafting, analysis, refinement, and optional publishing in one call. Perfect for automation scripts and back office tools.\n\n**Options:**\n```typescript\ninterface AiWorkflowOptions {\n  userInput: string;\n  niche?: string;\n  draftContent?: string;\n  selectIdea?: (ideas: BlogIdea[]) => BlogIdea | Promise<BlogIdea>;\n  targetScore?: number;      // defaults to 90\n  forceRefine?: boolean;\n  autoPublish?: boolean;\n  publishStatus?: 'draft' | 'published';\n}\n```\n\n**Returns:**\n```typescript\ninterface AiWorkflowResult {\n  idea: BlogIdea;\n  ideas: BlogIdea[];\n  trendingTopics: string[];\n  initialDraft: string;\n  finalContent: string;\n  analysis: AnalysisResult;\n  refinedContent?: string;\n  publishedPost?: Post;\n}\n```\n\n**Example:**\n```typescript\nconst workflow = await blog.runAiWorkflow({\n  userInput: 'AI automation for marketers',\n  niche: 'Marketing',\n  targetScore: 92,\n  autoPublish: true,\n  publishStatus: 'draft'\n});\n\nconsole.log('Selected idea:', workflow.idea.title);\nconsole.log('Score:', workflow.analysis.score);\nconsole.log('Final draft preview:', workflow.finalContent.slice(0, 200));\n\nif (workflow.publishedPost) {\n  console.log('New post id:', workflow.publishedPost.id);\n}\n```\n\n### Error Handling\n\nThe SDK throws `BlogSDKError` for API errors:\n\n```typescript\nimport { BlogSDK, BlogSDKError } from '@blogger-mon/sdk';\n\ntry {\n  await blog.createPost({ title: '', content: '' }); // Invalid data\n} catch (error) {\n  if (error instanceof BlogSDKError) {\n    console.log('Status:', error.status);    // HTTP status code\n    console.log('Code:', error.code);        // API error code\n    console.log('Message:', error.message);  // Error description\n  }\n}\n```\n\n## Examples\n\n### Blog Integration\n\n```typescript\nimport { BlogSDK } from '@blogger-mon/sdk';\n\nconst blog = new BlogSDK({\n  baseUrl: process.env.SUPABASE_URL!,\n  apiKey: process.env.BLOGGER_MON_API_KEY!\n});\n\n// Get recent posts for homepage\nasync function getRecentPosts() {\n  const { posts } = await blog.getPosts({ \n    limit: 5,\n    status: 'published'\n  });\n  return posts;\n}\n\n// Get post with engagement data\nasync function getPostWithEngagement(slug: string) {\n  const post = await blog.getPost(slug);\n  return {\n    ...post,\n    commentCount: post.comments.length,\n    avgRating: post.average_rating\n  };\n}\n```\n\n### Next.js API Route\n\n```typescript\n// pages/api/posts/index.ts\nimport { BlogSDK } from '@blogger-mon/sdk';\n\nconst blog = new BlogSDK({\n  baseUrl: process.env.SUPABASE_URL!,\n  apiKey: process.env.BLOGGER_MON_API_KEY!\n});\n\nexport default async function handler(req, res) {\n  if (req.method === 'GET') {\n    const { limit = 10, offset = 0 } = req.query;\n    \n    try {\n      const result = await blog.getPosts({ \n        limit: Number(limit), \n        offset: Number(offset) \n      });\n      res.status(200).json(result);\n    } catch (error) {\n      res.status(500).json({ error: error.message });\n    }\n  }\n}\n```\n\n### CI/CD Integration\n\n```typescript\n// scripts/publish-post.ts\nimport { BlogSDK } from '@blogger-mon/sdk';\nimport fs from 'fs';\n\nconst blog = new BlogSDK({\n  baseUrl: process.env.SUPABASE_URL!,\n  apiKey: process.env.BLOGGER_MON_API_KEY!\n});\n\nasync function publishMarkdownFile(filePath: string) {\n  const content = fs.readFileSync(filePath, 'utf-8');\n  const [, frontmatter, body] = content.split('---');\n  \n  const meta = parseFrontmatter(frontmatter);\n  \n  await blog.createPost({\n    title: meta.title,\n    content: body.trim(),\n    status: 'published',\n    meta_description: meta.description,\n    slug: meta.slug\n  });\n}\n```\n\n## Rate Limits\n\nAI-powered features have daily rate limits on the free tier to ensure fair usage:\n\n### Free Tier Limits (per user, per day)\n\n| Feature | Daily Limit | Reset Time |\n|---------|-------------|------------|\n| Content Analysis (`analyzeBlog`) | 10 requests | Midnight UTC |\n| Content Refinement (`refineContent`) | 5 requests | Midnight UTC |\n| Idea Generation (`generateIdeas`) | 10 requests | Midnight UTC |\n\n### Rate Limit Responses\n\nWhen you exceed a rate limit, the API returns a 429 status code with details:\n\n```typescript\ntry {\n  const analysis = await blog.analyzeBlog(title, content);\n} catch (error) {\n  if (error instanceof BlogSDKError && error.status === 429) {\n    console.log('Rate limit exceeded');\n    console.log('Message:', error.message);\n    // Error contains: limit, current, resetAt\n  }\n}\n```\n\n**Response format when rate limited:**\n```json\n{\n  \"error\": \"Daily analysis limit reached\",\n  \"message\": \"You have reached the daily limit of 10 content analyses. Limit resets at midnight UTC.\",\n  \"limit\": 10,\n  \"current\": 10,\n  \"resetAt\": \"2024-01-02T00:00:00.000Z\"\n}\n```\n\n### Best Practices\n\n- **Cache results**: Store analysis results to avoid redundant API calls\n- **Batch operations**: Analyze multiple pieces of content in a single session\n- **Handle errors gracefully**: Always catch and handle rate limit errors\n- **Monitor usage**: Keep track of your daily API usage to stay within limits\n\n## API Scopes\n\nDifferent operations require different scopes:\n\n- **Read operations** (getPosts, getPost): No authentication required for published posts\n- **write_posts**: Create and update posts\n- **upload_media**: Upload images and attachments\n- **manage_posts**: Delete posts and manage all content\n\n## TypeScript Support\n\nFull TypeScript definitions are included:\n\n```typescript\nimport { \n  BlogSDK, \n  Post, \n  CreatePostData, \n  PostWithDetails,\n  BlogSDKError,\n  AnalysisResult,\n  BlogIdea,\n  GenerateIdeasResult,\n  RefineContentResult\n} from '@blogger-mon/sdk';\n\n// All types are fully typed and documented\nconst sdk: BlogSDK = new BlogSDK({ \n  apiKey: 'bmk_key' // baseUrl defaults to https://ysqzeskcvmalzhvjyncp.supabase.co\n});\n\nconst posts: Post[] = (await sdk.getPosts()).posts;\n\n// Use AI features\nconst analysis: AnalysisResult = await sdk.analyzeBlog('Title', 'Content');\nconst ideas: GenerateIdeasResult = await sdk.generateIdeas('AI topics');\nconst refined: RefineContentResult = await sdk.refineContent('Title', 'Content');\n```\n\n## License\n\nMIT © BloggerMon\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Links\n\n- [Documentation](https://bloggermon.com/docs)\n- [API Reference](https://bloggermon.com/api-docs)\n- [GitHub Repository](https://github.com/blogger-mon/sdk)\n- [npm Package](https://www.npmjs.com/package/@blogger-mon/sdk)\n","readmeFilename":"README.md"}