Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AlroviOfficial/RoZod
A TypeScript wrapper for the Roblox API
https://github.com/AlroviOfficial/RoZod
roblox roblox-api typescript
Last synced: 11 days ago
JSON representation
A TypeScript wrapper for the Roblox API
- Host: GitHub
- URL: https://github.com/AlroviOfficial/RoZod
- Owner: AlroviOfficial
- License: isc
- Created: 2023-04-28T17:45:32.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-29T09:57:58.000Z (about 1 month ago)
- Last Synced: 2024-09-29T10:01:15.678Z (about 1 month ago)
- Topics: roblox, roblox-api, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/rozod
- Size: 19.2 MB
- Stars: 9
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome - AlroviOfficial/RoZod - A TypeScript wrapper for the Roblox API (TypeScript)
README
A TypeScript package designed to simplify fully type-safe data fetching from the Roblox API.
About •
Features •
Installation •
Usage •
Credits •
Disclaimer •
Documentation---
## About
`RoZod` is a TypeScript package designed to simplify fetching data from the Roblox API. It provides the functions `fetchApi`, `fetchApiPages`, and `fetchApliSplit`.
These allow you to get fully typesafe data from the Roblox API with minimal effort. You can also make custom endpoints to use in any context.## Features
- Type-safe API requests and responses
- Automatic validation of request and response data
- Helper functions for paginated requests and splitting requests## Installation
To install the package, run the following command:
```bash
npm install rozod
```---
## Usage
First, import the necessary functions and an example endpoint from the RoZod package:```ts
import { fetchApi, fetchApiSplit, fetchApiPages, fetchApiPagesGenerator } from 'rozod';
import { getTradesTradestatustype } from 'rozod/lib/endpoints/tradesv1';
```### Simple API Request
To make a simple API request, use the `fetchApi` function, and any endpoint from our exports:
```ts
const response = await fetchApi(getTradesTradestatustype, { tradeStatusType: 1 });
console.log(response);
```### Split API Request
To split a request into multiple requests based on specified parameters, use the `fetchApiSplit` function:```ts
const data = await fetchApiSplit(getGamesIcons, { universeIds: [1534453623, 65241, ...] }, { universeIds: 100 });
console.log(data);
```### Fetching All Pages
To fetch all pages of a paginated endpoint, use the `fetchApiPages` function:```ts
const allPages = await fetchApiPages(getGroupsGroupidWallPosts, { groupId: 11479637 });
console.log(allPages);
```
### Fetching Pages with a Generator
To fetch pages one at a time using an async generator, use the `fetchApiPagesGenerator` function:```ts
const pages = fetchApiPagesGenerator(getGroupsGroupidWallPosts, { groupId: 11479637 });
for await (const page of pages) {
console.log(page);
}
```### Custom Endpoints
To create a custom endpoint, define an EndpointSchema object and export it. Here's an example of an endpoint from tradesv1.ts:
```ts
import { z, endpoint } from 'zod';export const getV1tradesTradeStatusType = endpoint({
method: 'get' as const,
path: '/v1/trades/:tradeStatusType', // Path parameters are optional
baseUrl: 'https://trades.roblox.com',
requestFormat: 'json' as const,
parameters: {
tradeStatusType: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
limit: z
.union([z.literal(10), z.literal(25), z.literal(50), z.literal(100)])
.optional()
.default(10),
cursor: z.string().optional(),
sortOrder: z.enum(['Asc', 'Desc']).optional().default('Asc'),
}, // Parameters are optional
response: ..., // Zod schema
};
```
You can then use the endpoint with the `fetchApi` function:
```ts
const response = await fetchApi(getV1tradesTradeStatusType, { tradeStatusType: 1 });
console.log(response);
```---
## Credits
This repository is maintained by Alrovi ApS, the company behind RoGold.## Disclaimer
RoZod is not affiliated with, maintained, authorized, endorsed, or sponsored by Roblox Corporation or any of its affiliates.