rozod
TypeScript icon, indicating that this package has built-in type declarations

4.7.3 • Public • Published

RoZod

A TypeScript package designed to simplify fully type-safe data fetching from the Roblox API.

npm bundle size npm npm

AboutFeaturesInstallationUsageCreditsDisclaimer


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:

npm install rozod

Usage

First, import the necessary functions and an example endpoint from the RoZod package:

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:

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:

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:

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:

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:

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:

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.

Package Sidebar

Install

npm i rozod

Weekly Downloads

2

Version

4.7.3

License

ISC

Unpacked Size

1.55 MB

Total Files

69

Last publish

Collaborators

  • alexop