@jokoor/sdk
Version:
Jokoor SMS API SDK for JavaScript/TypeScript
102 lines • 3.55 kB
JavaScript
"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