UNPKG

@jokoor/sdk

Version:
102 lines 3.55 kB
"use strict"; /** * Contact Groups resource - User-friendly wrapper for SMS contact groups API */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ContactGroups = void 0; const base_1 = require("./base"); const api_1 = require("../generated/api"); const result_1 = require("../types/result"); class ContactGroups extends base_1.BaseResource { constructor(configuration) { super(configuration); this.api = new api_1.SMSContactGroupsApi(configuration); } /** * Create a new contact group * @param params Group creation parameters * @returns Created group */ async create(params) { const apiParams = this.convertParamsToSnakeCase(params); const result = await this.handleApiCall(() => this.api.v1SmsGroupsPost(apiParams)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * Get a contact group by ID * @param id Group ID * @returns Group details */ async get(id) { // Validate ID is not empty if (!id || id.trim() === '') { return (0, result_1.err)('Group ID is required'); } const result = await this.handleApiCall(() => this.api.v1SmsGroupsIdGet(id)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * Update a contact group * @param id Group ID * @param params Update parameters * @returns Updated group */ async update(id, params) { const apiParams = this.convertParamsToSnakeCase(params); const result = await this.handleApiCall(() => this.api.v1SmsGroupsIdPut(id, apiParams)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * Delete a contact group * @param id Group ID * @returns Deletion confirmation */ async delete(id) { return await this.handleApiCall(() => this.api.v1SmsGroupsIdDelete(id)); } /** * List contact groups * @param options List options * @returns Paginated list of groups */ async list(options) { const result = await this.handlePaginatedApiCall(() => this.api.v1SmsGroupsGet(options?.limit, options?.offset, options?.search)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)({ ...result.data, items: result.data.items.map(item => this.convertKeysToCamelCase(item)) }); } // Note: getContacts method removed - endpoint not available in generated API /** * Add contacts to a group * @param id Group ID * @param contactIds Contact IDs to add * @returns Success message from API */ async addContacts(id, contactIds) { return await this.handleApiCall(() => this.api.v1SmsGroupsIdContactsPost(id, { contact_ids: contactIds })); } /** * Remove contacts from a group * @param id Group ID * @param contactIds Contact IDs to remove * @returns Success message from API */ async removeContacts(id, contactIds) { return await this.handleApiCall(() => this.api.v1SmsGroupsIdContactsDelete(id, { contact_ids: contactIds })); } } exports.ContactGroups = ContactGroups; //# sourceMappingURL=contact-groups.js.map