bunactyl
Version:
TypeScript SDK for Pterodactyl
85 lines (84 loc) • 2.24 kB
JavaScript
import { BunactylClient } from '../client';
export class UsersResource {
constructor(client) {
this.client = client;
}
/**
* List all users
*
* @param include Optional resources to include
* @param filter Optional filters to apply
* @param sort Optional sort parameter
*/
async list(include, filter, sort) {
const params = {};
// Add include if specified
if (include) {
params['include'] = include;
}
// Add filters if specified
if (filter) {
Object.entries(filter).forEach(([key, value]) => {
if (value) {
params[`filter[${key}]`] = value;
}
});
}
// Add sort if specified
if (sort && sort.sort) {
params['sort'] = sort.sort;
}
return await this.client.get('/users', { params });
}
/**
* Get details for a specific user by ID
*
* @param id User ID
* @param include Optional resources to include
*/
async getById(id, include) {
const params = {};
if (include) {
params['include'] = include;
}
return await this.client.get(`/users/${id}`, { params });
}
/**
* Get details for a specific user by external ID
*
* @param externalId External user ID
* @param include Optional resources to include
*/
async getByExternalId(externalId, include) {
const params = {};
if (include) {
params['include'] = include;
}
return await this.client.get(`/users/external/${externalId}`, { params });
}
/**
* Create a new user
*
* @param userData User data
*/
async create(userData) {
return await this.client.post('/users', userData);
}
/**
* Update an existing user
*
* @param id User ID
* @param userData User data to update
*/
async update(id, userData) {
return await this.client.patch(`/users/${id}`, userData);
}
/**
* Delete a user
*
* @param id User ID
*/
async delete(id) {
await this.client.delete(`/users/${id}`);
}
}