## Autogenerated by Scribe. DO NOT MODIFY. name: 'Resource Allocation' description: |- Endpoints for managing resource allocations. endpoints: - custom: [] httpMethods: - GET uri: api/allocations metadata: custom: [] groupName: 'Resource Allocation' groupDescription: |- Endpoints for managing resource allocations. subgroup: '' subgroupDescription: '' title: 'List allocations / Get allocation matrix' description: 'Get all allocations, optionally filtered by month.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: [] cleanUrlParameters: [] queryParameters: month: custom: [] name: month description: 'Filter by month (YYYY-MM format).' required: false example: 2026-02 type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanQueryParameters: month: 2026-02 bodyParameters: [] cleanBodyParameters: [] fileParameters: [] responses: - custom: [] status: 200 content: |- { "data": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "project_id": "550e8400-e29b-41d4-a716-446655440001", "team_member_id": "550e8400-e29b-41d4-a716-446655440002", "month": "2026-02", "allocated_hours": 40.00 } ] } headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - POST uri: api/allocations metadata: custom: [] groupName: 'Resource Allocation' groupDescription: |- Endpoints for managing resource allocations. subgroup: '' subgroupDescription: '' title: 'Create a new allocation' description: 'Allocate hours for a team member to a project for a specific month.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: [] cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: project_id: custom: [] name: project_id description: 'Project UUID.' required: true example: 550e8400-e29b-41d4-a716-446655440001 type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false team_member_id: custom: [] name: team_member_id description: 'Team member UUID.' required: true example: 550e8400-e29b-41d4-a716-446655440002 type: string enumValues: [] exampleWasSpecified: true nullable: true deprecated: false month: custom: [] name: month description: 'Month (YYYY-MM format).' required: true example: 2026-02 type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false allocated_hours: custom: [] name: allocated_hours description: 'Hours to allocate (must be >= 0).' required: true example: '40' type: numeric enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanBodyParameters: project_id: 550e8400-e29b-41d4-a716-446655440001 team_member_id: 550e8400-e29b-41d4-a716-446655440002 month: 2026-02 allocated_hours: '40' fileParameters: [] responses: - custom: [] status: 201 content: |- { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "project_id": "550e8400-e29b-41d4-a716-446655440001", "team_member_id": "550e8400-e29b-41d4-a716-446655440002", "month": "2026-02", "allocated_hours": 40.00 } } headers: [] description: '' - custom: [] status: 422 content: '{"message":"Validation failed","errors":{"allocated_hours":["Allocated hours must be greater than or equal to 0"]}}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - GET uri: 'api/allocations/{id}' metadata: custom: [] groupName: 'Resource Allocation' groupDescription: |- Endpoints for managing resource allocations. subgroup: '' subgroupDescription: '' title: 'Get a single allocation' description: 'Get details of a specific allocation by ID.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: id: custom: [] name: id description: 'Allocation UUID.' required: true example: 550e8400-e29b-41d4-a716-446655440000 type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanUrlParameters: id: 550e8400-e29b-41d4-a716-446655440000 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] cleanBodyParameters: [] fileParameters: [] responses: - custom: [] status: 200 content: |- { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "project_id": "550e8400-e29b-41d4-a716-446655440001", "team_member_id": "550e8400-e29b-41d4-a716-446655440002", "month": "2026-02", "allocated_hours": 40.00 } } headers: [] description: '' - custom: [] status: 404 content: '{"message": "Allocation not found"}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - PUT - PATCH uri: 'api/allocations/{id}' metadata: custom: [] groupName: 'Resource Allocation' groupDescription: |- Endpoints for managing resource allocations. subgroup: '' subgroupDescription: '' title: 'Update an allocation' description: "Update an existing allocation's hours." authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: id: custom: [] name: id description: 'Allocation UUID.' required: true example: 550e8400-e29b-41d4-a716-446655440000 type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanUrlParameters: id: 550e8400-e29b-41d4-a716-446655440000 queryParameters: [] cleanQueryParameters: [] bodyParameters: allocated_hours: custom: [] name: allocated_hours description: 'Hours to allocate (must be >= 0).' required: true example: '60' type: numeric enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanBodyParameters: allocated_hours: '60' fileParameters: [] responses: - custom: [] status: 200 content: |- { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "project_id": "550e8400-e29b-41d4-a716-446655440001", "team_member_id": "550e8400-e29b-41d4-a716-446655440002", "month": "2026-02", "allocated_hours": 60.00 } } headers: [] description: '' - custom: [] status: 404 content: '{"message": "Allocation not found"}' headers: [] description: '' - custom: [] status: 422 content: '{"message":"Validation failed","errors":{"allocated_hours":["Allocated hours must be greater than or equal to 0"]}}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - DELETE uri: 'api/allocations/{id}' metadata: custom: [] groupName: 'Resource Allocation' groupDescription: |- Endpoints for managing resource allocations. subgroup: '' subgroupDescription: '' title: 'Delete an allocation' description: 'Remove an allocation.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: id: custom: [] name: id description: 'Allocation UUID.' required: true example: 550e8400-e29b-41d4-a716-446655440000 type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanUrlParameters: id: 550e8400-e29b-41d4-a716-446655440000 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] cleanBodyParameters: [] fileParameters: [] responses: - custom: [] status: 200 content: '{"message": "Allocation deleted successfully"}' headers: [] description: '' - custom: [] status: 404 content: '{"message": "Allocation not found"}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - POST uri: api/allocations/bulk metadata: custom: [] groupName: 'Resource Allocation' groupDescription: |- Endpoints for managing resource allocations. subgroup: '' subgroupDescription: '' title: 'Bulk create allocations' description: 'Create or update multiple allocations in a single request.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: [] cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: allocations: custom: [] name: allocations description: 'Array of allocations.' required: true example: - project_id: ... team_member_id: ... month: 2026-02 allocated_hours: 40 type: 'string[]' enumValues: [] exampleWasSpecified: true nullable: false deprecated: false 'allocations[].project_id': custom: [] name: 'allocations[].project_id' description: 'Must be a valid UUID. The id of an existing record in the projects table.' required: true example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed type: string enumValues: [] exampleWasSpecified: false nullable: false deprecated: false 'allocations[].team_member_id': custom: [] name: 'allocations[].team_member_id' description: 'Must be a valid UUID. The id of an existing record in the team_members table.' required: true example: 6b72fe4a-5b40-307c-bc24-f79acf9a1bb9 type: string enumValues: [] exampleWasSpecified: false nullable: false deprecated: false 'allocations[].month': custom: [] name: 'allocations[].month' description: 'Must be a valid date in the format Y-m.' required: true example: 2026-02 type: string enumValues: [] exampleWasSpecified: false nullable: false deprecated: false 'allocations[].allocated_hours': custom: [] name: 'allocations[].allocated_hours' description: 'Must be at least 0.' required: true example: 77 type: number enumValues: [] exampleWasSpecified: false nullable: false deprecated: false cleanBodyParameters: allocations: - project_id: ... team_member_id: ... month: 2026-02 allocated_hours: 40 fileParameters: [] responses: - custom: [] status: 201 content: |- { "data": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "project_id": "550e8400-e29b-41d4-a716-446655440001", "team_member_id": "550e8400-e29b-41d4-a716-446655440002", "month": "2026-02", "allocated_hours": 40.00 } ] } headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null