@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
251 lines • 13.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSettingsResource = createSettingsResource;
exports.createSettingsDataResource = createSettingsDataResource;
const zod_1 = require("zod");
const schemas_1 = require("../../../core/schemas");
const schemas_2 = require("../schemas");
// Create response schemas using BaseResponseSchema directly
const UnknownResponseSchema = (0, schemas_1.BaseResponseSchema)(zod_1.z.unknown());
const UnknownArrayResponseSchema = (0, schemas_1.BaseResponseSchema)(zod_1.z.array(zod_1.z.unknown()));
/**
* Creates the settings resource methods
* OpenAPI Path: /settings → settings.*
* @description Comprehensive settings configuration management for site content and behavior
*/
function createSettingsResource(executeRequest) {
return {
/**
* List all configuration settings with optional filtering and pagination
* @description Retrieves all site configuration settings with support for filtering and pagination
* @fullPath api.agrSite.settings.list
* @service agr-site
* @domain site-content-management
* @dataMethod settingsData.list - returns only the settings array without metadata
* @discoverable true
* @searchTerms ["settings", "configuration", "site config", "preferences", "site settings", "content settings"]
* @relatedEndpoints ["api.agrSite.settings.get", "api.agrSite.settings.create", "api.agrSite.settings.update", "api.agrSite.settings.delete"]
* @commonPatterns ["Get all settings", "List site configuration", "Retrieve preferences", "Configuration management"]
* @workflow ["settings-management", "site-configuration", "site-setup"]
* @prerequisites ["Valid authentication token", "Settings read permissions"]
* @nextSteps ["api.agrSite.settings.get for details", "api.agrSite.settings.update for modifications"]
* @businessRules ["Returns only settings accessible to current user", "Respects site-level permissions", "Pagination recommended for large config sets"]
* @functionalArea "site-content-and-ai-processing"
* @caching "Cache for 10 minutes, invalidate on settings changes"
* @performance "Supports pagination, use filters for large configuration sets"
* @param params Optional filtering and pagination parameters
* @returns Promise<BaseResponse<unknown[]>> Complete response with settings array and metadata
* @example
* ```typescript
* // Get all settings
* const response = await client.settings.list();
* console.log(response.data); // Settings array
*
* // Get just the data
* const settings = await client.settingsData.list();
*
* // Filter settings
* const filtered = await client.settings.list({ category: 'agricultural' });
* ```
*/
list: async (params) => {
return executeRequest({
method: 'GET',
path: '/settings',
paramsSchema: schemas_2.SettingListParamsSchema,
responseSchema: UnknownArrayResponseSchema,
}, params);
},
/**
* Get configuration setting details by ID
* @description Retrieves detailed information for a specific configuration setting
* @fullPath api.agrSite.settings.get
* @service agr-site
* @domain site-content-management
* @dataMethod settingsData.get - returns only the setting data without metadata
* @discoverable true
* @searchTerms ["setting detail", "configuration detail", "get setting", "retrieve config", "setting info"]
* @relatedEndpoints ["api.agrSite.settings.list", "api.agrSite.settings.update", "api.agrSite.settings.delete"]
* @commonPatterns ["Get setting details", "Retrieve configuration", "View setting info"]
* @workflow ["settings-management", "configuration-review"]
* @prerequisites ["Valid authentication token", "Setting read permissions", "Valid setting ID"]
* @nextSteps ["api.agrSite.settings.update to modify", "api.agrSite.settings.delete to remove"]
* @businessRules ["Returns 404 if setting not found", "Respects setting-level permissions"]
* @functionalArea "site-content-and-ai-processing"
* @caching "Cache for 15 minutes, invalidate on setting updates"
* @performance "Direct ID lookup, very fast response"
* @param settingsUid Unique identifier for the setting
* @returns Promise<BaseResponse<unknown>> Complete response with setting details
* @example
* ```typescript
* const setting = await client.settings.get(123);
* const settingData = await client.settingsData.get(123);
* ```
*/
get: async (settingsUid) => {
return executeRequest({
method: 'GET',
path: '/settings/{settingsUid}',
responseSchema: UnknownResponseSchema,
}, undefined, { settingsUid: String(settingsUid) });
},
/**
* Create new configuration setting
* @description Creates a new site configuration setting with specified parameters
* @fullPath api.agrSite.settings.create
* @service agr-site
* @domain site-content-management
* @dataMethod settingsData.create - returns only the created setting data without metadata
* @discoverable true
* @searchTerms ["create setting", "new configuration", "add setting", "setting creation", "config setup"]
* @relatedEndpoints ["api.agrSite.settings.list", "api.agrSite.settings.get", "api.agrSite.settings.update"]
* @commonPatterns ["Create new setting", "Add configuration", "Setup new preference"]
* @workflow ["settings-management", "site-configuration", "site-setup"]
* @prerequisites ["Valid authentication token", "Settings create permissions", "Valid setting data"]
* @nextSteps ["api.agrSite.settings.get to verify", "api.agrSite.settings.update for modifications"]
* @businessRules ["Setting names must be unique", "Validates setting format", "Creates audit trail"]
* @functionalArea "site-content-and-ai-processing"
* @performance "Synchronous creation with immediate availability"
* @param params Setting creation parameters including name, value, and metadata
* @returns Promise<BaseResponse<unknown>> Complete response with created setting details
* @example
* ```typescript
* const newSetting = await client.settings.create({
* name: 'crop_rotation_interval',
* value: '3',
* category: 'agricultural',
* description: 'Default crop rotation interval in years'
* });
* ```
*/
create: async (params) => {
return executeRequest({
method: 'POST',
path: '/settings',
paramsSchema: schemas_2.SettingCreateParamsSchema,
responseSchema: UnknownResponseSchema,
}, params);
},
/**
* Update existing configuration setting
* @description Updates an existing site configuration setting with new values
* @fullPath api.agrSite.settings.update
* @service agr-site
* @domain site-content-management
* @dataMethod settingsData.update - returns only the updated setting data without metadata
* @discoverable true
* @searchTerms ["update setting", "modify configuration", "change setting", "edit config", "setting update"]
* @relatedEndpoints ["api.agrSite.settings.list", "api.agrSite.settings.get", "api.agrSite.settings.delete"]
* @commonPatterns ["Update setting value", "Modify configuration", "Change preferences"]
* @workflow ["settings-management", "configuration-maintenance"]
* @prerequisites ["Valid authentication token", "Settings update permissions", "Existing setting ID"]
* @nextSteps ["api.agrSite.settings.get to verify changes", "Cache invalidation may be required"]
* @businessRules ["Validates new values", "Maintains setting history", "Updates audit trail"]
* @functionalArea "site-content-and-ai-processing"
* @performance "Synchronous update with immediate effect"
* @param settingsUid Unique identifier for the setting to update
* @param params Updated setting parameters
* @returns Promise<BaseResponse<unknown>> Complete response with updated setting details
* @example
* ```typescript
* const updated = await client.settings.update(123, {
* value: '5',
* description: 'Updated crop rotation interval'
* });
* ```
*/
update: async (settingsUid, params) => {
return executeRequest({
method: 'PUT',
path: '/settings/{settingsUid}',
paramsSchema: schemas_2.SettingUpdateParamsSchema,
responseSchema: UnknownResponseSchema,
}, params, { settingsUid: String(settingsUid) });
},
/**
* Delete configuration setting
* @description Removes a configuration setting from the system
* @fullPath api.agrSite.settings.delete
* @service agr-site
* @domain site-content-management
* @dataMethod settingsData.delete - returns only the deletion result without metadata
* @discoverable true
* @searchTerms ["delete setting", "remove configuration", "delete config", "remove setting"]
* @relatedEndpoints ["api.agrSite.settings.list", "api.agrSite.settings.get", "api.agrSite.settings.create"]
* @commonPatterns ["Delete setting", "Remove configuration", "Clean up settings"]
* @workflow ["settings-management", "configuration-cleanup"]
* @prerequisites ["Valid authentication token", "Settings delete permissions", "Existing setting ID"]
* @nextSteps ["Cache invalidation", "Verify setting removal with list operation"]
* @businessRules ["Cannot delete system-critical settings", "Creates deletion audit log", "Irreversible operation"]
* @functionalArea "site-content-and-ai-processing"
* @performance "Immediate deletion with cascading cleanup"
* @param settingsUid Unique identifier for the setting to delete
* @returns Promise<BaseResponse<unknown>> Complete response confirming deletion
* @example
* ```typescript
* const result = await client.settings.delete(123);
* ```
*/
delete: async (settingsUid) => {
return executeRequest({
method: 'DELETE',
path: '/settings/{settingsUid}',
responseSchema: UnknownResponseSchema,
}, undefined, { settingsUid: String(settingsUid) });
},
};
}
/**
* Creates the settingsData resource methods (data-only versions)
*/
function createSettingsDataResource(settings) {
return {
/**
* Get settings data without response metadata
* @param params Optional filtering and pagination parameters
* @returns Promise<unknown[]> Settings array directly
*/
list: async (params) => {
const response = await settings.list(params);
return response.data;
},
/**
* Get setting data without response metadata
* @param settingsUid Unique identifier for the setting
* @returns Promise<unknown> Setting data directly
*/
get: async (settingsUid) => {
const response = await settings.get(settingsUid);
return response.data;
},
/**
* Create setting and return data without response metadata
* @param params Setting creation parameters
* @returns Promise<unknown> Created setting data directly
*/
create: async (params) => {
const response = await settings.create(params);
return response.data;
},
/**
* Update setting and return data without response metadata
* @param settingsUid Unique identifier for the setting to update
* @param params Updated setting parameters
* @returns Promise<unknown> Updated setting data directly
*/
update: async (settingsUid, params) => {
const response = await settings.update(settingsUid, params);
return response.data;
},
/**
* Delete setting and return result without response metadata
* @param settingsUid Unique identifier for the setting to delete
* @returns Promise<unknown> Deletion result directly
*/
delete: async (settingsUid) => {
const response = await settings.delete(settingsUid);
return response.data;
},
};
}
//# sourceMappingURL=settings.js.map