docs(api): regenerate Scribe API documentation

Update auto-generated API documentation:
- New endpoints: ProjectMonthPlan, Reports, Roles
- Updated endpoint docs for Allocations and Projects
- Regenerated Scribe index with new endpoints

Documentation now reflects enhanced-allocation features.
This commit is contained in:
2026-03-08 18:23:11 -04:00
parent dd8055f6b7
commit b9775f2f5a
12 changed files with 6446 additions and 2590 deletions

View File

@@ -1,91 +1,20 @@
name: 'Team Members'
description: |-
Endpoints for managing team members.
name: Endpoints
description: ''
endpoints:
-
custom: []
httpMethods:
- GET
uri: api/team-members
uri: api/user
metadata:
custom: []
groupName: 'Team Members'
groupDescription: |-
Endpoints for managing team members.
groupName: Endpoints
groupDescription: ''
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
title: ''
description: ''
authenticated: false
deprecated: false
headers:
Content-Type: application/json
@@ -94,84 +23,19 @@ endpoints:
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
bodyParameters: []
cleanBodyParameters: []
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: ''
status: 401
content: '{"message":"Authentication required"}'
headers:
cache-control: 'no-cache, private'
content-type: application/json
access-control-allow-origin: '*'
description: null
responseFields: []
auth: []
controller: null
@@ -181,36 +45,24 @@ endpoints:
custom: []
httpMethods:
- GET
uri: 'api/team-members/{id}'
uri: api/project-month-plans
metadata:
custom: []
groupName: 'Team Members'
groupDescription: |-
Endpoints for managing team members.
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: 'Get a single team member'
description: 'Get details of a specific team member by ID.'
authenticated: true
title: |-
GET /api/project-month-plans?year=2026
Returns month-plan grid payload by project/month for the year.
description: ''
authenticated: false
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
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@@ -219,30 +71,13 @@ endpoints:
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: ''
status: 401
content: '{"message":"Authentication required"}'
headers:
cache-control: 'no-cache, private'
content-type: application/json
access-control-allow-origin: '*'
description: null
responseFields: []
auth: []
controller: null
@@ -252,123 +87,92 @@ endpoints:
custom: []
httpMethods:
- PUT
- PATCH
uri: 'api/team-members/{id}'
uri: api/project-month-plans/bulk
metadata:
custom: []
groupName: 'Team Members'
groupDescription: |-
Endpoints for managing team members.
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: 'Update a team member'
description: 'Update details of an existing team member.'
authenticated: true
title: |-
PUT /api/project-month-plans/bulk
Bulk upsert month plan cells.
description: ''
authenticated: false
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
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
year:
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
name: year
description: 'Must be at least 2020. Must not be greater than 2100.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: true
exampleWasSpecified: false
nullable: false
deprecated: false
hourly_rate:
items:
custom: []
name: hourly_rate
description: 'Hourly rate (must be > 0).'
required: false
example: '175.00'
type: numeric
name: items
description: ''
required: true
example:
- []
type: 'object[]'
enumValues: []
exampleWasSpecified: true
exampleWasSpecified: false
nullable: false
deprecated: false
active:
'items[].project_id':
custom: []
name: active
description: 'Active status.'
required: false
example: false
type: boolean
name: 'items[].project_id'
description: 'Must be a valid UUID. The <code>id</code> of an existing record in the projects table.'
required: true
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
type: string
enumValues: []
exampleWasSpecified: true
exampleWasSpecified: false
nullable: false
deprecated: false
'items[].month':
custom: []
name: 'items[].month'
description: 'Must be a valid date in the format <code>Y-m</code>.'
required: true
example: 2026-02
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
deprecated: false
'items[].planned_hours':
custom: []
name: 'items[].planned_hours'
description: 'Must be at least 0.'
required: false
example: 84
type: number
enumValues: []
exampleWasSpecified: false
nullable: true
deprecated: false
cleanBodyParameters:
name: 'John Doe'
role_id: 1
hourly_rate: '175.00'
active: false
year: 1
items:
-
project_id: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
month: 2026-02
planned_hours: 84
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: ''
responses: []
responseFields: []
auth: []
controller: null
@@ -378,18 +182,16 @@ endpoints:
custom: []
httpMethods:
- DELETE
uri: 'api/team-members/{id}'
uri: 'api/ptos/{id}'
metadata:
custom: []
groupName: 'Team Members'
groupDescription: |-
Endpoints for managing team members.
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: 'Delete a team member'
description: 'Delete a team member. Cannot delete if member has allocations or actuals.'
authenticated: true
title: ''
description: ''
authenticated: false
deprecated: false
headers:
Content-Type: application/json
@@ -398,46 +200,22 @@ endpoints:
id:
custom: []
name: id
description: 'Team member UUID.'
description: 'The ID of the pto.'
required: true
example: 550e8400-e29b-41d4-a716-446655440000
example: architecto
type: string
enumValues: []
exampleWasSpecified: true
exampleWasSpecified: false
nullable: false
deprecated: false
cleanUrlParameters:
id: 550e8400-e29b-41d4-a716-446655440000
id: architecto
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: ''
responses: []
responseFields: []
auth: []
controller: null