All files / src/lib/api-docs/endpoints/dev milestones.ts

100% Statements 113/113
100% Branches 0/0
100% Functions 0/0
100% Lines 113/113

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 1141x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
/**
 * Dev Milestones Endpoints
 * Development milestone management endpoints
 */
 
import type { ApiEndpoint } from '@/types/api-docs';
 
export const devMilestonesEndpoints: ApiEndpoint[] = [
  {
    id: 'dev-milestones-list',
    method: 'GET',
    path: '/api/dev/milestones',
    summary: 'List milestones',
    description: 'Returns milestones with progress stats',
    category: 'dev-projects',
    requiresAuth: true,
    adminOnly: true,
    parameters: [
      { name: 'projectId', type: 'string', required: false, location: 'query', description: 'Filter by project' },
      { name: 'status', type: 'string', required: false, location: 'query', description: 'Filter by status' },
      { name: 'page', type: 'number', required: false, location: 'query', description: 'Page number' },
      { name: 'limit', type: 'number', required: false, location: 'query', description: 'Items per page' },
    ],
    responses: [
      { status: 200, description: 'Paginated list of milestones' },
    ],
  },
  {
    id: 'dev-milestones-create',
    method: 'POST',
    path: '/api/dev/milestones',
    summary: 'Create milestone',
    description: 'Creates a new milestone for a project',
    category: 'dev-projects',
    requiresAuth: true,
    adminOnly: true,
    requestBody: {
      contentType: 'application/json',
      fields: [
        { name: 'name', type: 'string', required: true, description: 'Milestone name' },
        { name: 'description', type: 'string', required: false, description: 'Milestone description' },
        { name: 'projectId', type: 'string', required: true, description: 'Project ID' },
        { name: 'startDate', type: 'string', required: false, description: 'Start date (ISO)' },
        { name: 'dueDate', type: 'string', required: false, description: 'Due date (ISO)' },
      ],
    },
    responses: [
      { status: 201, description: 'Milestone created' },
      { status: 404, description: 'Project not found' },
    ],
  },
  {
    id: 'dev-milestones-get',
    method: 'GET',
    path: '/api/dev/milestones/{id}',
    summary: 'Get milestone',
    description: 'Returns milestone with tickets and progress stats',
    category: 'dev-projects',
    requiresAuth: true,
    adminOnly: true,
    parameters: [
      { name: 'id', type: 'string', required: true, location: 'path', description: 'Milestone ID' },
    ],
    responses: [
      { status: 200, description: 'Milestone with stats' },
      { status: 404, description: 'Milestone not found' },
    ],
  },
  {
    id: 'dev-milestones-update',
    method: 'PATCH',
    path: '/api/dev/milestones/{id}',
    summary: 'Update milestone',
    description: 'Updates milestone details or status',
    category: 'dev-projects',
    requiresAuth: true,
    adminOnly: true,
    parameters: [
      { name: 'id', type: 'string', required: true, location: 'path', description: 'Milestone ID' },
    ],
    requestBody: {
      contentType: 'application/json',
      fields: [
        { name: 'name', type: 'string', required: false, description: 'Milestone name' },
        { name: 'description', type: 'string', required: false, description: 'Description' },
        { name: 'status', type: 'string', required: false, description: 'Status', enum: ['PLANNING', 'ACTIVE', 'COMPLETED', 'CANCELLED'] },
        { name: 'startDate', type: 'string', required: false, description: 'Start date' },
        { name: 'dueDate', type: 'string', required: false, description: 'Due date' },
      ],
    },
    responses: [
      { status: 200, description: 'Milestone updated' },
      { status: 404, description: 'Milestone not found' },
    ],
  },
  {
    id: 'dev-milestones-delete',
    method: 'DELETE',
    path: '/api/dev/milestones/{id}',
    summary: 'Delete milestone',
    description: 'Deletes milestone (unlinks tickets)',
    category: 'dev-projects',
    requiresAuth: true,
    adminOnly: true,
    parameters: [
      { name: 'id', type: 'string', required: true, location: 'path', description: 'Milestone ID' },
    ],
    responses: [
      { status: 200, description: 'Milestone deleted' },
      { status: 404, description: 'Milestone not found' },
    ],
  },
];