{"id":13454932,"url":"https://github.com/AlroviOfficial/RoZod","last_synced_at":"2025-03-24T07:32:20.306Z","repository":{"id":158301193,"uuid":"633969254","full_name":"AlroviOfficial/RoZod","owner":"AlroviOfficial","description":"A TypeScript wrapper for the Roblox API","archived":false,"fork":false,"pushed_at":"2025-03-10T15:35:17.000Z","size":20154,"stargazers_count":10,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-10T15:42:18.616Z","etag":null,"topics":["roblox","roblox-api","typescript"],"latest_commit_sha":null,"homepage":"https://rozod.alrovi.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlroviOfficial.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":"2023-04-28T17:45:32.000Z","updated_at":"2025-03-10T15:35:22.000Z","dependencies_parsed_at":"2023-09-06T16:29:04.805Z","dependency_job_id":"b9caec84-d0fb-4033-9c05-3a0f3bccbf0d","html_url":"https://github.com/AlroviOfficial/RoZod","commit_stats":null,"previous_names":["alroviofficial/rozod","alexop1000/rozod"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlroviOfficial%2FRoZod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlroviOfficial%2FRoZod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlroviOfficial%2FRoZod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlroviOfficial%2FRoZod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlroviOfficial","download_url":"https://codeload.github.com/AlroviOfficial/RoZod/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245227552,"owners_count":20580898,"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":["roblox","roblox-api","typescript"],"created_at":"2024-07-31T08:00:59.526Z","updated_at":"2025-03-24T07:32:20.301Z","avatar_url":"https://github.com/AlroviOfficial.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"height: 200; overflow: 'hidden'\"\u003e\n    \u003cimg src=\"https://github.com/alexop1000/RoZod/assets/46445843/1c2a6cb5-b1d6-4784-b084-0679d81109c3\" alt=\"RoZod\" width=\"400\" /\u003e\n    \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eType-safe Roblox API and OpenCloud client for TypeScript\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.npmjs.com/package/rozod\"\u003e\u003cimg alt=\"npm bundle size\" src=\"https://img.shields.io/bundlephobia/minzip/rozod?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/rozod\"\u003e\u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/v/rozod?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/rozod\"\u003e\u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/dt/rozod?style=for-the-badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#opencloud\"\u003eOpenCloud\u003c/a\u003e •\n  \u003ca href=\"#credits\"\u003eCredits\u003c/a\u003e •\n  \u003ca href=\"http://rozod.alrovi.com\"\u003eDocumentation\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## About\n`RoZod` makes working with Roblox APIs simple and type-safe in TypeScript. With just a few lines of code, you can fetch data from both traditional Roblox web APIs and the newer OpenCloud APIs with full type safety.\n\n## Features\n\n- ✨ **Simple Interface** - Easy to understand API with minimal boilerplate\n- 🔒 **Type Safety** - Complete TypeScript type safety for requests and responses\n- 📚 **Comprehensive API Coverage** - Access to both traditional Roblox web APIs and OpenCloud APIs\n- 🔄 **Pagination Helpers** - Easy tools for handling paginated responses\n- 🔁 **Batch Processing** - Split large requests automatically to avoid API limits\n- 🔍 **Custom Endpoints** - Define your own endpoints with full type safety\n\n## Installation\n\n```bash\nnpm install rozod\n# or\nyarn add rozod\n# or\npnpm add rozod\n```\n\n## Quick Start\n\n```ts\nimport { fetchApi } from 'rozod';\nimport { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';\n\n// Fetch user details with full type safety\nconst userInfo = await fetchApi(getUsersUserdetails, { userIds: [1, 123456] });\nconsole.log(userInfo.data[0].displayName); // Properly typed!\n```\n\n## Usage\n\n### Fetch a Single Request\n\n```ts\nimport { fetchApi } from 'rozod';\nimport { getGamesIcons } from 'rozod/lib/endpoints/gamesv1';\n\nconst response = await fetchApi(getGamesIcons, { universeIds: [1534453623, 65241] });\nconsole.log(response.data);\n```\n\n### Handle Paginated Responses\n\n```ts\nimport { fetchApiPages } from 'rozod';\nimport { getGroupsGroupidWallPosts } from 'rozod/lib/endpoints/groupsv2';\n\n// Automatically fetches all pages\nconst allPosts = await fetchApiPages(getGroupsGroupidWallPosts, { groupId: 11479637 });\nconsole.log(`Found ${allPosts.length} wall posts`);\n```\n\n### Process Pages One at a Time\n\n```ts\nimport { fetchApiPagesGenerator } from 'rozod';\nimport { getGroupsGroupidWallPosts } from 'rozod/lib/endpoints/groupsv2';\n\n// Process pages as they arrive\nconst pages = fetchApiPagesGenerator(getGroupsGroupidWallPosts, { groupId: 11479637 });\nfor await (const page of pages) {\n    console.log(`Processing page with ${page.data.length} posts`);\n    // Do something with this page\n}\n```\n\n### Batch Processing Large Requests\n\n```ts\nimport { fetchApiSplit } from 'rozod';\nimport { getGamesIcons } from 'rozod/lib/endpoints/gamesv1';\n\n// Will automatically split into smaller batches of 100 universeIds per request\nconst data = await fetchApiSplit(\n    getGamesIcons, \n    { universeIds: [1, 2, 3, 4, 5, /* many more IDs */] }, \n    { universeIds: 100 }\n);\nconsole.log(data);\n```\n\n## OpenCloud\n\nRoZod supports Roblox's newer OpenCloud APIs with the same easy interface:\n\n```ts\nimport { fetchApi } from 'rozod';\nimport { v2 } from 'rozod/lib/opencloud';\n\n// Get universe details through OpenCloud\nconst universeInfo = await fetchApi(v2.getCloudV2UniversesUniverseId, { \n    universe_id: '123456789'\n});\n\n// Access typed properties\nconsole.log(universeInfo.displayName);\nconsole.log(universeInfo.description);\n```\n\n### Access DataStores via OpenCloud\n\n```ts\nimport { fetchApi } from 'rozod';\nimport { getCloudV2UniversesUniverseIdDataStoresDataStoreIdEntries } from 'rozod/lib/opencloud/v2/cloud';\n\n// Get DataStore entries with type safety\nconst dataStoreEntries = await fetchApi(\n    getCloudV2UniversesUniverseIdDataStoresDataStoreIdEntries, \n    {\n        universe_id: '123456789',\n        data_store_id: 'MyStore'\n    }\n);\n```\n\n## Custom Endpoints\n\nYou can define custom endpoints for your specific needs:\n\n```ts\nimport { z } from 'zod';\nimport { endpoint, fetchApi } from 'rozod';\n\nconst myCustomEndpoint = endpoint({\n  method: 'GET',\n  path: '/v1/custom/:customId',\n  baseUrl: 'https://my-api.example.com',\n  parameters: {\n    customId: z.string(),\n    optional: z.string().optional()\n  },\n  response: z.object({\n    success: z.boolean(),\n    data: z.array(z.string())\n  }),\n});\n\nconst response = await fetchApi(myCustomEndpoint, { customId: '123' });\n```\n\n## Credits\nThis repository is maintained by Alrovi ApS, the company behind RoGold.\n\n## Disclaimer\nRoZod is not affiliated with, maintained, authorized, endorsed, or sponsored by Roblox Corporation or any of its affiliates.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlroviOfficial%2FRoZod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlroviOfficial%2FRoZod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlroviOfficial%2FRoZod/lists"}