openapi: 3.0.3
info:
title: 'Laravel API Documentation'
description: 'API de gestión de usuarios, roles y permisos del sistema.'
version: 1.0.0
servers:
-
url: 'http://localhost'
tags:
-
name: 'Access Control Management'
description: ''
-
name: 'Assignment Engine'
description: ''
-
name: 'Calendar Management'
description: ''
-
name: Endpoints
description: ''
-
name: 'Group Management'
description: ''
-
name: Inspection
description: ''
-
name: 'Inspection Change Reason Management'
description: ''
-
name: 'Inspection Management'
description: ''
-
name: 'Inspection Skill Management'
description: ''
-
name: 'Inspection Template Management'
description: ''
-
name: 'Inspection Type Management'
description: ''
-
name: 'Log Management'
description: ''
-
name: 'Measurement Unit Management'
description: ''
-
name: 'Notification Management'
description: ''
-
name: 'User Management'
description: ''
components:
securitySchemes:
default:
type: http
scheme: bearer
description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.'
security:
-
default: []
paths:
/api/v1/roles:
get:
summary: ''
operationId: getApiV1Roles
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Access Control Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must not be greater than 255 characters.'
example: b
nullable: true
is_active_only:
type: boolean
description: ''
example: false
nullable: true
sort_by:
type: string
description: ''
example: description
enum:
- name
- description
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 22
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 7
nullable: true
post:
summary: ''
operationId: postApiV1Roles
description: ''
parameters: []
responses: { }
tags:
- 'Access Control Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: 'Must not be greater than 500 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
permissions:
type: array
description: ''
example:
- architecto
items:
type: string
required:
- name
/api/v1/roles/permissions:
get:
summary: ''
operationId: getApiV1RolesPermissions
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Access Control Management'
'/api/v1/roles/{id}':
get:
summary: ''
operationId: getApiV1RolesId
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Access Control Management'
patch:
summary: ''
operationId: patchApiV1RolesId
description: ''
parameters: []
responses: { }
tags:
- 'Access Control Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: 'Must not be greater than 500 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
is_active:
type: boolean
description: ''
example: true
nullable: true
parameters:
-
in: path
name: id
description: 'The ID of the role.'
example: architecto
required: true
schema:
type: string
'/api/v1/roles/{role}/users':
get:
summary: ''
operationId: getApiV1RolesRoleUsers
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Access Control Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
first:
type: integer
description: 'Must be at least 0.'
example: 27
nullable: true
max:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
parameters:
-
in: path
name: role
description: 'The role.'
example: architecto
required: true
schema:
type: string
'/api/v1/roles/{role}/permissions':
get:
summary: ''
operationId: getApiV1RolesRolePermissions
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Access Control Management'
put:
summary: ''
operationId: putApiV1RolesRolePermissions
description: ''
parameters: []
responses: { }
tags:
- 'Access Control Management'
parameters:
-
in: path
name: role
description: 'The role.'
example: architecto
required: true
schema:
type: string
'/api/v1/roles/users/{user}/role':
put:
summary: ''
operationId: putApiV1RolesUsersUserRole
description: ''
parameters: []
responses: { }
tags:
- 'Access Control Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
role_name:
type: string
description: ''
example: architecto
required:
- role_name
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
/api/v1/roles/assign:
post:
summary: ''
operationId: postApiV1RolesAssign
description: ''
parameters: []
responses: { }
tags:
- 'Access Control Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'Must be a valid UUID.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
role_name:
type: string
description: ''
example: architecto
required:
- user_id
- role_name
/api/v1/roles/unassign:
post:
summary: ''
operationId: postApiV1RolesUnassign
description: ''
parameters: []
responses: { }
tags:
- 'Access Control Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'Must be a valid UUID.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
role_name:
type: string
description: ''
example: architecto
required:
- user_id
- role_name
/api/v1/inspections/assignment-engine:
get:
summary: 'Get assignment engine configuration'
operationId: getAssignmentEngineConfiguration
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Assignment Engine'
patch:
summary: 'Update assignment engine configuration'
operationId: updateAssignmentEngineConfiguration
description: ''
parameters: []
responses: { }
tags:
- 'Assignment Engine'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
is_active:
type: boolean
description: ''
example: true
nullable: true
weight_distance:
type: number
description: 'Must be between 0 and 1.'
example: 1
nullable: true
weight_workload:
type: number
description: 'Must be between 0 and 1.'
example: 1
nullable: true
weight_hours:
type: number
description: 'Must be between 0 and 1.'
example: 0
nullable: true
/api/v1/calendar-events/import:
post:
summary: ''
operationId: postApiV1CalendarEventsImport
description: ''
parameters: []
responses: { }
tags:
- 'Calendar Management'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: 'Must be a file. Must not be greater than 2048 kilobytes.'
required:
- file
/api/v1/calendar-events:
post:
summary: ''
operationId: postApiV1CalendarEvents
description: ''
parameters: []
responses: { }
tags:
- 'Calendar Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
end_date:
type: string
description: 'Must be a valid date. Must be a date after or equal to start_date.'
example: '2052-03-15'
nullable: true
name:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
is_blocking:
type: boolean
description: ''
example: false
nullable: true
frequency:
type: object
description: ''
example: null
properties:
interval:
type: integer
description: 'This field is required when frequency is present. Must be at least 1.'
example: 16
unit:
type: string
description: 'This field is required when frequency is present.'
example: architecto
enum:
- days
- weeks
- months
- years
day_of_week:
type: string
description: ''
example: architecto
enum:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
nullable: true
repeat_mode:
type: string
description: ''
example: architecto
enum:
- date
- day
nullable: true
day_of_month:
type: integer
description: 'Must be at least 1. Must not be greater than 31.'
example: 22
nullable: true
week:
type: string
description: ''
example: architecto
enum:
- first
- second
- third
- fourth
- fifth
- penultimate
- last
nullable: true
month:
type: string
description: ''
example: architecto
nullable: true
days_of_month:
type: array
description: 'Must be at least 1. Must not be greater than 31.'
example:
- 22
items:
type: integer
nullable: true
required:
- start_date
- name
get:
summary: ''
operationId: getApiV1CalendarEvents
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Calendar Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
start_date:
type: string
description: 'This field is required when end_date is present. Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
end_date:
type: string
description: 'This field is required when start_date is present. Must be a valid date. Must be a date after or equal to start_date.'
example: '2052-03-15'
nullable: true
'/api/v1/calendar-events/{calendarEvent_id}':
get:
summary: ''
operationId: getApiV1CalendarEventsCalendarEvent_id
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Calendar Management'
patch:
summary: ''
operationId: patchApiV1CalendarEventsCalendarEvent_id
description: ''
parameters: []
responses: { }
tags:
- 'Calendar Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
start_date:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
end_date:
type: string
description: 'Must be a valid date. Must be a date after or equal to start_date.'
example: '2052-03-15'
nullable: true
is_blocking:
type: boolean
description: ''
example: false
nullable: true
frequency:
type: object
description: ''
example: null
properties:
interval:
type: integer
description: 'This field is required when frequency is present. Must be at least 1.'
example: 22
unit:
type: string
description: 'This field is required when frequency is present.'
example: architecto
enum:
- days
- weeks
- months
- years
day_of_week:
type: string
description: ''
example: architecto
enum:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
nullable: true
repeat_mode:
type: string
description: ''
example: architecto
enum:
- date
- day
nullable: true
day_of_month:
type: integer
description: 'Must be at least 1. Must not be greater than 31.'
example: 22
nullable: true
week:
type: string
description: ''
example: architecto
enum:
- first
- second
- third
- fourth
- fifth
- penultimate
- last
nullable: true
month:
type: string
description: ''
example: architecto
nullable: true
days_of_month:
type: array
description: 'Must be at least 1. Must not be greater than 31.'
example:
- 22
items:
type: integer
nullable: true
delete:
summary: ''
operationId: deleteApiV1CalendarEventsCalendarEvent_id
description: ''
parameters: []
responses: { }
tags:
- 'Calendar Management'
parameters:
-
in: path
name: calendarEvent_id
description: 'The ID of the calendarEvent.'
example: architecto
required: true
schema:
type: string
/api/v1/business-days:
get:
summary: 'Get business days configuration'
operationId: getBusinessDaysConfiguration
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Calendar Management'
patch:
summary: 'Update business days configuration'
operationId: updateBusinessDaysConfiguration
description: ''
parameters: []
responses: { }
tags:
- 'Calendar Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
monday:
type: boolean
description: ''
example: false
nullable: true
tuesday:
type: boolean
description: ''
example: true
nullable: true
wednesday:
type: boolean
description: ''
example: true
nullable: true
thursday:
type: boolean
description: ''
example: true
nullable: true
friday:
type: boolean
description: ''
example: false
nullable: true
saturday:
type: boolean
description: ''
example: false
nullable: true
sunday:
type: boolean
description: ''
example: false
nullable: true
/api/v1/health:
get:
summary: ''
operationId: getApiV1Health
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
message: 'API is healthy'
timestamp: '2026-02-20T19:44:16+00:00'
properties:
success:
type: boolean
example: true
message:
type: string
example: 'API is healthy'
timestamp:
type: string
example: '2026-02-20T19:44:16+00:00'
tags:
- Endpoints
/api/v1/groups:
get:
summary: ''
operationId: getApiV1Groups
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Group Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must be at least 3 characters.'
example: bngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwtujwvlxjklqppwqbewtnnoqitpxn
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 23
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 80
nullable: true
sort_by:
type: string
description: ''
example: created_at
enum:
- name
- created_at
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
post:
summary: ''
operationId: postApiV1Groups
description: ''
parameters: []
responses: { }
tags:
- 'Group Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
user_ids:
type: array
description: 'Must be a valid UUID. The oauth_client_id of an existing record in the users table.'
example:
- 5707ca55-f609-3528-be8b-1baeaee1567e
items:
type: string
required:
- name
'/api/v1/groups/{id}':
get:
summary: ''
operationId: getApiV1GroupsId
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
success: false
message: 'Not found'
errors: null
properties:
success:
type: boolean
example: false
message:
type: string
example: 'Not found'
errors:
type: string
example: null
nullable: true
tags:
- 'Group Management'
put:
summary: ''
operationId: putApiV1GroupsId
description: ''
parameters: []
responses: { }
tags:
- 'Group Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
status:
type: string
description: ''
example: active
enum:
- active
- inactive
required:
- name
- status
delete:
summary: ''
operationId: deleteApiV1GroupsId
description: ''
parameters: []
responses: { }
tags:
- 'Group Management'
parameters:
-
in: path
name: id
description: 'The ID of the group.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspections/{inspection_id}/start':
post:
summary: ''
operationId: postApiV1InspectionsInspection_idStart
description: ''
parameters: []
responses: { }
tags:
- Inspection
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -89
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
required:
- latitude
- longitude
parameters:
-
in: path
name: inspection_id
description: 'The ID of the inspection.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspections/{inspection_id}/finalize':
post:
summary: ''
operationId: postApiV1InspectionsInspection_idFinalize
description: ''
parameters: []
responses: { }
tags:
- Inspection
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
finalize_location:
type: object
description: ''
example: []
properties:
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -89
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
required:
- latitude
- longitude
start_location:
type: object
description: ''
example: null
properties:
latitude:
type: number
description: 'This field is required when start_location is present. Must be between -90 and 90.'
example: -90
longitude:
type: number
description: 'This field is required when start_location is present. Must be between -180 and 180.'
example: -179
answers:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
template_id:
type: string
description: 'Must be a valid UUID. The id of an existing record in the inspection_templates table.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
answers:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
item_id:
type: string
description: 'Must be a valid UUID. The id of an existing record in the inspection_template_items table.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
answer_value:
type: string
description: ''
example: architecto
comment:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'n'
nullable: true
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
nullable: true
evidence_files:
type: array
description: 'Must be a file. Must not be greater than 10240 kilobytes.'
items:
type: string
format: binary
answered_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
required:
- item_id
- answer_value
required:
- template_id
- answers
signatures:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
signer_type:
type: string
description: ''
example: inspector
enum:
- regulated
- inspector
signer_name:
type: string
description: 'Must not be greater than 255 characters.'
example: m
signer_document:
type: string
description: 'Must not be greater than 20 characters.'
example: iyvdljnikhwaykcm
nullable: true
signer_role:
type: string
description: 'Must not be greater than 100 characters.'
example: 'y'
nullable: true
signature_image:
type: string
format: binary
description: 'Must be a file. Must not be greater than 5120 kilobytes.'
dui_image:
type: string
format: binary
description: 'Must be a file. Must not be greater than 5120 kilobytes.'
nullable: true
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -180
required:
- signer_type
- signer_name
- signature_image
- latitude
- longitude
authorized_signers:
type: object
description: ''
example: null
properties: { }
nullable: true
findings:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: p
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Qui commodi incidunt iure odit.'
nullable: true
severity:
type: string
description: ''
example: moderate
enum:
- critical
- moderate
- minor
category:
type: string
description: 'Must not be greater than 100 characters.'
example: s
nullable: true
status:
type: string
description: 'Must not be greater than 50 characters.'
example: i
nullable: true
inspection_template_item_id:
type: string
description: 'Must be a valid UUID. The id of an existing record in the inspection_template_items table.'
example: 665a39c0-48af-31f1-a546-aa4f41372488
nullable: true
section_title:
type: string
description: 'Must not be greater than 255 characters.'
example: p
nullable: true
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -180
nullable: true
recommendations:
type: array
description: 'Must not be greater than 500 characters.'
example:
- q
items:
type: string
evidence_files:
type: array
description: 'Must be a file. Must not be greater than 10240 kilobytes.'
items:
type: string
format: binary
required:
- title
- severity
required:
- finalize_location
- answers
- signatures
parameters:
-
in: path
name: inspection_id
description: 'The ID of the inspection.'
example: architecto
required: true
schema:
type: string
/api/v1/inspection-change-reasons:
get:
summary: ''
operationId: getApiV1InspectionChangeReasons
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Change Reason Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
page:
type: integer
description: 'Must be at least 1.'
example: 16
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
search:
type: string
description: 'Must not be greater than 100 characters.'
example: g
nullable: true
active_only:
type: boolean
description: ''
example: false
nullable: true
sort_by:
type: string
description: ''
example: created_at
enum:
- name
- created_at
nullable: true
sort_order:
type: string
description: ''
example: desc
enum:
- asc
- desc
nullable: true
post:
summary: ''
operationId: postApiV1InspectionChangeReasons
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Change Reason Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
required:
- name
'/api/v1/inspection-change-reasons/{reason_id}':
get:
summary: ''
operationId: getApiV1InspectionChangeReasonsReason_id
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Change Reason Management'
patch:
summary: ''
operationId: patchApiV1InspectionChangeReasonsReason_id
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Change Reason Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
is_active:
type: boolean
description: ''
example: true
nullable: true
delete:
summary: ''
operationId: deleteApiV1InspectionChangeReasonsReason_id
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Change Reason Management'
parameters:
-
in: path
name: reason_id
description: 'The ID of the reason.'
example: architecto
required: true
schema:
type: string
/api/v1/inspections:
get:
summary: ''
operationId: getApiV1Inspections
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must be at least 3 characters.'
example: bngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwtujwvlxjklqppwqbewtnnoqitpxn
nullable: true
status:
type: string
description: ''
example: architecto
enum:
- pending
- pending_manual_assignment
- scheduled
- in_progress
- completed
- cancelled
nullable: true
statuses:
type: array
description: ''
example:
- architecto
items:
type: string
enum:
- pending
- pending_manual_assignment
- scheduled
- in_progress
- completed
- cancelled
zones:
type: array
description: ''
example:
- architecto
items:
type: string
enum:
- centro
- norte
- sur
- este
- oeste
inspection_type_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_types table.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
from_date:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
to_date:
type: string
description: 'Must be a valid date. Must be a date after or equal to from_date.'
example: '2052-03-15'
nullable: true
inspector_id:
type: integer
description: 'The id of an existing record in the users table.'
example: 16
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 67
nullable: true
sort_by:
type: string
description: ''
example: establishment_name
enum:
- establishment_name
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
required:
- statuses
- zones
- inspection_type_ids
post:
summary: ''
operationId: postApiV1Inspections
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
procedure_id:
type: string
description: 'Must not be greater than 255 characters.'
example: b
inspection_type_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_types table.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
inspection_template_ids:
type: array
description: 'Must be a valid UUID.'
example:
- c90237e9-ced5-3af6-88ea-84aeaa148878
items:
type: string
assigned_inspectors:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
inspector_id:
type: integer
description: 'The id of an existing record in the users table.'
example: 16
role:
type: string
description: ''
example: architecto
enum:
- principal
- assistant
required:
- inspector_id
- role
establishment_name:
type: string
description: 'Must not be greater than 255 characters.'
example: i
nullable: true
establishment_phone:
type: string
description: 'Must not be greater than 20 characters.'
example: yvdljnikhwaykcmy
nullable: true
associated_checklist_id:
type: string
description: 'Must not be greater than 255 characters.'
example: u
nullable: true
associated_checklist_name:
type: string
description: 'Must not be greater than 255 characters.'
example: w
nullable: true
checklist_questions_count:
type: integer
description: 'Must be at least 0.'
example: 67
nullable: true
previous_score:
type: number
description: 'Must be between 0 and 100.'
example: 0
nullable: true
estimated_duration_minutes:
type: integer
description: 'Must be at least 1.'
example: 32
nullable: true
required_inspectors_count:
type: integer
description: 'Must be at least 1. Must not be greater than 10.'
example: 10
nullable: true
procedure_submission_status:
type: string
description: 'Must not be greater than 50 characters.'
example: q
nullable: true
status:
type: string
description: ''
example: architecto
enum:
- pending
- pending_manual_assignment
- scheduled
- in_progress
- completed
- cancelled
nullable: true
zone:
type: string
description: ''
example: architecto
enum:
- centro
- norte
- sur
- este
- oeste
nullable: true
occurrences:
type: integer
description: 'Must be at least 1. Must not be greater than 365.'
example: 22
nullable: true
location:
type: object
description: ''
example: null
properties:
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
nullable: true
address:
type: string
description: 'Must not be greater than 500 characters.'
example: m
nullable: true
nullable: true
instructions:
type: string
description: ''
example: architecto
nullable: true
procedure_data:
type: object
description: ''
example: null
properties:
request_id:
type: string
description: 'Must be a valid UUID.'
example: a4855dc5-0acb-33c3-b921-f4291f719ca0
nullable: true
procedure_number:
type: string
description: 'Must not be greater than 50 characters.'
example: z
nullable: true
procedure_status:
type: string
description: 'Must not be greater than 50 characters.'
example: m
nullable: true
regulated_entity:
type: string
description: 'Must not be greater than 255 characters.'
example: i
nullable: true
responsible_person:
type: string
description: 'Must not be greater than 255 characters.'
example: 'y'
nullable: true
responsible_phone:
type: string
description: 'Must not be greater than 20 characters.'
example: vdljnikhwaykcmyu
nullable: true
responsible_email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: hirthe.theo@example.com
nullable: true
form_id:
type: string
description: 'Must be a valid UUID.'
example: deea2dce-ea5d-340f-90ce-c06cddd4c879
nullable: true
form_name:
type: string
description: 'Must not be greater than 255 characters.'
example: r
nullable: true
submission_date:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
form_status:
type: string
description: 'Must not be greater than 50 characters.'
example: s
nullable: true
forms:
type: object
description: ''
example: null
properties: { }
nullable: true
comments:
type: array
description: ''
example:
- architecto
items:
type: string
observations:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
id:
type: string
description: 'This field is required when procedure_data.observations is present. Must be a valid UUID.'
example: a4855dc5-0acb-33c3-b921-f4291f719ca0
comment:
type: string
description: 'This field is required when procedure_data.observations is present.'
example: architecto
author:
type: string
description: 'This field is required when procedure_data.observations is present. Must not be greater than 255 characters.'
example: 'n'
created_at:
type: string
description: 'This field is required when procedure_data.observations is present. Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
checklists:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
id:
type: string
description: 'This field is required when checklists is present. Must be a valid UUID.'
example: 6b72fe4a-5b40-307c-bc24-f79acf9a1bb9
name:
type: string
description: 'This field is required when checklists is present. Must not be greater than 255 characters.'
example: m
items:
type: array
description: 'This field is required when checklists is present.'
example: null
items:
type: object
properties:
id:
type: string
description: 'This field is required when checklists.*.items is present. Must be a valid UUID.'
example: a1a0a47d-e8c3-3cf0-8e6e-c1ff9dca5d1f
description:
type: string
description: 'This field is required when checklists.*.items is present.'
example: 'Eius et animi quos velit et.'
completed:
type: boolean
description: 'This field is required when checklists.*.items is present.'
example: true
authorized_inspectors:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
name:
type: string
description: 'This field is required when authorized_inspectors is present. Must not be greater than 255 characters.'
example: v
dui:
type: string
description: 'This field is required when authorized_inspectors is present. Must not be greater than 20 characters.'
example: dljnikhwaykcmyuw
image:
type: string
description: 'Must be a valid URL. Must not be greater than 500 characters.'
example: p
nullable: true
phone:
type: string
description: 'Must not be greater than 20 characters.'
example: wlvqwrsitcpscqld
nullable: true
role:
type: string
description: ''
example: architecto
enum:
- tramitante
- tramitante_suplente
- otro_tramitante
- adicional
nullable: true
notes:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
note:
type: string
description: 'This field is required when notes is present.'
example: architecto
source:
type: string
description: 'This field is required when notes is present. Must not be greater than 50 characters.'
example: 'n'
enum:
- previous_inspection
- manual
findings:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
title:
type: string
description: 'This field is required when findings is present. Must not be greater than 255 characters.'
example: g
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
severity:
type: string
description: 'This field is required when findings is present.'
example: moderate
enum:
- critical
- moderate
- minor
category:
type: string
description: 'Must not be greater than 100 characters.'
example: v
nullable: true
status:
type: string
description: 'This field is required when findings is present. Must not be greater than 50 characters.'
example: d
resolved_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
photos:
type: array
description: 'Must be a valid URL. Must not be greater than 500 characters.'
example:
- l
items:
type: string
recommendations:
type: array
description: ''
example:
- architecto
items:
type: string
comments:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
comment:
type: string
description: 'This field is required when comments is present.'
example: architecto
inspector_id:
type: integer
description: 'This field is required when comments is present. The id of an existing record in the users table.'
example: 16
non_working_days:
type: array
description: 'Must be a valid date. Must be a valid date in the format Y-m-d.'
example:
- '2026-02-20'
items:
type: string
metadata:
type: object
description: ''
example: null
properties: { }
nullable: true
report_file:
type: object
description: ''
example: null
properties:
status:
type: string
description: 'This field is required when report_file is present. Must not be greater than 50 characters.'
example: 'n'
generated_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
url:
type: string
description: 'Must be a valid URL. Must not be greater than 500 characters.'
example: 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'
nullable: true
file_size:
type: integer
description: 'Must be at least 0.'
example: 52
nullable: true
generation_error:
type: string
description: ''
example: architecto
nullable: true
nullable: true
scheduled_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
required:
- procedure_id
- inspection_type_ids
- inspection_template_ids
'/api/v1/inspections/{id}':
get:
summary: ''
operationId: getApiV1InspectionsId
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
success: false
message: 'Not found'
errors: null
properties:
success:
type: boolean
example: false
message:
type: string
example: 'Not found'
errors:
type: string
example: null
nullable: true
tags:
- 'Inspection Management'
patch:
summary: ''
operationId: patchApiV1InspectionsId
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
procedure_id:
type: string
description: 'Must not be greater than 255 characters.'
example: b
inspection_type_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_types table.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
inspection_template_ids:
type: array
description: 'Must be a valid UUID.'
example:
- c90237e9-ced5-3af6-88ea-84aeaa148878
items:
type: string
assigned_inspectors:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
inspector_id:
type: integer
description: 'The id of an existing record in the users table.'
example: 16
role:
type: string
description: ''
example: architecto
enum:
- principal
- assistant
required:
- inspector_id
- role
establishment_name:
type: string
description: 'Must not be greater than 255 characters.'
example: i
establishment_phone:
type: string
description: 'Must not be greater than 20 characters.'
example: yvdljnikhwaykcmy
associated_checklist_id:
type: string
description: 'Must not be greater than 255 characters.'
example: u
associated_checklist_name:
type: string
description: 'Must not be greater than 255 characters.'
example: w
checklist_questions_count:
type: integer
description: 'Must be at least 0.'
example: 67
previous_score:
type: number
description: 'Must be between 0 and 100.'
example: 0
estimated_duration_minutes:
type: integer
description: 'Must be at least 1.'
example: 32
required_inspectors_count:
type: integer
description: 'Must be at least 1. Must not be greater than 10.'
example: 10
procedure_submission_status:
type: string
description: 'Must not be greater than 50 characters.'
example: q
status:
type: string
description: ''
example: architecto
enum:
- pending
- pending_manual_assignment
- scheduled
- in_progress
- completed
- cancelled
zone:
type: string
description: ''
example: architecto
enum:
- centro
- norte
- sur
- este
- oeste
occurrences:
type: integer
description: 'Must be at least 1. Must not be greater than 365.'
example: 22
nullable: true
location:
type: object
description: ''
example: null
properties:
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
nullable: true
address:
type: string
description: 'Must not be greater than 500 characters.'
example: m
nullable: true
nullable: true
instructions:
type: string
description: ''
example: architecto
nullable: true
procedure_data:
type: object
description: ''
example: null
properties:
request_id:
type: string
description: 'Must be a valid UUID.'
example: a4855dc5-0acb-33c3-b921-f4291f719ca0
nullable: true
procedure_number:
type: string
description: 'Must not be greater than 50 characters.'
example: z
nullable: true
procedure_status:
type: string
description: 'Must not be greater than 50 characters.'
example: m
nullable: true
regulated_entity:
type: string
description: 'Must not be greater than 255 characters.'
example: i
nullable: true
responsible_person:
type: string
description: 'Must not be greater than 255 characters.'
example: 'y'
nullable: true
responsible_phone:
type: string
description: 'Must not be greater than 20 characters.'
example: vdljnikhwaykcmyu
nullable: true
responsible_email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: hirthe.theo@example.com
nullable: true
form_id:
type: string
description: 'Must be a valid UUID.'
example: deea2dce-ea5d-340f-90ce-c06cddd4c879
nullable: true
form_name:
type: string
description: 'Must not be greater than 255 characters.'
example: r
nullable: true
submission_date:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
form_status:
type: string
description: 'Must not be greater than 50 characters.'
example: s
nullable: true
forms:
type: object
description: ''
example: null
properties: { }
nullable: true
comments:
type: array
description: ''
example:
- architecto
items:
type: string
observations:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
id:
type: string
description: 'This field is required when procedure_data.observations is present. Must be a valid UUID.'
example: a4855dc5-0acb-33c3-b921-f4291f719ca0
comment:
type: string
description: 'This field is required when procedure_data.observations is present.'
example: architecto
author:
type: string
description: 'This field is required when procedure_data.observations is present. Must not be greater than 255 characters.'
example: 'n'
created_at:
type: string
description: 'This field is required when procedure_data.observations is present. Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
checklists:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
id:
type: string
description: 'This field is required when checklists is present. Must be a valid UUID.'
example: 6b72fe4a-5b40-307c-bc24-f79acf9a1bb9
name:
type: string
description: 'This field is required when checklists is present. Must not be greater than 255 characters.'
example: m
items:
type: array
description: 'This field is required when checklists is present.'
example: null
items:
type: object
properties:
id:
type: string
description: 'This field is required when checklists.*.items is present. Must be a valid UUID.'
example: a1a0a47d-e8c3-3cf0-8e6e-c1ff9dca5d1f
description:
type: string
description: 'This field is required when checklists.*.items is present.'
example: 'Eius et animi quos velit et.'
completed:
type: boolean
description: 'This field is required when checklists.*.items is present.'
example: false
authorized_inspectors:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
name:
type: string
description: 'This field is required when authorized_inspectors is present. Must not be greater than 255 characters.'
example: v
dui:
type: string
description: 'This field is required when authorized_inspectors is present. Must not be greater than 20 characters.'
example: dljnikhwaykcmyuw
image:
type: string
description: 'Must be a valid URL. Must not be greater than 500 characters.'
example: p
nullable: true
phone:
type: string
description: 'Must not be greater than 20 characters.'
example: wlvqwrsitcpscqld
nullable: true
role:
type: string
description: ''
example: architecto
enum:
- tramitante
- tramitante_suplente
- otro_tramitante
- adicional
nullable: true
notes:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
note:
type: string
description: 'This field is required when notes is present.'
example: architecto
source:
type: string
description: 'This field is required when notes is present. Must not be greater than 50 characters.'
example: 'n'
enum:
- previous_inspection
- manual
findings:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
title:
type: string
description: 'This field is required when findings is present. Must not be greater than 255 characters.'
example: g
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
severity:
type: string
description: 'This field is required when findings is present.'
example: minor
enum:
- critical
- moderate
- minor
category:
type: string
description: 'Must not be greater than 100 characters.'
example: v
nullable: true
status:
type: string
description: 'This field is required when findings is present. Must not be greater than 50 characters.'
example: d
resolved_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
photos:
type: array
description: 'Must be a valid URL. Must not be greater than 500 characters.'
example:
- l
items:
type: string
recommendations:
type: array
description: ''
example:
- architecto
items:
type: string
comments:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
comment:
type: string
description: 'This field is required when comments is present.'
example: architecto
inspector_id:
type: integer
description: 'This field is required when comments is present. The id of an existing record in the users table.'
example: 16
non_working_days:
type: array
description: 'Must be a valid date. Must be a valid date in the format Y-m-d.'
example:
- '2026-02-20'
items:
type: string
metadata:
type: object
description: ''
example: null
properties: { }
nullable: true
report_file:
type: object
description: ''
example: null
properties:
status:
type: string
description: 'This field is required when report_file is present. Must not be greater than 50 characters.'
example: 'n'
generated_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
url:
type: string
description: 'Must be a valid URL. Must not be greater than 500 characters.'
example: 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'
nullable: true
file_size:
type: integer
description: 'Must be at least 0.'
example: 52
nullable: true
generation_error:
type: string
description: ''
example: architecto
nullable: true
nullable: true
scheduled_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
started_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
completed_at:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
required:
- inspection_type_ids
- inspection_template_ids
delete:
summary: ''
operationId: deleteApiV1InspectionsId
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
parameters:
-
in: path
name: id
description: 'The ID of the inspection.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspections/{inspection_id}/reschedule':
post:
summary: ''
operationId: postApiV1InspectionsInspection_idReschedule
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
inspector_ids:
type: array
description: 'The id of an existing record in the users table.'
example:
- 16
items:
type: integer
comment:
type: string
description: ''
example: architecto
nullable: true
parameters:
-
in: path
name: inspection_id
description: 'The ID of the inspection.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspections/{inspection_id}/cancel':
post:
summary: ''
operationId: postApiV1InspectionsInspection_idCancel
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
reason_id:
type: string
description: 'Must be a valid UUID. The id of an existing record in the inspection_change_reasons table.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
comment:
type: string
description: ''
example: architecto
nullable: true
source:
type: string
description: ''
example: app
enum:
- app
- backoffice
required:
- reason_id
- source
parameters:
-
in: path
name: inspection_id
description: 'The ID of the inspection.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspections/{inspection_id}/reschedule-requests':
post:
summary: ''
operationId: postApiV1InspectionsInspection_idRescheduleRequests
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: ''
example: reschedule
enum:
- reschedule
- cancellation
reason_id:
type: string
description: 'Must be a valid UUID. The id of an existing record in the inspection_change_reasons table.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
comment:
type: string
description: 'Must not be greater than 1000 characters.'
example: g
nullable: true
required:
- type
- reason_id
parameters:
-
in: path
name: inspection_id
description: 'The ID of the inspection.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspections/reschedule-requests/{rescheduleRequest_id}/process':
post:
summary: ''
operationId: postApiV1InspectionsRescheduleRequestsRescheduleRequest_idProcess
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: ''
example: pending_approval
enum:
- pending_approval
- approved
- rejected
resolution_comment:
type: string
description: 'Must not be greater than 1000 characters.'
example: b
nullable: true
required:
- status
parameters:
-
in: path
name: rescheduleRequest_id
description: 'The ID of the rescheduleRequest.'
example: architecto
required: true
schema:
type: string
/api/v1/inspection-skills:
get:
summary: ''
operationId: getApiV1InspectionSkills
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Skill Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
page:
type: integer
description: 'Must be at least 1.'
example: 16
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
search:
type: string
description: 'Must not be greater than 100 characters.'
example: g
nullable: true
active_only:
type: boolean
description: ''
example: false
nullable: true
sort_by:
type: string
description: ''
example: inspectors_count
enum:
- name
- created_at
- inspectors_count
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
post:
summary: ''
operationId: postApiV1InspectionSkills
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Skill Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
user_ids:
type: array
description: 'The id of an existing record in the users table.'
example: null
items:
type: string
required:
- name
'/api/v1/inspection-skills/{skill_id}':
get:
summary: ''
operationId: getApiV1InspectionSkillsSkill_id
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Skill Management'
patch:
summary: ''
operationId: patchApiV1InspectionSkillsSkill_id
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Skill Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
required:
- name
delete:
summary: ''
operationId: deleteApiV1InspectionSkillsSkill_id
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Skill Management'
parameters:
-
in: path
name: skill_id
description: 'The ID of the skill.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspection-skills/{skill_id}/users':
get:
summary: ''
operationId: getApiV1InspectionSkillsSkill_idUsers
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Skill Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
page:
type: integer
description: 'Must be at least 1.'
example: 16
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
search:
type: string
description: 'Must not be greater than 255 characters.'
example: g
nullable: true
parameters:
-
in: path
name: skill_id
description: 'The ID of the skill.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspection-skills/{skill_id}/toggle':
patch:
summary: ''
operationId: patchApiV1InspectionSkillsSkill_idToggle
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Skill Management'
parameters:
-
in: path
name: skill_id
description: 'The ID of the skill.'
example: architecto
required: true
schema:
type: string
/api/v1/inspection-templates:
get:
summary: ''
operationId: getApiV1InspectionTemplates
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Template Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
status:
type: object
description: ''
example: null
properties: { }
nullable: true
from_date:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:18'
nullable: true
to_date:
type: string
description: 'Must be a valid date. Must be a date after or equal to from_date.'
example: '2052-03-15'
nullable: true
sort_by:
type: string
description: ''
example: created_at
enum:
- name
- created_at
- estimated_duration_minutes
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 67
nullable: true
post:
summary: ''
operationId: postApiV1InspectionTemplates
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Template Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
approval_threshold:
type: integer
description: 'Must be at least 0. Must not be greater than 100.'
example: 1
nullable: true
inspection_type_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_types table.'
example:
- 5707ca55-f609-3528-be8b-1baeaee1567e
items:
type: string
estimated_duration_minutes:
type: integer
description: 'Must be at least 1. Must not be greater than 1440.'
example: 19
nullable: true
required_skill_ids:
type: array
description: ''
example:
- architecto
items:
type: string
associated_procedure_ids:
type: array
description: 'Must not be greater than 255 characters.'
example:
- 'n'
items:
type: string
allowed_hours:
type: object
description: ''
example: null
properties: { }
nullable: true
member_level_config:
type: object
description: ''
example: null
properties: { }
nullable: true
steps:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
position:
type: integer
description: 'Must be at least 0.'
example: 60
sections:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
position:
type: integer
description: 'Must be at least 0.'
example: 60
items:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
type:
type: string
description: ''
example: compliance
enum:
- compliance
- measurement
- text
- file
label:
type: string
description: 'Must not be greater than 500 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
is_mandatory:
type: boolean
description: ''
example: true
nullable: true
requires_evidence:
type: boolean
description: ''
example: true
nullable: true
allows_comments:
type: boolean
description: ''
example: true
nullable: true
criticality:
type: string
description: ''
example: moderate
enum:
- none
- mild
- moderate
- critical
nullable: true
weight:
type: number
description: 'Must be at least 0.'
example: 60
nullable: true
position:
type: integer
description: 'Must be at least 0.'
example: 42
metadata:
type: object
description: ''
example: null
properties: { }
nullable: true
required:
- type
- label
- position
required:
- title
- position
- items
required:
- name
- position
- sections
required:
- name
- inspection_type_ids
- steps
'/api/v1/inspection-templates/{group_uuid}':
get:
summary: ''
operationId: getApiV1InspectionTemplatesGroup_uuid
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Template Management'
parameters:
-
in: path
name: group_uuid
description: ''
example: BcECdBDA-CdED-bFEA-CbCE-BcCdeBfbbebc
required: true
schema:
type: string
'/api/v1/inspection-templates/{group_uuid}/versions':
get:
summary: ''
operationId: getApiV1InspectionTemplatesGroup_uuidVersions
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Template Management'
parameters:
-
in: path
name: group_uuid
description: ''
example: BcECdBDA-CdED-bFEA-CbCE-BcCdeBfbbebc
required: true
schema:
type: string
'/api/v1/inspection-templates/{group_uuid}/versions/{inspectionTemplate_id}':
get:
summary: ''
operationId: getApiV1InspectionTemplatesGroup_uuidVersionsInspectionTemplate_id
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
success: false
message: 'Not found'
errors: null
properties:
success:
type: boolean
example: false
message:
type: string
example: 'Not found'
errors:
type: string
example: null
nullable: true
tags:
- 'Inspection Template Management'
patch:
summary: ''
operationId: patchApiV1InspectionTemplatesGroup_uuidVersionsInspectionTemplate_id
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Template Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
approval_threshold:
type: integer
description: 'Must be at least 0. Must not be greater than 100.'
example: 1
nullable: true
inspection_type_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_types table.'
example:
- 5707ca55-f609-3528-be8b-1baeaee1567e
items:
type: string
estimated_duration_minutes:
type: integer
description: 'Must be at least 1. Must not be greater than 1440.'
example: 19
nullable: true
required_skill_ids:
type: array
description: ''
example:
- architecto
items:
type: string
associated_procedure_ids:
type: array
description: 'Must not be greater than 255 characters.'
example:
- 'n'
items:
type: string
allowed_hours:
type: object
description: ''
example: null
properties: { }
nullable: true
member_level_config:
type: object
description: ''
example: null
properties: { }
nullable: true
steps:
type: array
description: ''
example: null
items:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: g
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
position:
type: integer
description: 'Must be at least 0.'
example: 60
sections:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
position:
type: integer
description: 'Must be at least 0.'
example: 60
items:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
type:
type: string
description: ''
example: compliance
enum:
- compliance
- measurement
- text
- file
label:
type: string
description: 'Must not be greater than 500 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
is_mandatory:
type: boolean
description: ''
example: true
nullable: true
requires_evidence:
type: boolean
description: ''
example: true
nullable: true
allows_comments:
type: boolean
description: ''
example: false
nullable: true
criticality:
type: string
description: ''
example: mild
enum:
- none
- mild
- moderate
- critical
nullable: true
weight:
type: number
description: 'Must be at least 0.'
example: 60
nullable: true
position:
type: integer
description: 'Must be at least 0.'
example: 42
metadata:
type: object
description: ''
example: null
properties: { }
nullable: true
required:
- type
- label
- position
required:
- title
- position
- items
required:
- name
- position
- sections
required:
- inspection_type_ids
parameters:
-
in: path
name: group_uuid
description: ''
example: BcECdBDA-CdED-bFEA-CbCE-BcCdeBfbbebc
required: true
schema:
type: string
-
in: path
name: inspectionTemplate_id
description: 'The ID of the inspectionTemplate.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspection-templates/{group_uuid}/versions/{inspectionTemplate_id}/activate':
post:
summary: ''
operationId: postApiV1InspectionTemplatesGroup_uuidVersionsInspectionTemplate_idActivate
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Template Management'
parameters:
-
in: path
name: group_uuid
description: ''
example: BcECdBDA-CdED-bFEA-CbCE-BcCdeBfbbebc
required: true
schema:
type: string
-
in: path
name: inspectionTemplate_id
description: 'The ID of the inspectionTemplate.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspection-templates/{group_uuid}/versions/{inspectionTemplate_id}/clone':
post:
summary: ''
operationId: postApiV1InspectionTemplatesGroup_uuidVersionsInspectionTemplate_idClone
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Template Management'
parameters:
-
in: path
name: group_uuid
description: ''
example: BcECdBDA-CdED-bFEA-CbCE-BcCdeBfbbebc
required: true
schema:
type: string
-
in: path
name: inspectionTemplate_id
description: 'The ID of the inspectionTemplate.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspection-templates/{group_uuid}/versions/{inspectionTemplate_id}/deactivate':
post:
summary: ''
operationId: postApiV1InspectionTemplatesGroup_uuidVersionsInspectionTemplate_idDeactivate
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Template Management'
parameters:
-
in: path
name: group_uuid
description: ''
example: BcECdBDA-CdED-bFEA-CbCE-BcCdeBfbbebc
required: true
schema:
type: string
-
in: path
name: inspectionTemplate_id
description: 'The ID of the inspectionTemplate.'
example: architecto
required: true
schema:
type: string
/api/v1/inspection-types:
get:
summary: ''
operationId: getApiV1InspectionTypes
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Inspection Type Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: true
updated_from:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
updated_to:
type: string
description: 'Must be a valid date. Must be a date after or equal to updated_from.'
example: '2052-03-15'
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 22
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 7
nullable: true
sort_by:
type: string
description: ''
example: name
enum:
- name
- description
nullable: true
sort_order:
type: string
description: ''
example: desc
enum:
- asc
- desc
nullable: true
post:
summary: ''
operationId: postApiV1InspectionTypes
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Type Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
code:
type: string
description: 'Must not be greater than 50 characters.'
example: 'n'
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Animi quos velit et fugiat.'
nullable: true
estimated_duration_minutes:
type: integer
description: 'Must be at least 1. Must not be greater than 1440.'
example: 1
nullable: true
available_from_time:
type: string
description: 'Must be a valid date in the format H:i:s.'
example: '19:44:17'
nullable: true
available_to_time:
type: string
description: 'Must be a valid date in the format H:i:s. Must be a date after available_from_time.'
example: '2052-03-15'
nullable: true
min_business_days:
type: integer
description: 'Must be at least 0.'
example: 39
nullable: true
max_business_days:
type: string
description: 'Must be at least 0. Must be a date after or equal to min_business_days.'
example: '2052-03-15'
nullable: true
required_skills:
type: array
description: ''
example:
- architecto
items:
type: string
rules:
type: object
description: ''
example: null
properties: { }
nullable: true
frequency:
type: object
description: ''
example: null
properties:
interval:
type: integer
description: 'This field is required when frequency is present. Must be at least 1.'
example: 22
unit:
type: string
description: 'This field is required when frequency is present.'
example: architecto
enum:
- days
- weeks
- months
- years
day_of_week:
type: string
description: ''
example: architecto
enum:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
nullable: true
repeat_mode:
type: string
description: ''
example: architecto
enum:
- date
- day
nullable: true
day_of_month:
type: integer
description: 'Must be at least 1. Must not be greater than 31.'
example: 22
nullable: true
week:
type: string
description: ''
example: architecto
enum:
- first
- second
- third
- fourth
- fifth
- penultimate
- last
nullable: true
month:
type: string
description: ''
example: architecto
nullable: true
days_of_month:
type: array
description: 'Must be at least 1. Must not be greater than 31.'
example:
- 22
items:
type: integer
nullable: true
nullable: true
allow_reschedule:
type: boolean
description: ''
example: true
nullable: true
allow_direct_cancel:
type: boolean
description: ''
example: false
nullable: true
max_reschedules:
type: integer
description: 'Must be at least 0.'
example: 84
nullable: true
reschedule_time_limit:
type: string
description: 'Must be a valid date in the format H:i:s.'
example: '19:44:17'
nullable: true
reschedule_day_limit:
type: integer
description: 'Must be at least 0.'
example: 12
nullable: true
auto_cancel_on_max_reschedules:
type: boolean
description: ''
example: false
nullable: true
negative_result_on_app_cancel:
type: boolean
description: ''
example: true
nullable: true
allow_inspector_reschedule_request:
type: boolean
description: ''
example: false
nullable: true
is_active:
type: boolean
description: ''
example: true
nullable: true
required:
- name
- code
'/api/v1/inspection-types/{inspectionType_id}':
get:
summary: ''
operationId: getApiV1InspectionTypesInspectionType_id
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
success: false
message: 'Not found'
errors: null
properties:
success:
type: boolean
example: false
message:
type: string
example: 'Not found'
errors:
type: string
example: null
nullable: true
tags:
- 'Inspection Type Management'
patch:
summary: ''
operationId: patchApiV1InspectionTypesInspectionType_id
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Type Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
code:
type: string
description: 'Must not be greater than 50 characters.'
example: 'n'
description:
type: string
description: 'Must not be greater than 1000 characters.'
example: 'Animi quos velit et fugiat.'
nullable: true
estimated_duration_minutes:
type: integer
description: 'Must be at least 1. Must not be greater than 1440.'
example: 1
nullable: true
available_from_time:
type: string
description: 'Must be a valid date in the format H:i:s.'
example: '19:44:17'
nullable: true
available_to_time:
type: string
description: 'Must be a valid date in the format H:i:s. Must be a date after available_from_time.'
example: '2052-03-15'
nullable: true
min_business_days:
type: integer
description: 'Must be at least 0.'
example: 39
nullable: true
max_business_days:
type: string
description: 'Must be at least 0. Must be a date after or equal to min_business_days.'
example: '2052-03-15'
nullable: true
required_skills:
type: array
description: ''
example:
- architecto
items:
type: string
rules:
type: object
description: ''
example: null
properties: { }
nullable: true
frequency:
type: object
description: ''
example: null
properties:
interval:
type: integer
description: 'This field is required when frequency is present. Must be at least 1.'
example: 22
unit:
type: string
description: 'This field is required when frequency is present.'
example: architecto
enum:
- days
- weeks
- months
- years
day_of_week:
type: string
description: ''
example: architecto
enum:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
nullable: true
repeat_mode:
type: string
description: ''
example: architecto
enum:
- date
- day
nullable: true
day_of_month:
type: integer
description: 'Must be at least 1. Must not be greater than 31.'
example: 22
nullable: true
week:
type: string
description: ''
example: architecto
enum:
- first
- second
- third
- fourth
- fifth
- penultimate
- last
nullable: true
month:
type: string
description: ''
example: architecto
nullable: true
days_of_month:
type: array
description: 'Must be at least 1. Must not be greater than 31.'
example:
- 22
items:
type: integer
nullable: true
nullable: true
allow_reschedule:
type: boolean
description: ''
example: false
nullable: true
allow_direct_cancel:
type: boolean
description: ''
example: true
nullable: true
max_reschedules:
type: integer
description: 'Must be at least 0.'
example: 84
nullable: true
reschedule_time_limit:
type: string
description: 'Must be a valid date in the format H:i:s.'
example: '19:44:17'
nullable: true
reschedule_day_limit:
type: integer
description: 'Must be at least 0.'
example: 12
nullable: true
auto_cancel_on_max_reschedules:
type: boolean
description: ''
example: false
nullable: true
negative_result_on_app_cancel:
type: boolean
description: ''
example: true
nullable: true
allow_inspector_reschedule_request:
type: boolean
description: ''
example: false
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: true
parameters:
-
in: path
name: inspectionType_id
description: 'The ID of the inspectionType.'
example: architecto
required: true
schema:
type: string
'/api/v1/inspection-types/{inspectionType_id}/toggle':
patch:
summary: ''
operationId: patchApiV1InspectionTypesInspectionType_idToggle
description: ''
parameters: []
responses: { }
tags:
- 'Inspection Type Management'
parameters:
-
in: path
name: inspectionType_id
description: 'The ID of the inspectionType.'
example: architecto
required: true
schema:
type: string
/api/v1/logs:
get:
summary: ''
operationId: getApiV1Logs
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Log Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: ''
example: architecto
nullable: true
entity:
type: array
description: ''
example:
- architecto
items:
type: string
enum:
- acl
- auth
- user
- role
- permission
- resource
- scope
- inspection
- reschedule_request
- group
- inspection_template
entity_id:
type: string
description: ''
example: architecto
nullable: true
action:
type: string
description: ''
example: permission_updated
enum:
- get
- post
- put
- patch
- delete
- user_created
- user_updated
- user_status_toggled
- user_unlocked
- role_created
- role_updated
- role_assigned
- role_unassigned
- role_status_toggled
- role_permissions_updated
- permission_created
- permission_updated
- permission_assigned
- permission_unassigned
- reschedule_request_created
- reschedule_request_approved
- reschedule_request_rejected
- inspection_rescheduled
- inspection_cancelled_direct
- inspection_started
- inspection_finalized
- inspection_scheduled
- auto_scheduling_failed
- group_created
- group_updated
- group_assigned
- group_unassigned
- group_deleted
- inspection_template_created
- inspection_template_updated
- inspection_template_activated
- inspection_template_activated_to
- inspection_template_deactivated
- inspection_template_cloned
- inspection_template_cloned_to
nullable: true
from:
type: string
description: 'Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
to:
type: string
description: 'Must be a valid date. Must be a date after or equal to from.'
example: '2052-03-15'
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
sort:
type: string
description: ''
example: created_at
enum:
- created_at
- entity
- action
nullable: true
sort_direction:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
source:
type: string
description: ''
example: advanced
enum:
- database
- advanced
nullable: true
/api/v1/measurement-units:
get:
summary: ''
operationId: getApiV1MeasurementUnits
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Measurement Unit Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
page:
type: integer
description: 'Must be at least 1.'
example: 16
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 22
nullable: true
search:
type: string
description: 'Must not be greater than 100 characters.'
example: g
nullable: true
active_only:
type: boolean
description: ''
example: false
nullable: true
magnitude:
type: string
description: 'Must not be greater than 50 characters.'
example: z
nullable: true
origin:
type: string
description: ''
example: architecto
enum:
- system
- user
nullable: true
sort_by:
type: string
description: ''
example: created_at
enum:
- name
- symbol
- magnitude
- created_at
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
post:
summary: ''
operationId: postApiV1MeasurementUnits
description: ''
parameters: []
responses: { }
tags:
- 'Measurement Unit Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
symbol:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
magnitude:
type: string
description: 'Must not be greater than 50 characters.'
example: 'y'
required:
- name
- symbol
- magnitude
'/api/v1/measurement-units/{unit_id}':
get:
summary: ''
operationId: getApiV1MeasurementUnitsUnit_id
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Measurement Unit Management'
patch:
summary: ''
operationId: patchApiV1MeasurementUnitsUnit_id
description: ''
parameters: []
responses: { }
tags:
- 'Measurement Unit Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
symbol:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
magnitude:
type: string
description: 'Must not be greater than 50 characters.'
example: 'y'
is_active:
type: boolean
description: ''
example: true
nullable: true
parameters:
-
in: path
name: unit_id
description: 'The ID of the unit.'
example: architecto
required: true
schema:
type: string
/api/v1/notifications:
get:
summary: ''
operationId: getApiV1Notifications
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'Notification Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
category:
type: string
description: ''
example: assignments
enum:
- assignments
- general
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 1
'/api/v1/notifications/{notification_id}/read':
post:
summary: ''
operationId: postApiV1NotificationsNotification_idRead
description: ''
parameters: []
responses: { }
tags:
- 'Notification Management'
parameters:
-
in: path
name: notification_id
description: 'The ID of the notification.'
example: architecto
required: true
schema:
type: string
/api/v1/notifications/read-all:
post:
summary: ''
operationId: postApiV1NotificationsReadAll
description: ''
parameters: []
responses: { }
tags:
- 'Notification Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
category:
type: string
description: ''
example: general
enum:
- assignments
- general
nullable: true
/api/v1/users/me:
get:
summary: ''
operationId: getApiV1UsersMe
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'User Management'
/api/v1/users/devices:
post:
summary: ''
operationId: postApiV1UsersDevices
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
device_token:
type: string
description: 'Must not be greater than 500 characters.'
example: b
device_type:
type: string
description: ''
example: ios
enum:
- ios
- android
- web
nullable: true
device_name:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
nullable: true
required:
- device_token
'/api/v1/users/devices/{deviceId}':
delete:
summary: 'Delete a specific device belonging to the authenticated user.'
operationId: deleteASpecificDeviceBelongingToTheAuthenticatedUser
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
parameters:
-
in: path
name: deviceId
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/users/sync:
get:
summary: ''
operationId: getApiV1UsersSync
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'User Management'
/api/v1/users:
get:
summary: ''
operationId: getApiV1Users
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'User Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: 'Must not be greater than 255 characters.'
example: b
nullable: true
role:
type: array
description: ''
example:
- architecto
items:
type: string
work_zone:
type: array
description: ''
example:
- architecto
items:
type: string
enum:
- centro
- norte
- sur
- este
- oeste
is_active:
type: boolean
description: ''
example: true
nullable: true
tenure:
type: array
description: ''
example:
- architecto
items:
type: string
enum:
- junior
- mid
- senior
- lead
group_id:
type: array
description: 'Must be a valid UUID. The id of an existing record in the groups table.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
sort_by:
type: string
description: ''
example: email
enum:
- firstName
- email
- username
nullable: true
sort_order:
type: string
description: ''
example: asc
enum:
- asc
- desc
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 66
nullable: true
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 100.'
example: 17
nullable: true
post:
summary: ''
operationId: postApiV1Users
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
example: gbailey@example.net
first_name:
type: string
description: 'Must not be greater than 255 characters.'
example: m
last_name:
type: string
description: 'Must not be greater than 255 characters.'
example: i
dui_number:
type: string
description: 'Must not be greater than 20 characters.'
example: yvdljnikhwaykcmy
nullable: true
username:
type: string
description: 'Must not be greater than 255 characters.'
example: u
nullable: true
password:
type: string
description: ''
example: '|]|{+-'
nullable: true
enabled:
type: boolean
description: ''
example: false
nullable: true
email_verified:
type: boolean
description: ''
example: true
nullable: true
cellphone:
type: string
description: 'Must not be greater than 20 characters.'
example: vdljnikhwaykcmyu
nullable: true
work_zone:
type: string
description: ''
example: architecto
enum:
- centro
- norte
- sur
- este
- oeste
nullable: true
tenure:
type: string
description: ''
example: architecto
enum:
- junior
- mid
- senior
- lead
nullable: true
is_active:
type: boolean
description: ''
example: true
nullable: true
role_name:
type: string
description: ''
example: architecto
nullable: true
skill_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_skills table.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
group_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the groups table.'
example:
- c90237e9-ced5-3af6-88ea-84aeaa148878
items:
type: string
required:
- email
- first_name
- last_name
- skill_ids
- group_ids
'/api/v1/users/{id}':
get:
summary: ''
operationId: getApiV1UsersId
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'User Management'
patch:
summary: ''
operationId: patchApiV1UsersId
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
example: gbailey@example.net
nullable: true
first_name:
type: string
description: 'Must not be greater than 255 characters.'
example: m
nullable: true
last_name:
type: string
description: 'Must not be greater than 255 characters.'
example: i
nullable: true
dui_number:
type: string
description: 'Must not be greater than 20 characters.'
example: yvdljnikhwaykcmy
nullable: true
username:
type: string
description: 'Must not be greater than 255 characters.'
example: u
nullable: true
password:
type: string
description: ''
example: '|]|{+-'
nullable: true
enabled:
type: boolean
description: ''
example: true
nullable: true
email_verified:
type: boolean
description: ''
example: true
nullable: true
cellphone:
type: string
description: 'Must not be greater than 20 characters.'
example: vdljnikhwaykcmyu
nullable: true
work_zone:
type: string
description: ''
example: architecto
enum:
- centro
- norte
- sur
- este
- oeste
nullable: true
tenure:
type: string
description: ''
example: architecto
enum:
- junior
- mid
- senior
- lead
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: true
role_name:
type: string
description: ''
example: architecto
nullable: true
skill_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the inspection_skills table.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
group_ids:
type: array
description: 'Must be a valid UUID. The id of an existing record in the groups table.'
example:
- c90237e9-ced5-3af6-88ea-84aeaa148878
items:
type: string
required:
- skill_ids
- group_ids
parameters:
-
in: path
name: id
description: 'The ID of the user.'
example: architecto
required: true
schema:
type: string
'/api/v1/users/{user}/roles':
get:
summary: ''
operationId: getApiV1UsersUserRoles
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'User Management'
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
'/api/v1/users/{user_id}/inspection-dates':
get:
summary: ''
operationId: getApiV1UsersUser_idInspectionDates
description: ''
parameters: []
responses:
500:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Server Error'
properties:
message:
type: string
example: 'Server Error'
tags:
- 'User Management'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
description: 'This field is required when end_date is present. Must be a valid date.'
example: '2026-02-20T19:44:17'
nullable: true
end_date:
type: string
description: 'This field is required when start_date is present. Must be a valid date. Must be a date after or equal to start_date.'
example: '2052-03-15'
nullable: true
parameters:
-
in: path
name: user_id
description: 'The ID of the user.'
example: 16
required: true
schema:
type: integer
'/api/v1/users/{user_id}/inspection-skills/{inspectionSkill_id}':
put:
summary: ''
operationId: putApiV1UsersUser_idInspectionSkillsInspectionSkill_id
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
delete:
summary: ''
operationId: deleteApiV1UsersUser_idInspectionSkillsInspectionSkill_id
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
parameters:
-
in: path
name: user_id
description: 'The ID of the user.'
example: 16
required: true
schema:
type: integer
-
in: path
name: inspectionSkill_id
description: 'The ID of the inspectionSkill.'
example: architecto
required: true
schema:
type: string
'/api/v1/users/{user_oauth_client_id}/groups/{group_id}':
put:
summary: ''
operationId: putApiV1UsersUser_oauth_client_idGroupsGroup_id
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
delete:
summary: ''
operationId: deleteApiV1UsersUser_oauth_client_idGroupsGroup_id
description: ''
parameters: []
responses: { }
tags:
- 'User Management'
parameters:
-
in: path
name: user_oauth_client_id
description: 'The ID of the user oauth client.'
example: architecto
required: true
schema:
type: string
-
in: path
name: group_id
description: 'The ID of the group.'
example: architecto
required: true
schema:
type: string