## Autogenerated by Scribe. DO NOT MODIFY. name: 'Team Members' description: |- Endpoints for managing team members. endpoints: - custom: [] httpMethods: - GET uri: api/team-members metadata: custom: [] groupName: 'Team Members' groupDescription: |- Endpoints for managing team members. subgroup: '' subgroupDescription: '' title: 'List all team members' description: 'Get a list of all team members with optional filtering by active status.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: [] cleanUrlParameters: [] queryParameters: active: custom: [] name: active description: 'Filter by active status.' required: false example: true type: boolean enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanQueryParameters: active: true bodyParameters: [] cleanBodyParameters: [] fileParameters: [] responses: - custom: [] status: 200 content: |- { "data": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "John Doe", "role": { "id": 1, "name": "Backend Developer" }, "hourly_rate": "150.00", "active": true, "created_at": "2024-01-15T10:00:00.000000Z", "updated_at": "2024-01-15T10:00:00.000000Z" } ] } headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - POST uri: api/team-members metadata: custom: [] groupName: 'Team Members' groupDescription: |- Endpoints for managing team members. subgroup: '' subgroupDescription: '' title: 'Create a new team member' description: 'Create a new team member with name, role, and hourly rate.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: [] cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: name: custom: [] name: name description: 'Team member name.' required: true example: 'John Doe' type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false role_id: custom: [] name: role_id description: 'Role ID.' required: true example: 1 type: integer enumValues: [] exampleWasSpecified: true nullable: false deprecated: false hourly_rate: custom: [] name: hourly_rate description: 'Hourly rate (must be > 0).' required: true example: '150.00' type: numeric enumValues: [] exampleWasSpecified: true nullable: false deprecated: false active: custom: [] name: active description: 'Active status (defaults to true).' required: false example: true type: boolean enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanBodyParameters: name: 'John Doe' role_id: 1 hourly_rate: '150.00' active: true fileParameters: [] responses: - custom: [] status: 201 content: |- { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "John Doe", "role": { "id": 1, "name": "Backend Developer" }, "hourly_rate": "150.00", "active": true, "created_at": "2024-01-15T10:00:00.000000Z", "updated_at": "2024-01-15T10:00:00.000000Z" } } headers: [] description: '' - custom: [] status: 422 content: '{"message":"Validation failed","errors":{"name":["The name field is required."],"hourly_rate":["Hourly rate must be greater than 0"]}}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - GET uri: 'api/team-members/{id}' metadata: custom: [] groupName: 'Team Members' groupDescription: |- Endpoints for managing team members. subgroup: '' subgroupDescription: '' title: 'Get a single team member' description: 'Get details of a specific team member by ID.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: id: custom: [] name: id description: 'Team member 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", "name": "John Doe", "role": { "id": 1, "name": "Backend Developer" }, "hourly_rate": "150.00", "active": true, "created_at": "2024-01-15T10:00:00.000000Z", "updated_at": "2024-01-15T10:00:00.000000Z" } } headers: [] description: '' - custom: [] status: 404 content: '{"message":"Team member not found"}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - PUT - PATCH uri: 'api/team-members/{id}' metadata: custom: [] groupName: 'Team Members' groupDescription: |- Endpoints for managing team members. subgroup: '' subgroupDescription: '' title: 'Update a team member' description: 'Update details of an existing team member.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: id: custom: [] name: id description: 'Team member 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: name: custom: [] name: name description: 'Team member name.' required: false example: 'John Doe' type: string enumValues: [] exampleWasSpecified: true nullable: false deprecated: false role_id: custom: [] name: role_id description: 'Role ID.' required: false example: 1 type: integer enumValues: [] exampleWasSpecified: true nullable: false deprecated: false hourly_rate: custom: [] name: hourly_rate description: 'Hourly rate (must be > 0).' required: false example: '175.00' type: numeric enumValues: [] exampleWasSpecified: true nullable: false deprecated: false active: custom: [] name: active description: 'Active status.' required: false example: false type: boolean enumValues: [] exampleWasSpecified: true nullable: false deprecated: false cleanBodyParameters: name: 'John Doe' role_id: 1 hourly_rate: '175.00' active: false fileParameters: [] responses: - custom: [] status: 200 content: |- { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "John Doe", "role": { "id": 1, "name": "Backend Developer" }, "hourly_rate": "175.00", "active": false, "created_at": "2024-01-15T10:00:00.000000Z", "updated_at": "2024-01-15T11:00:00.000000Z" } } headers: [] description: '' - custom: [] status: 404 content: '{"message":"Team member not found"}' headers: [] description: '' - custom: [] status: 422 content: '{"message":"Validation failed","errors":{"hourly_rate":["Hourly rate must be greater than 0"]}}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null - custom: [] httpMethods: - DELETE uri: 'api/team-members/{id}' metadata: custom: [] groupName: 'Team Members' groupDescription: |- Endpoints for managing team members. subgroup: '' subgroupDescription: '' title: 'Delete a team member' description: 'Delete a team member. Cannot delete if member has allocations or actuals.' authenticated: true deprecated: false headers: Content-Type: application/json Accept: application/json urlParameters: id: custom: [] name: id description: 'Team member 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":"Team member deleted successfully"}' headers: [] description: '' - custom: [] status: 404 content: '{"message":"Team member not found"}' headers: [] description: '' - custom: [] status: 422 content: '{"message":"Cannot delete team member with active allocations","suggestion":"Consider deactivating the team member instead"}' headers: [] description: '' - custom: [] status: 422 content: '{"message":"Cannot delete team member with historical data","suggestion":"Consider deactivating the team member instead"}' headers: [] description: '' responseFields: [] auth: [] controller: null method: null route: null