@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
213 lines • 9.88 kB
JavaScript
import { RubricsListParamsSchema, RubricsListResponseSchema, RubricResponseSchema, RubricCreateParamsSchema, RubricUpdateParamsSchema, } from '../schemas';
/**
* Creates the rubrics resource methods
* OpenAPI Path: /rubrics → rubrics.*
* @description Rubrics management endpoints
*/
export function createRubricsResource(executeRequest) {
return {
/**
* List available rubrics for evaluation and scoring
*
* @fullPath api.agrInfo.rubrics.list
* @service agr-info
* @domain evaluation-management
* @dataMethod rubricsData.list
* @discoverable true
* @searchTerms ["rubrics", "evaluation", "scoring", "assessment", "criteria"]
* @relatedEndpoints ["api.agrInfo.rubrics.get", "api.agrInfo.rubrics.create"]
* @commonPatterns ["List evaluation rubrics", "Get assessment criteria", "Scoring frameworks"]
* @workflow ["evaluation-setup", "assessment-preparation", "scoring-criteria"]
* @prerequisites ["Valid authentication", "Evaluation system access"]
* @nextSteps ["Select rubric for evaluation", "Create new assessment"]
* @businessRules ["Returns available evaluation frameworks", "Includes rubric metadata"]
* @functionalArea "evaluation-management"
* @caching "Cache for 10 minutes, stable evaluation criteria"
* @performance "Fast retrieval of evaluation frameworks"
*
* @param params Optional filtering parameters
* @returns Promise<RubricsListResponse> List of available rubrics
*/
list: async (params) => {
return executeRequest({
method: 'GET',
path: '/rubrics',
paramsSchema: RubricsListParamsSchema,
responseSchema: RubricsListResponseSchema,
}, params);
},
/**
* Get specific rubric details and criteria
*
* @fullPath api.agrInfo.rubrics.get
* @service agr-info
* @domain evaluation-management
* @dataMethod rubricsData.get
* @discoverable true
* @searchTerms ["rubric", "details", "criteria", "evaluation", "scoring"]
* @relatedEndpoints ["api.agrInfo.rubrics.list", "api.agrInfo.rubrics.update", "api.agrInfo.rubrics.delete"]
* @commonPatterns ["Get rubric details", "View evaluation criteria", "Rubric information"]
* @workflow ["evaluation-review", "assessment-setup", "scoring-preparation"]
* @prerequisites ["Valid authentication", "Valid rubric UID"]
* @nextSteps ["Use rubric for evaluation", "Modify rubric criteria"]
* @businessRules ["Returns complete rubric structure", "Includes all evaluation criteria"]
* @functionalArea "evaluation-management"
* @caching "Cache for 15 minutes, evaluation criteria are stable"
* @performance "Fast lookup by rubric UID"
*
* @param rubricsUid Unique identifier for the rubric
* @returns Promise<RubricResponse> Rubric details and criteria
*/
get: async (rubricsUid) => {
return executeRequest({
method: 'GET',
path: '/rubrics/{rubricsUid}',
responseSchema: RubricResponseSchema,
}, undefined, { rubricsUid: String(rubricsUid) });
},
/**
* Create a new evaluation rubric
*
* @fullPath api.agrInfo.rubrics.create
* @service agr-info
* @domain evaluation-management
* @dataMethod rubricsData.create
* @discoverable true
* @searchTerms ["rubric", "create", "new", "evaluation", "assessment", "criteria"]
* @relatedEndpoints ["api.agrInfo.rubrics.list", "api.agrInfo.rubrics.get", "api.agrInfo.rubrics.update"]
* @commonPatterns ["Create evaluation rubric", "New assessment framework", "Define scoring criteria"]
* @workflow ["rubric-development", "evaluation-setup", "assessment-creation"]
* @prerequisites ["Valid authentication", "Evaluation design requirements"]
* @nextSteps ["Define detailed criteria", "Test rubric with evaluations"]
* @businessRules ["Validates rubric structure", "Assigns unique UID", "Sets creation metadata"]
* @functionalArea "evaluation-management"
* @caching "No caching - immediate creation"
* @performance "Fast creation with validation"
*
* @param data Rubric creation data
* @returns Promise<RubricResponse> Created rubric details
*/
create: async (data) => {
return executeRequest({
method: 'POST',
path: '/rubrics',
paramsSchema: RubricCreateParamsSchema,
responseSchema: RubricResponseSchema,
}, data);
},
/**
* Update existing rubric criteria and configuration
*
* @fullPath api.agrInfo.rubrics.update
* @service agr-info
* @domain evaluation-management
* @dataMethod rubricsData.update
* @discoverable true
* @searchTerms ["rubric", "update", "modify", "edit", "criteria", "evaluation"]
* @relatedEndpoints ["api.agrInfo.rubrics.get", "api.agrInfo.rubrics.list", "api.agrInfo.rubrics.delete"]
* @commonPatterns ["Update rubric criteria", "Modify evaluation framework", "Edit scoring system"]
* @workflow ["rubric-maintenance", "evaluation-improvement", "assessment-refinement"]
* @prerequisites ["Valid authentication", "Existing rubric", "Valid rubrics_uid"]
* @nextSteps ["Validate updated criteria", "Re-test evaluation accuracy"]
* @businessRules ["Preserves evaluation integrity", "Updates modification timestamps", "Validates criteria"]
* @functionalArea "evaluation-management"
* @caching "Invalidate cache on update"
* @performance "Fast updates with validation"
*
* @param rubricsUid Unique identifier for the rubric
* @param data Updated rubric data
* @returns Promise<RubricResponse> Updated rubric details
*/
update: async (rubricsUid, data) => {
return executeRequest({
method: 'PUT',
path: '/rubrics/{rubricsUid}',
paramsSchema: RubricUpdateParamsSchema,
responseSchema: RubricResponseSchema,
}, data, { rubricsUid: String(rubricsUid) });
},
/**
* Delete an evaluation rubric
*
* @fullPath api.agrInfo.rubrics.delete
* @service agr-info
* @domain evaluation-management
* @dataMethod rubricsData.delete
* @discoverable true
* @searchTerms ["rubric", "delete", "remove", "evaluation", "cleanup"]
* @relatedEndpoints ["api.agrInfo.rubrics.list", "api.agrInfo.rubrics.get"]
* @commonPatterns ["Remove rubric", "Delete evaluation framework", "Cleanup assessments"]
* @workflow ["rubric-cleanup", "evaluation-maintenance", "assessment-removal"]
* @prerequisites ["Valid authentication", "Existing rubric", "No active evaluations using rubric"]
* @nextSteps ["Verify rubric removal", "Update evaluation documentation"]
* @businessRules ["Checks for active usage", "Prevents deletion of in-use rubrics", "Logs deletion"]
* @functionalArea "evaluation-management"
* @caching "Invalidate all related cache on delete"
* @performance "Fast deletion with dependency validation"
*
* @param rubricsUid Unique identifier for the rubric
* @returns Promise<boolean> Success indicator
*/
delete: async (rubricsUid) => {
await executeRequest({
method: 'DELETE',
path: '/rubrics/{rubricsUid}',
responseSchema: RubricResponseSchema,
}, undefined, { rubricsUid: String(rubricsUid) });
return true;
},
};
}
/**
* Creates the rubricsData resource methods (data-only versions)
*/
export function createRubricsDataResource(rubrics) {
return {
/**
* Get rubrics list data only
* @param params Optional filtering parameters
* @returns Promise<Rubric[]> Array of rubrics
*/
list: async (params) => {
const response = await rubrics.list(params);
return response.data;
},
/**
* Get rubric details data only
* @param rubricsUid Unique identifier for the rubric
* @returns Promise<Rubric> Rubric details
*/
get: async (rubricsUid) => {
const response = await rubrics.get(rubricsUid);
return response.data;
},
/**
* Get created rubric data only
* @param data Rubric creation data
* @returns Promise<Rubric> Created rubric
*/
create: async (data) => {
const response = await rubrics.create(data);
return response.data;
},
/**
* Get updated rubric data only
* @param rubricsUid Unique identifier for the rubric
* @param data Updated rubric data
* @returns Promise<Rubric> Updated rubric
*/
update: async (rubricsUid, data) => {
const response = await rubrics.update(rubricsUid, data);
return response.data;
},
/**
* Delete rubric and return success status
* @param rubricsUid Unique identifier for the rubric
* @returns Promise<boolean> Success indicator
*/
delete: async (rubricsUid) => {
return await rubrics.delete(rubricsUid);
},
};
}
//# sourceMappingURL=rubrics.js.map