Files
NuklearRabbit 81e3fd63bd
MobilityOps acceptance / backend (push) Failing after 19s
MobilityOps acceptance / frontend (push) Successful in 25s
MobilityOps acceptance / e2e (push) Skipped
M54: harden operations and demo resilience
2026-08-24 03:31:03 +02:00

4826 lines
120 KiB
YAML

openapi: 3.1.0
info:
title: Fleet Ops API
description: Generated contract for Fleet Ops. The visible product name is Fleet
Ops; MobilityOps remains the technical repository and service identifier.
version: 0.1.0
servers:
- url: http://localhost:8128
paths:
/health:
get:
summary: Health
operationId: health_health_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties:
type: string
type: object
title: Response Health Health Get
/health/live:
get:
summary: Liveness
description: Process liveness only; external dependencies deliberately do not
affect it.
operationId: liveness_health_live_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties:
type: string
type: object
title: Response Liveness Health Live Get
/health/ready:
get:
summary: Readiness
description: 'Traffic readiness: the API is useful only while its canonical
database responds.'
operationId: readiness_health_ready_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/api/v1/system/status:
get:
summary: System Status
operationId: system_status_api_v1_system_status_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response System Status Api V1 System Status Get
/api/v1/demo/manifest:
get:
tags:
- demo
summary: Demo Manifest
operationId: demo_manifest_api_v1_demo_manifest_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DemoManifestOut'
/api/v1/demo/login:
post:
tags:
- demo
summary: Demo Login
operationId: demo_login_api_v1_demo_login_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DemoLoginRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CurrentUser'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/demo/session:
get:
tags:
- demo
summary: Get Session
operationId: get_session_api_v1_demo_session_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CurrentUser'
/api/v1/demo/logout:
post:
tags:
- demo
summary: Demo Logout
operationId: demo_logout_api_v1_demo_logout_post
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Demo Logout Api V1 Demo Logout Post
/api/v1/demo/reset:
post:
tags:
- demo
summary: Demo Reset
operationId: demo_reset_api_v1_demo_reset_post
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Demo Reset Api V1 Demo Reset Post
/api/v1/auth/oidc/status:
get:
tags:
- auth
summary: Oidc Status
operationId: oidc_status_api_v1_auth_oidc_status_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/OidcStatusOut'
/api/v1/auth/oidc/login:
get:
tags:
- auth
summary: Oidc Login
operationId: oidc_login_api_v1_auth_oidc_login_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/api/v1/auth/oidc/callback:
get:
tags:
- auth
summary: Oidc Callback
operationId: oidc_callback_api_v1_auth_oidc_callback_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/api/v1/auth/login:
post:
tags:
- auth
summary: Password Login
operationId: password_login_api_v1_auth_login_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PasswordLoginRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CurrentUser'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/auth/session:
get:
tags:
- auth
summary: Get Session
operationId: get_session_api_v1_auth_session_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CurrentUser'
/api/v1/auth/logout:
post:
tags:
- auth
summary: Logout
operationId: logout_api_v1_auth_logout_post
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Logout Api V1 Auth Logout Post
/api/v1/dashboard:
get:
tags:
- dashboard
summary: Get Dashboard
operationId: get_dashboard_api_v1_dashboard_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DashboardOut'
/api/v1/vehicles:
get:
tags:
- vehicles
summary: List Vehicles
operationId: list_vehicles_api_v1_vehicles_get
parameters:
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
- name: attention_only
in: query
required: false
schema:
type: boolean
default: false
title: Attention Only
- name: location
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
maxLength: 120
- type: 'null'
title: Location
- name: query
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
title: Query
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
title: Page
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 25
minimum: 1
default: 25
title: Page Size
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/VehicleOut'
- $ref: '#/components/schemas/VehiclePageOut'
title: Response List Vehicles Api V1 Vehicles Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/vehicles/{public_ref}:
get:
tags:
- vehicles
summary: Get Vehicle
operationId: get_vehicle_api_v1_vehicles__public_ref__get
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleDetailOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/vehicles/{public_ref}/maintenance:
post:
tags:
- vehicles
summary: Create Maintenance Record
operationId: create_maintenance_record_api_v1_vehicles__public_ref__maintenance_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMaintenanceRequest'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MaintenanceOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/vehicles/{public_ref}/release:
post:
tags:
- vehicles
summary: Release Vehicle
operationId: release_vehicle_api_v1_vehicles__public_ref__release_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseVehicleRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings:
get:
tags:
- bookings
summary: List Bookings
operationId: list_bookings_api_v1_bookings_get
parameters:
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
- name: vehicle_ref
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Vehicle Ref
- name: query
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
title: Query
- name: starts_from
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Starts From
- name: starts_to
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Starts To
- name: location
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
maxLength: 120
- type: 'null'
title: Location
- name: sort
in: query
required: false
schema:
enum:
- operational
- starts_asc
- starts_desc
type: string
default: operational
title: Sort
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
title: Page
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 25
minimum: 1
default: 25
title: Page Size
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/BookingOut'
- $ref: '#/components/schemas/BookingPageOut'
title: Response List Bookings Api V1 Bookings Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- bookings
summary: Create Booking
operationId: create_booking_api_v1_bookings_post
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBookingRequest'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BookingOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}/checkout:
post:
tags:
- bookings
summary: Checkout Booking
operationId: checkout_booking_api_v1_bookings__public_ref__checkout_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutBookingRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CheckoutBookingResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/availability:
get:
tags:
- bookings
summary: List Available Vehicles
operationId: list_available_vehicles_api_v1_bookings_availability_get
parameters:
- name: starts_at
in: query
required: true
schema:
type: string
format: date-time
title: Starts At
- name: ends_at
in: query
required: true
schema:
type: string
format: date-time
title: Ends At
- name: query
in: query
required: false
schema:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Query
- name: limit
in: query
required: false
schema:
type: integer
maximum: 50
minimum: 1
default: 25
title: Limit
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AvailableVehicleOut'
title: Response List Available Vehicles Api V1 Bookings Availability
Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}:
get:
tags:
- bookings
summary: Get Booking
operationId: get_booking_api_v1_bookings__public_ref__get
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BookingOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}/complete-requirements:
post:
tags:
- bookings
summary: Complete Booking Requirements
operationId: complete_booking_requirements_api_v1_bookings__public_ref__complete_requirements_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CompleteBookingRequirementsRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BookingOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}/schedule:
patch:
tags:
- bookings
summary: Reschedule Booking
operationId: reschedule_booking_api_v1_bookings__public_ref__schedule_patch
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RescheduleBookingRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BookingOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}/cancel:
post:
tags:
- bookings
summary: Cancel Booking
operationId: cancel_booking_api_v1_bookings__public_ref__cancel_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CancelBookingRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BookingOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}/return-preview:
post:
tags:
- bookings
summary: Preview Return
operationId: preview_return_api_v1_bookings__public_ref__return_preview_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterReturnRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ReturnPreviewResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bookings/{public_ref}/return:
post:
tags:
- bookings
summary: Register Return
operationId: register_return_api_v1_bookings__public_ref__return_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
- name: Idempotency-Key
in: header
required: true
schema:
type: string
minLength: 8
maxLength: 128
title: Idempotency-Key
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterReturnRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterReturnResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/customers:
get:
tags:
- customers
summary: Search Customers
operationId: search_customers_api_v1_customers_get
parameters:
- name: query
in: query
required: true
schema:
type: string
minLength: 2
maxLength: 100
title: Query
- name: limit
in: query
required: false
schema:
type: integer
maximum: 50
minimum: 1
default: 20
title: Limit
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CustomerOptionOut'
title: Response Search Customers Api V1 Customers Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/audit/export.csv:
get:
tags:
- audit
summary: Export Audit Csv
operationId: export_audit_csv_api_v1_audit_export_csv_get
parameters:
- name: occurred_from
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Occurred From
- name: occurred_to
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Occurred To
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/audit:
get:
tags:
- audit
summary: List Audit Events
operationId: list_audit_events_api_v1_audit_get
parameters:
- name: actor_label
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Actor Label
- name: action
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Action
- name: entity_type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Entity Type
- name: entity_ref
in: query
required: false
schema:
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
title: Entity Ref
- name: correlation_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Correlation Id
- name: occurred_from
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Occurred From
- name: occurred_to
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Occurred To
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
title: Page
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 25
minimum: 1
default: 25
title: Page Size
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/AuditEventOut'
- $ref: '#/components/schemas/AuditEventPageOut'
title: Response List Audit Events Api V1 Audit Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues:
get:
tags:
- data-quality
summary: List Issues
operationId: list_issues_api_v1_data_quality_issues_get
parameters:
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
- name: rule_type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Rule Type
- name: severity
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Severity
- name: assigned_to_ref
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Assigned To Ref
- name: overdue
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
title: Overdue
- name: demo_only
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
title: Demo Only
- name: page
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
title: Page
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 25
minimum: 1
default: 25
title: Page Size
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/DataQualityIssueOut'
- $ref: '#/components/schemas/DataQualityIssuePageOut'
title: Response List Issues Api V1 Data Quality Issues Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/bulk-work:
post:
tags:
- data-quality
summary: Update Issue Work Queue
operationId: update_issue_work_queue_api_v1_data_quality_issues_bulk_work_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkDataQualityWorkRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BulkDataQualityWorkResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}:
get:
tags:
- data-quality
summary: Get Issue
operationId: get_issue_api_v1_data_quality_issues__public_ref__get
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DataQualityIssueDetailOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/defer:
post:
tags:
- data-quality
summary: Defer
operationId: defer_api_v1_data_quality_issues__public_ref__defer_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DataQualityIssueOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/reject:
post:
tags:
- data-quality
summary: Reject
operationId: reject_api_v1_data_quality_issues__public_ref__reject_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DataQualityIssueOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/merge-customers:
post:
tags:
- data-quality
summary: Merge
operationId: merge_api_v1_data_quality_issues__public_ref__merge_customers_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MergeCustomersRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MergeCustomersResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/provide-fields:
post:
tags:
- data-quality
summary: Provide Fields
operationId: provide_fields_api_v1_data_quality_issues__public_ref__provide_fields_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProvideFieldsRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DataQualityIssueOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/resolve-odometer-regression:
post:
tags:
- data-quality
summary: Resolve Odometer
operationId: resolve_odometer_api_v1_data_quality_issues__public_ref__resolve_odometer_regression_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResolveOdometerRegressionRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DataQualityIssueOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/resolve-overlap:
post:
tags:
- data-quality
summary: Resolve Overlap
operationId: resolve_overlap_api_v1_data_quality_issues__public_ref__resolve_overlap_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResolveOverlapRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DataQualityIssueOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/status-recommendation:
post:
tags:
- data-quality
summary: Status Recommendation
description: 'Non-mutating preview: computes the recommendation without changing
anything,
resolving no issue and writing no audit event. Safe to call repeatedly.'
operationId: status_recommendation_api_v1_data_quality_issues__public_ref__status_recommendation_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StatusRecommendationOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/issues/{public_ref}/apply-recommended-status:
post:
tags:
- data-quality
summary: Apply Status
operationId: apply_status_api_v1_data_quality_issues__public_ref__apply_recommended_status_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplyRecommendedStatusRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ApplyRecommendedStatusResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/data-quality/scan:
post:
tags:
- data-quality
summary: Scan
operationId: scan_api_v1_data_quality_scan_post
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScanResultOut'
/api/v1/workflows:
get:
tags:
- workflows
summary: List Workflows
operationId: list_workflows_api_v1_workflows_get
parameters:
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AutomationRunOut'
title: Response List Workflows Api V1 Workflows Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/workflows/{event_id}/retry:
post:
tags:
- workflows
summary: Retry Workflow
operationId: retry_workflow_api_v1_workflows__event_id__retry_post
parameters:
- name: event_id
in: path
required: true
schema:
type: string
title: Event Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationRunOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/n8n/heartbeat:
post:
tags:
- integrations
summary: Workflow Heartbeat
description: Authenticated, idempotent execution evidence from a canonical n8n
workflow.
operationId: workflow_heartbeat_api_v1_integrations_n8n_heartbeat_post
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/N8nHeartbeatIn'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/N8nHeartbeatResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/n8n/return-callback:
post:
tags:
- integrations
summary: Return Callback
operationId: return_callback_api_v1_integrations_n8n_return_callback_post
parameters:
- name: Idempotency-Key
in: header
required: true
schema:
type: string
title: Idempotency-Key
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReturnCallbackIn'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Return Callback Api V1 Integrations N8N Return Callback
Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/n8n/scheduled-scan:
post:
tags:
- integrations
summary: Scheduled Scan
description: 'Triggered by the scheduled n8n quality-scan workflow. Narrow,
read-mostly, and
safe to call repeatedly: run_scan() only ever creates an issue for a condition
that
doesn''t already have one open, so a duplicate or overlapping trigger does
no
duplicate domain work -- it just reports zero new issues for anything already
known.'
operationId: scheduled_scan_api_v1_integrations_n8n_scheduled_scan_post
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScanResultOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/n8n/workflow-error:
post:
tags:
- integrations
summary: Workflow Error
description: 'Receives a bounded, secret-free failure report from the central
n8n "Fleet Ops --
Workflow Error Handler" workflow, which is attached as the Error Workflow
on every
other Fleet Ops n8n workflow. Idempotent on execution_id: n8n may redeliver
the same
error report (e.g. after a timed-out response), so this must not double-record.'
operationId: workflow_error_api_v1_integrations_n8n_workflow_error_post
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WorkflowErrorReportIn'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/WorkflowErrorReportResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/n8n/procedures:
get:
tags:
- integrations
summary: List Procedures
description: 'Read-only source list for the RAGcore Procedure Sync workflow:
every procedure
Markdown file Fleet Ops ships, across every supported language, with a stable
per-document id (source_id) and a content hash so the caller can detect changes
without re-fetching content it already has.'
operationId: list_procedures_api_v1_integrations_n8n_procedures_get
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ProcedureListOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/n8n/procedures-sync-result:
post:
tags:
- integrations
summary: Procedures Sync Result
description: 'Receives a summary (counts only, no document content) from the
n8n "Fleet Ops --
RAGcore Procedure Sync" workflow once it finishes uploading procedures to
RAGcore.
Idempotent on execution_id, matching the workflow-error and return-callback
pattern.'
operationId: procedures_sync_result_api_v1_integrations_n8n_procedures_sync_result_post
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProcedureSyncResultIn'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ProcedureSyncResultResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/knowledge/questions:
post:
tags:
- knowledge
summary: Ask Question
operationId: ask_question_api_v1_knowledge_questions_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AskQuestionRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GroundedAnswer'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/knowledge/feedback:
post:
tags:
- knowledge
summary: Record Feedback
operationId: record_feedback_api_v1_knowledge_feedback_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeFeedbackRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties:
type: string
type: object
title: Response Record Feedback Api V1 Knowledge Feedback Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/knowledge/status:
get:
tags:
- knowledge
summary: Knowledge Status
operationId: knowledge_status_api_v1_knowledge_status_get
parameters:
- name: language
in: query
required: false
schema:
enum:
- nl-BE
- en-GB
- fr-BE
type: string
default: en-GB
title: Language
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeHealth'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/mcp/operations-summary:
get:
tags:
- mcp
summary: Operations Summary
operationId: operations_summary_api_v1_integrations_mcp_operations_summary_get
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
- name: X-Client-Id
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 180
title: X-Client-Id
- name: X-Tenant-Id
in: header
required: false
schema:
anyOf:
- type: string
maxLength: 120
- type: 'null'
title: X-Tenant-Id
- name: X-Correlation-Id
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Correlation-Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/OperationsSummaryOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/mcp/attention-vehicles:
get:
tags:
- mcp
summary: Attention Vehicles
operationId: attention_vehicles_api_v1_integrations_mcp_attention_vehicles_get
parameters:
- name: minimum_severity
in: query
required: false
schema:
type: string
pattern: ^(low|medium|high)$
default: medium
title: Minimum Severity
- name: date
in: query
required: false
schema:
anyOf:
- type: string
format: date
- type: 'null'
title: Date
- name: limit
in: query
required: false
schema:
type: integer
maximum: 50
minimum: 1
default: 20
title: Limit
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
- name: X-Client-Id
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 180
title: X-Client-Id
- name: X-Tenant-Id
in: header
required: false
schema:
anyOf:
- type: string
maxLength: 120
- type: 'null'
title: X-Tenant-Id
- name: X-Correlation-Id
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Correlation-Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AttentionVehicleOut'
title: Response Attention Vehicles Api V1 Integrations Mcp Attention
Vehicles Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/mcp/vehicles/{vehicle_ref}:
get:
tags:
- mcp
summary: Vehicle Details
operationId: vehicle_details_api_v1_integrations_mcp_vehicles__vehicle_ref__get
parameters:
- name: vehicle_ref
in: path
required: true
schema:
type: string
title: Vehicle Ref
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
- name: X-Client-Id
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 180
title: X-Client-Id
- name: X-Tenant-Id
in: header
required: false
schema:
anyOf:
- type: string
maxLength: 120
- type: 'null'
title: X-Tenant-Id
- name: X-Correlation-Id
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Correlation-Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/McpVehicleDetailOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/mcp/search-knowledge:
post:
tags:
- mcp
summary: Search Knowledge
operationId: search_knowledge_api_v1_integrations_mcp_search_knowledge_post
parameters:
- name: X-Service-Token
in: header
required: true
schema:
type: string
title: X-Service-Token
- name: X-Client-Id
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 180
title: X-Client-Id
- name: X-Tenant-Id
in: header
required: false
schema:
anyOf:
- type: string
maxLength: 120
- type: 'null'
title: X-Tenant-Id
- name: X-Correlation-Id
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Correlation-Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/McpKnowledgeSearchRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GroundedAnswer'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/search:
get:
tags:
- search
summary: Search
operationId: search_api_v1_search_get
parameters:
- name: q
in: query
required: true
schema:
type: string
minLength: 1
maxLength: 100
title: Q
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/integrations/status:
get:
tags:
- integrations
summary: Integration Status
operationId: integration_status_api_v1_integrations_status_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationStatusOut'
/api/v1/users:
get:
tags:
- users
summary: List Users
operationId: list_users_api_v1_users_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/UserOut'
type: array
title: Response List Users Api V1 Users Get
post:
tags:
- users
summary: Create User
operationId: create_user_api_v1_users_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UserOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/users/{public_ref}:
patch:
tags:
- users
summary: Update User
operationId: update_user_api_v1_users__public_ref__patch
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UserOut'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/privacy/retention:
get:
tags:
- privacy
summary: Retention Status
operationId: retention_status_api_v1_privacy_retention_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PrivacyRetentionOut'
/api/v1/privacy/customers/{public_ref}/export:
get:
tags:
- privacy
summary: Export Customer Data
operationId: export_customer_data_api_v1_privacy_customers__public_ref__export_get
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/privacy/customers/{public_ref}/anonymize:
post:
tags:
- privacy
summary: Anonymize Customer
operationId: anonymize_customer_api_v1_privacy_customers__public_ref__anonymize_post
parameters:
- name: public_ref
in: path
required: true
schema:
type: string
title: Public Ref
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerAnonymizeRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerAnonymizeResult'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
ApplyRecommendedStatusRequest:
properties:
recommendation_token:
type: string
title: Recommendation Token
type: object
required:
- recommendation_token
title: ApplyRecommendedStatusRequest
ApplyRecommendedStatusResult:
properties:
issue:
$ref: '#/components/schemas/DataQualityIssueOut'
applied_status:
type: string
title: Applied Status
reason_code:
type: string
title: Reason Code
type: object
required:
- issue
- applied_status
- reason_code
title: ApplyRecommendedStatusResult
AskQuestionRequest:
properties:
question:
type: string
maxLength: 1000
minLength: 3
title: Question
language:
type: string
enum:
- nl-BE
- en-GB
- fr-BE
title: Language
default: en-GB
type: object
required:
- question
title: AskQuestionRequest
AttentionItem:
properties:
kind:
type: string
enum:
- quality_issue
- vehicle
title: Kind
severity:
type: string
title: Severity
rule_type:
type: string
title: Rule Type
evidence_signals:
items:
$ref: '#/components/schemas/EvidenceSignalOut'
type: array
title: Evidence Signals
link_type:
type: string
enum:
- vehicle
- booking
- customer
title: Link Type
link_ref:
type: string
title: Link Ref
issue_ref:
anyOf:
- type: string
- type: 'null'
title: Issue Ref
type: object
required:
- kind
- severity
- rule_type
- link_type
- link_ref
title: AttentionItem
AttentionVehicleOut:
properties:
vehicle_ref:
type: string
title: Vehicle Ref
severity:
type: string
enum:
- low
- medium
- high
title: Severity
rule_type:
type: string
title: Rule Type
summary:
type: string
title: Summary
detected_at:
type: string
format: date-time
title: Detected At
type: object
required:
- vehicle_ref
- severity
- rule_type
- summary
- detected_at
title: AttentionVehicleOut
AuditEventOut:
properties:
id:
type: string
title: Id
actor_type:
type: string
title: Actor Type
actor_label:
type: string
title: Actor Label
action:
type: string
title: Action
entity_type:
type: string
title: Entity Type
entity_id:
anyOf:
- type: string
- type: 'null'
title: Entity Id
entity_ref:
anyOf:
- type: string
- type: 'null'
title: Entity Ref
entity_link:
anyOf:
- type: string
- type: 'null'
title: Entity Link
correlation_id:
type: string
title: Correlation Id
occurred_at:
type: string
format: date-time
title: Occurred At
before:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Before
after:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: After
metadata:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Metadata
type: object
required:
- id
- actor_type
- actor_label
- action
- entity_type
- entity_id
- correlation_id
- occurred_at
title: AuditEventOut
AuditEventPageOut:
properties:
items:
items:
$ref: '#/components/schemas/AuditEventOut'
type: array
title: Items
page:
type: integer
title: Page
page_size:
type: integer
title: Page Size
total:
type: integer
title: Total
total_pages:
type: integer
title: Total Pages
type: object
required:
- items
- page
- page_size
- total
- total_pages
title: AuditEventPageOut
AutomationRunOut:
properties:
event_id:
type: string
title: Event Id
event_type:
type: string
title: Event Type
aggregate_ref:
type: string
title: Aggregate Ref
status:
type: string
title: Status
attempts:
type: integer
title: Attempts
last_error:
anyOf:
- type: string
- type: 'null'
title: Last Error
last_error_code:
anyOf:
- type: string
- type: 'null'
title: Last Error Code
is_demo_scenario:
type: boolean
title: Is Demo Scenario
default: false
occurred_at:
type: string
format: date-time
title: Occurred At
type: object
required:
- event_id
- event_type
- aggregate_ref
- status
- attempts
- last_error
- last_error_code
- occurred_at
title: AutomationRunOut
AvailableVehicleOut:
properties:
public_ref:
type: string
title: Public Ref
make:
type: string
title: Make
model:
type: string
title: Model
registration_number:
type: string
title: Registration Number
location:
type: string
title: Location
operational_status:
type: string
title: Operational Status
type: object
required:
- public_ref
- make
- model
- registration_number
- location
- operational_status
title: AvailableVehicleOut
BookingOut:
properties:
public_ref:
type: string
title: Public Ref
customer_ref:
type: string
title: Customer Ref
vehicle_ref:
type: string
title: Vehicle Ref
starts_at:
type: string
format: date-time
title: Starts At
ends_at:
type: string
format: date-time
title: Ends At
status:
type: string
title: Status
start_odometer_km:
anyOf:
- type: integer
- type: 'null'
title: Start Odometer Km
end_odometer_km:
anyOf:
- type: integer
- type: 'null'
title: End Odometer Km
requirements_complete:
type: boolean
title: Requirements Complete
customer_name:
type: string
title: Customer Name
type: object
required:
- public_ref
- customer_ref
- vehicle_ref
- starts_at
- ends_at
- status
- start_odometer_km
- end_odometer_km
- requirements_complete
- customer_name
title: BookingOut
BookingPageOut:
properties:
items:
items:
$ref: '#/components/schemas/BookingOut'
type: array
title: Items
page:
type: integer
title: Page
page_size:
type: integer
title: Page Size
total:
type: integer
title: Total
total_pages:
type: integer
title: Total Pages
type: object
required:
- items
- page
- page_size
- total
- total_pages
title: BookingPageOut
BookingSummaryOut:
properties:
public_ref:
type: string
title: Public Ref
customer_ref:
type: string
title: Customer Ref
vehicle_ref:
type: string
title: Vehicle Ref
starts_at:
type: string
format: date-time
title: Starts At
ends_at:
type: string
format: date-time
title: Ends At
status:
type: string
title: Status
type: object
required:
- public_ref
- customer_ref
- vehicle_ref
- starts_at
- ends_at
- status
title: BookingSummaryOut
BulkDataQualityWorkRequest:
properties:
issue_refs:
items:
type: string
type: array
maxItems: 25
minItems: 1
title: Issue Refs
assigned_to_ref:
anyOf:
- type: string
maxLength: 20
minLength: 3
- type: 'null'
title: Assigned To Ref
clear_assignment:
type: boolean
title: Clear Assignment
default: false
due_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Due At
clear_due_at:
type: boolean
title: Clear Due At
default: false
type: object
required:
- issue_refs
title: BulkDataQualityWorkRequest
BulkDataQualityWorkResult:
properties:
updated:
items:
$ref: '#/components/schemas/DataQualityIssueOut'
type: array
title: Updated
type: object
required:
- updated
title: BulkDataQualityWorkResult
CancelBookingRequest:
properties:
reason:
type: string
maxLength: 500
minLength: 3
title: Reason
type: object
required:
- reason
title: CancelBookingRequest
CheckoutBookingRequest:
properties:
start_odometer_km:
type: integer
minimum: 0.0
title: Start Odometer Km
fuel_level_percent:
type: integer
maximum: 100.0
minimum: 0.0
title: Fuel Level Percent
cleanliness_ok:
type: boolean
title: Cleanliness Ok
damage_reported:
type: boolean
title: Damage Reported
default: false
technical_warning:
type: boolean
title: Technical Warning
default: false
notes:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Notes
type: object
required:
- start_odometer_km
- fuel_level_percent
- cleanliness_ok
title: CheckoutBookingRequest
CheckoutBookingResult:
properties:
booking_ref:
type: string
title: Booking Ref
vehicle_ref:
type: string
title: Vehicle Ref
inspection_ref:
type: string
title: Inspection Ref
booking_status:
type: string
title: Booking Status
resulting_vehicle_status:
type: string
title: Resulting Vehicle Status
activated:
type: boolean
title: Activated
attention_reasons:
items:
type: string
type: array
title: Attention Reasons
type: object
required:
- booking_ref
- vehicle_ref
- inspection_ref
- booking_status
- resulting_vehicle_status
- activated
- attention_reasons
title: CheckoutBookingResult
CompleteBookingRequirementsRequest:
properties:
confirmation:
type: string
maxLength: 500
minLength: 3
title: Confirmation
type: object
required:
- confirmation
title: CompleteBookingRequirementsRequest
CreateBookingRequest:
properties:
customer_ref:
type: string
maxLength: 20
minLength: 3
title: Customer Ref
vehicle_ref:
type: string
maxLength: 20
minLength: 3
title: Vehicle Ref
starts_at:
type: string
format: date-time
title: Starts At
ends_at:
type: string
format: date-time
title: Ends At
type: object
required:
- customer_ref
- vehicle_ref
- starts_at
- ends_at
title: CreateBookingRequest
CreateMaintenanceRequest:
properties:
occurred_at:
type: string
format: date-time
title: Occurred At
odometer_km:
type: integer
minimum: 0.0
title: Odometer Km
category:
type: string
enum:
- periodic_service
- repair
- inspection
- tyres
- other
title: Category
summary:
type: string
maxLength: 2000
minLength: 3
title: Summary
next_service_km:
anyOf:
- type: integer
minimum: 0.0
- type: 'null'
title: Next Service Km
mark_maintenance:
type: boolean
title: Mark Maintenance
default: true
type: object
required:
- occurred_at
- odometer_km
- category
- summary
title: CreateMaintenanceRequest
CreateUserRequest:
properties:
email:
type: string
maxLength: 320
minLength: 3
title: Email
display_name:
type: string
maxLength: 120
minLength: 2
title: Display Name
role:
type: string
enum:
- operations_manager
- rental_employee
title: Role
password:
type: string
maxLength: 256
minLength: 8
title: Password
type: object
required:
- email
- display_name
- role
- password
title: CreateUserRequest
CurrentUser:
properties:
public_ref:
type: string
title: Public Ref
display_name:
type: string
title: Display Name
role:
type: string
enum:
- operations_manager
- rental_employee
title: Role
type: object
required:
- public_ref
- display_name
- role
title: CurrentUser
CustomerAnonymizeRequest:
properties:
confirmation:
type: string
maxLength: 20
minLength: 1
title: Confirmation
reason:
type: string
maxLength: 500
minLength: 8
title: Reason
type: object
required:
- confirmation
- reason
title: CustomerAnonymizeRequest
CustomerAnonymizeResult:
properties:
public_ref:
type: string
title: Public Ref
anonymized_at:
type: string
format: date-time
title: Anonymized At
status:
type: string
enum:
- anonymized
- already_anonymized
title: Status
type: object
required:
- public_ref
- anonymized_at
- status
title: CustomerAnonymizeResult
CustomerOptionOut:
properties:
public_ref:
type: string
title: Public Ref
display_name:
type: string
title: Display Name
email:
anyOf:
- type: string
- type: 'null'
title: Email
type: object
required:
- public_ref
- display_name
- email
title: CustomerOptionOut
DashboardMetrics:
properties:
available:
type: integer
title: Available
rented:
type: integer
title: Rented
cleaning:
type: integer
title: Cleaning
maintenance:
type: integer
title: Maintenance
blocked:
type: integer
title: Blocked
open_quality_issues:
type: integer
title: Open Quality Issues
pending_or_failed_workflows:
type: integer
title: Pending Or Failed Workflows
type: object
required:
- available
- rented
- cleaning
- maintenance
- blocked
- open_quality_issues
- pending_or_failed_workflows
title: DashboardMetrics
DashboardOut:
properties:
metrics:
$ref: '#/components/schemas/DashboardMetrics'
attention_items:
items:
$ref: '#/components/schemas/AttentionItem'
type: array
title: Attention Items
today:
items:
$ref: '#/components/schemas/TodayItem'
type: array
title: Today
recent_automation:
items:
$ref: '#/components/schemas/AutomationRunOut'
type: array
title: Recent Automation
type: object
required:
- metrics
- attention_items
- today
- recent_automation
title: DashboardOut
DataQualityIssueDetailOut:
properties:
public_ref:
type: string
title: Public Ref
rule_type:
type: string
title: Rule Type
entity_type:
type: string
title: Entity Type
entity_ref:
type: string
title: Entity Ref
severity:
type: string
title: Severity
status:
type: string
title: Status
evidence:
additionalProperties: true
type: object
title: Evidence
detected_at:
type: string
format: date-time
title: Detected At
due_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Due At
assigned_to_ref:
anyOf:
- type: string
- type: 'null'
title: Assigned To Ref
assigned_to_name:
anyOf:
- type: string
- type: 'null'
title: Assigned To Name
overdue:
type: boolean
title: Overdue
default: false
resolved_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Resolved At
entity_snapshot:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Entity Snapshot
related_snapshots:
items:
additionalProperties: true
type: object
type: array
title: Related Snapshots
type: object
required:
- public_ref
- rule_type
- entity_type
- entity_ref
- severity
- status
- evidence
- detected_at
title: DataQualityIssueDetailOut
DataQualityIssueOut:
properties:
public_ref:
type: string
title: Public Ref
rule_type:
type: string
title: Rule Type
entity_type:
type: string
title: Entity Type
entity_ref:
type: string
title: Entity Ref
severity:
type: string
title: Severity
status:
type: string
title: Status
evidence:
additionalProperties: true
type: object
title: Evidence
detected_at:
type: string
format: date-time
title: Detected At
due_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Due At
assigned_to_ref:
anyOf:
- type: string
- type: 'null'
title: Assigned To Ref
assigned_to_name:
anyOf:
- type: string
- type: 'null'
title: Assigned To Name
overdue:
type: boolean
title: Overdue
default: false
resolved_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Resolved At
type: object
required:
- public_ref
- rule_type
- entity_type
- entity_ref
- severity
- status
- evidence
- detected_at
title: DataQualityIssueOut
DataQualityIssuePageOut:
properties:
items:
items:
$ref: '#/components/schemas/DataQualityIssueOut'
type: array
title: Items
page:
type: integer
title: Page
page_size:
type: integer
title: Page Size
total:
type: integer
title: Total
total_pages:
type: integer
title: Total Pages
type: object
required:
- items
- page
- page_size
- total
- total_pages
title: DataQualityIssuePageOut
DemoIntegrationSummaryOut:
properties:
key:
type: string
enum:
- n8n
- ragcore
- mcp_hub
title: Key
status_code:
type: string
title: Status Code
detail_code:
type: string
title: Detail Code
detail_params:
additionalProperties:
anyOf:
- type: string
- type: integer
type: object
title: Detail Params
default: {}
type: object
required:
- key
- status_code
- detail_code
title: DemoIntegrationSummaryOut
DemoLoginRequest:
properties:
role:
type: string
enum:
- operations_manager
- rental_employee
title: Role
type: object
required:
- role
title: DemoLoginRequest
DemoManifestOut:
properties:
demo_mode:
type: boolean
title: Demo Mode
organization_name:
type: string
title: Organization Name
timezone:
type: string
title: Timezone
synthetic_data:
type: boolean
title: Synthetic Data
allow_reset:
type: boolean
title: Allow Reset
last_reset_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Reset At
anchor_date:
anyOf:
- type: string
- type: 'null'
title: Anchor Date
guide_available:
type: boolean
title: Guide Available
required_roles:
items:
type: string
enum:
- operations_manager
- rental_employee
type: array
title: Required Roles
scenarios:
items:
$ref: '#/components/schemas/DemoScenarioOut'
type: array
title: Scenarios
integrations:
items:
$ref: '#/components/schemas/DemoIntegrationSummaryOut'
type: array
title: Integrations
type: object
required:
- demo_mode
- organization_name
- timezone
- synthetic_data
- allow_reset
- last_reset_at
- anchor_date
- guide_available
- required_roles
- scenarios
- integrations
title: DemoManifestOut
DemoScenarioOut:
properties:
id:
type: string
title: Id
estimated_minutes:
type: integer
title: Estimated Minutes
required_roles:
items:
type: string
enum:
- operations_manager
- rental_employee
type: array
title: Required Roles
start_path:
type: string
title: Start Path
ready:
type: boolean
title: Ready
blocked_reason_code:
anyOf:
- type: string
- type: 'null'
title: Blocked Reason Code
blocked_reason_params:
additionalProperties:
type: string
type: object
title: Blocked Reason Params
default: {}
type: object
required:
- id
- estimated_minutes
- required_roles
- start_path
- ready
title: DemoScenarioOut
EvidenceSignalOut:
properties:
code:
type: string
title: Code
params:
additionalProperties: true
type: object
title: Params
type: object
required:
- code
title: EvidenceSignalOut
GroundedAnswer:
properties:
answer:
type: string
title: Answer
evidence_state:
type: string
enum:
- grounded
- insufficient
- unavailable
title: Evidence State
sources:
items:
$ref: '#/components/schemas/SourceCard'
type: array
title: Sources
provider:
type: string
title: Provider
correlation_id:
type: string
title: Correlation Id
type: object
required:
- answer
- evidence_state
- sources
- provider
- correlation_id
title: GroundedAnswer
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
InspectionOut:
properties:
public_ref:
type: string
title: Public Ref
booking_ref:
type: string
title: Booking Ref
type:
type: string
title: Type
fuel_level_percent:
type: integer
title: Fuel Level Percent
cleanliness_ok:
type: boolean
title: Cleanliness Ok
damage_reported:
type: boolean
title: Damage Reported
technical_warning:
type: boolean
title: Technical Warning
odometer_km:
type: integer
title: Odometer Km
completed_at:
type: string
format: date-time
title: Completed At
type: object
required:
- public_ref
- booking_ref
- type
- fuel_level_percent
- cleanliness_ok
- damage_reported
- technical_warning
- odometer_km
- completed_at
title: InspectionOut
IntegrationStatusOut:
properties:
n8n:
$ref: '#/components/schemas/N8nIntegrationStatus'
mcp_hub:
$ref: '#/components/schemas/McpHubIntegrationStatus'
type: object
required:
- n8n
- mcp_hub
title: IntegrationStatusOut
KnowledgeFeedbackRequest:
properties:
correlation_id:
type: string
format: uuid
title: Correlation Id
helpful:
type: boolean
title: Helpful
type: object
required:
- correlation_id
- helpful
title: KnowledgeFeedbackRequest
KnowledgeHealth:
properties:
provider:
type: string
title: Provider
available:
type: boolean
title: Available
detail:
type: string
title: Detail
tenant:
type: string
title: Tenant
workspace:
type: string
title: Workspace
collection:
type: string
title: Collection
document_count:
anyOf:
- type: integer
- type: 'null'
title: Document Count
source_document_count:
type: integer
title: Source Document Count
reported_synced_document_count:
anyOf:
- type: integer
- type: 'null'
title: Reported Synced Document Count
reported_failed_document_count:
anyOf:
- type: integer
- type: 'null'
title: Reported Failed Document Count
last_sync_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Sync At
statistics_state:
type: string
enum:
- verified
- sync_reported
- not_reported
title: Statistics State
type: object
required:
- provider
- available
- detail
- tenant
- workspace
- collection
- document_count
- source_document_count
- reported_synced_document_count
- reported_failed_document_count
- last_sync_at
- statistics_state
title: KnowledgeHealth
MaintenanceOut:
properties:
public_ref:
type: string
title: Public Ref
occurred_at:
type: string
format: date-time
title: Occurred At
odometer_km:
type: integer
title: Odometer Km
category:
type: string
title: Category
summary:
type: string
title: Summary
type: object
required:
- public_ref
- occurred_at
- odometer_km
- category
- summary
title: MaintenanceOut
McpHubIntegrationStatus:
properties:
registration_enabled:
type: boolean
title: Registration Enabled
state:
type: string
enum:
- not_configured
- no_evidence
- operational
title: State
total_calls:
type: integer
title: Total Calls
last_tool:
anyOf:
- type: string
- type: 'null'
title: Last Tool
last_client:
anyOf:
- type: string
- type: 'null'
title: Last Client
last_called_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Called At
hub_reachable:
anyOf:
- type: boolean
- type: 'null'
title: Hub Reachable
type: object
required:
- registration_enabled
- state
- total_calls
title: McpHubIntegrationStatus
McpKnowledgeSearchRequest:
properties:
question:
type: string
maxLength: 1000
minLength: 3
title: Question
max_sources:
type: integer
maximum: 8.0
minimum: 1.0
title: Max Sources
default: 4
locale:
type: string
enum:
- nl-BE
- en-GB
- fr-BE
title: Locale
default: en-GB
type: object
required:
- question
title: McpKnowledgeSearchRequest
McpVehicleDetailOut:
properties:
public_ref:
type: string
title: Public Ref
make:
type: string
title: Make
model:
type: string
title: Model
model_year:
type: integer
title: Model Year
location:
type: string
title: Location
operational_status:
type: string
title: Operational Status
odometer_km:
type: integer
title: Odometer Km
next_service_km:
type: integer
title: Next Service Km
open_quality_issue_count:
type: integer
title: Open Quality Issue Count
current_booking_ref:
anyOf:
- type: string
- type: 'null'
title: Current Booking Ref
type: object
required:
- public_ref
- make
- model
- model_year
- location
- operational_status
- odometer_km
- next_service_km
- open_quality_issue_count
- current_booking_ref
title: McpVehicleDetailOut
MergeCustomersRequest:
properties:
survivor_ref:
type: string
title: Survivor Ref
field_overrides:
anyOf:
- additionalProperties:
type: string
type: object
- type: 'null'
title: Field Overrides
type: object
required:
- survivor_ref
title: MergeCustomersRequest
MergeCustomersResult:
properties:
issue_ref:
type: string
title: Issue Ref
survivor_ref:
type: string
title: Survivor Ref
loser_ref:
type: string
title: Loser Ref
rewired_bookings:
type: integer
title: Rewired Bookings
type: object
required:
- issue_ref
- survivor_ref
- loser_ref
- rewired_bookings
title: MergeCustomersResult
N8nErrorHandlerStatus:
properties:
total_failures_registered:
type: integer
title: Total Failures Registered
latest_failure_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Latest Failure At
latest_failure_workflow:
anyOf:
- type: string
- type: 'null'
title: Latest Failure Workflow
type: object
required:
- total_failures_registered
- latest_failure_at
- latest_failure_workflow
title: N8nErrorHandlerStatus
N8nHeartbeatIn:
properties:
workflow_id:
type: string
maxLength: 120
minLength: 1
title: Workflow Id
workflow_name:
type: string
maxLength: 200
minLength: 1
title: Workflow Name
execution_id:
type: string
maxLength: 120
minLength: 1
title: Execution Id
status:
type: string
enum:
- succeeded
- failed
title: Status
type: object
required:
- workflow_id
- workflow_name
- execution_id
- status
title: N8nHeartbeatIn
N8nHeartbeatResult:
properties:
status:
type: string
enum:
- registered
- already_registered
title: Status
execution_id:
type: string
title: Execution Id
occurred_at:
type: string
format: date-time
title: Occurred At
type: object
required:
- status
- execution_id
- occurred_at
title: N8nHeartbeatResult
N8nIntegrationStatus:
properties:
configured:
type: boolean
title: Configured
dispatch_enabled:
type: boolean
title: Dispatch Enabled
state:
type: string
enum:
- disabled
- unavailable
- degraded
- operational
- no_evidence
title: State
pending:
type: integer
title: Pending
failed:
type: integer
title: Failed
unexpected_failed:
type: integer
title: Unexpected Failed
default: 0
demo_scenario_failed:
type: integer
title: Demo Scenario Failed
default: 0
delivering:
type: integer
title: Delivering
succeeded:
type: integer
title: Succeeded
latest_success_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Latest Success At
latest_failure_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Latest Failure At
latest_demo_scenario_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Latest Demo Scenario At
expected_workflow_count:
type: integer
title: Expected Workflow Count
known_workflow_count:
type: integer
title: Known Workflow Count
workflows:
items:
$ref: '#/components/schemas/N8nWorkflowEvidence'
type: array
title: Workflows
error_handler:
$ref: '#/components/schemas/N8nErrorHandlerStatus'
type: object
required:
- configured
- dispatch_enabled
- state
- pending
- failed
- delivering
- succeeded
- latest_success_at
- latest_failure_at
- expected_workflow_count
- known_workflow_count
- workflows
- error_handler
title: N8nIntegrationStatus
N8nWorkflowEvidence:
properties:
name:
type: string
title: Name
built:
type: boolean
title: Built
last_seen_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Seen At
state:
type: string
enum:
- no_evidence
- healthy
- stale
- failed
title: State
default: no_evidence
last_status:
anyOf:
- type: string
enum:
- succeeded
- failed
- type: 'null'
title: Last Status
last_execution_id:
anyOf:
- type: string
- type: 'null'
title: Last Execution Id
type: object
required:
- name
- built
- last_seen_at
title: N8nWorkflowEvidence
NextBookingRisk:
properties:
booking_ref:
type: string
title: Booking Ref
starts_at:
type: string
format: date-time
title: Starts At
at_risk:
type: boolean
title: At Risk
type: object
required:
- booking_ref
- starts_at
- at_risk
title: NextBookingRisk
OidcStatusOut:
properties:
enabled:
type: boolean
title: Enabled
provider_name:
anyOf:
- type: string
- type: 'null'
title: Provider Name
type: object
required:
- enabled
title: OidcStatusOut
OperationsSummaryOut:
properties:
tenant:
type: string
title: Tenant
metrics:
$ref: '#/components/schemas/DashboardMetrics'
type: object
required:
- tenant
- metrics
title: OperationsSummaryOut
PasswordLoginRequest:
properties:
email:
type: string
maxLength: 320
minLength: 3
title: Email
password:
type: string
maxLength: 256
minLength: 8
title: Password
type: object
required:
- email
- password
title: PasswordLoginRequest
PrivacyRetentionOut:
properties:
minimum_booking_retention_days:
type: integer
title: Minimum Booking Retention Days
audit_retention_days:
type: integer
title: Audit Retention Days
customers_total:
type: integer
title: Customers Total
customers_anonymized:
type: integer
title: Customers Anonymized
customers_eligible:
type: integer
title: Customers Eligible
type: object
required:
- minimum_booking_retention_days
- audit_retention_days
- customers_total
- customers_anonymized
- customers_eligible
title: PrivacyRetentionOut
ProcedureDocumentOut:
properties:
id:
type: string
title: Id
language:
type: string
title: Language
document_id:
type: string
title: Document Id
title:
type: string
title: Title
version:
type: string
title: Version
content:
type: string
title: Content
content_hash:
type: string
title: Content Hash
type: object
required:
- id
- language
- document_id
- title
- version
- content
- content_hash
title: ProcedureDocumentOut
ProcedureListOut:
properties:
documents:
items:
$ref: '#/components/schemas/ProcedureDocumentOut'
type: array
title: Documents
type: object
required:
- documents
title: ProcedureListOut
ProcedureSyncResultIn:
properties:
execution_id:
type: string
maxLength: 120
title: Execution Id
synced:
type: integer
minimum: 0.0
title: Synced
failed:
type: integer
minimum: 0.0
title: Failed
default: 0
type: object
required:
- execution_id
- synced
title: ProcedureSyncResultIn
ProcedureSyncResultResult:
properties:
status:
type: string
enum:
- registered
- already_registered
title: Status
execution_id:
type: string
title: Execution Id
occurred_at:
type: string
format: date-time
title: Occurred At
type: object
required:
- status
- execution_id
- occurred_at
title: ProcedureSyncResultResult
ProvideFieldsRequest:
properties:
fields:
additionalProperties:
type: string
type: object
title: Fields
type: object
required:
- fields
title: ProvideFieldsRequest
RegisterReturnRequest:
properties:
end_odometer_km:
type: integer
minimum: 0.0
title: End Odometer Km
fuel_level_percent:
type: integer
maximum: 100.0
minimum: 0.0
title: Fuel Level Percent
cleanliness_ok:
type: boolean
title: Cleanliness Ok
damage_reported:
type: boolean
title: Damage Reported
technical_warning:
type: boolean
title: Technical Warning
notes:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Notes
type: object
required:
- end_odometer_km
- fuel_level_percent
- cleanliness_ok
- damage_reported
- technical_warning
title: RegisterReturnRequest
RegisterReturnResult:
properties:
booking_ref:
type: string
title: Booking Ref
vehicle_ref:
type: string
title: Vehicle Ref
inspection_ref:
type: string
title: Inspection Ref
resulting_vehicle_status:
type: string
title: Resulting Vehicle Status
odometer_regression:
type: boolean
title: Odometer Regression
quality_issue_ref:
anyOf:
- type: string
- type: 'null'
title: Quality Issue Ref
workflow_event_id:
type: string
title: Workflow Event Id
correlation_id:
type: string
title: Correlation Id
next_booking_risk:
anyOf:
- $ref: '#/components/schemas/NextBookingRisk'
- type: 'null'
type: object
required:
- booking_ref
- vehicle_ref
- inspection_ref
- resulting_vehicle_status
- odometer_regression
- quality_issue_ref
- workflow_event_id
- correlation_id
- next_booking_risk
title: RegisterReturnResult
ReleaseVehicleRequest:
properties:
reason:
type: string
maxLength: 500
minLength: 3
title: Reason
type: object
required:
- reason
title: ReleaseVehicleRequest
RescheduleBookingRequest:
properties:
starts_at:
type: string
format: date-time
title: Starts At
ends_at:
type: string
format: date-time
title: Ends At
reason:
type: string
maxLength: 500
minLength: 3
title: Reason
type: object
required:
- starts_at
- ends_at
- reason
title: RescheduleBookingRequest
ResolveOdometerRegressionRequest:
properties:
decision:
type: string
enum:
- retain_canonical
- correct_reading
title: Decision
booking_ref:
anyOf:
- type: string
- type: 'null'
title: Booking Ref
corrected_odometer_km:
anyOf:
- type: integer
minimum: 0.0
- type: 'null'
title: Corrected Odometer Km
note:
anyOf:
- type: string
maxLength: 500
- type: 'null'
title: Note
type: object
required:
- decision
title: ResolveOdometerRegressionRequest
ResolveOverlapRequest:
properties:
booking_ref:
type: string
title: Booking Ref
note:
anyOf:
- type: string
maxLength: 500
- type: 'null'
title: Note
type: object
required:
- booking_ref
title: ResolveOverlapRequest
ReturnCallbackIn:
properties:
event_id:
type: string
format: uuid
title: Event Id
correlation_id:
type: string
format: uuid
title: Correlation Id
follow_up:
anyOf:
- type: string
maxLength: 200
- type: 'null'
title: Follow Up
summary:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Summary
type: object
required:
- event_id
- correlation_id
title: ReturnCallbackIn
description: 'Body of the n8n return follow-up callback.
n8n forwards its whole item (``JSON.stringify($json)``), so unknown keys are
ignored;
only the fields we persist are validated and bounded.'
ReturnPreviewResult:
properties:
booking_ref:
type: string
title: Booking Ref
vehicle_ref:
type: string
title: Vehicle Ref
canonical_odometer_km:
type: integer
title: Canonical Odometer Km
submitted_odometer_km:
type: integer
title: Submitted Odometer Km
odometer_regression:
type: boolean
title: Odometer Regression
resulting_odometer_km:
type: integer
title: Resulting Odometer Km
resulting_vehicle_status:
type: string
title: Resulting Vehicle Status
status_reason:
type: string
title: Status Reason
status_reason_code:
type: string
title: Status Reason Code
status_reason_params:
additionalProperties:
anyOf:
- type: string
- type: integer
type: object
title: Status Reason Params
default: {}
would_create_quality_issue:
type: boolean
title: Would Create Quality Issue
attention_reasons:
items:
type: string
type: array
title: Attention Reasons
next_booking_risk:
anyOf:
- $ref: '#/components/schemas/NextBookingRisk'
- type: 'null'
type: object
required:
- booking_ref
- vehicle_ref
- canonical_odometer_km
- submitted_odometer_km
- odometer_regression
- resulting_odometer_km
- resulting_vehicle_status
- status_reason
- status_reason_code
- would_create_quality_issue
- attention_reasons
- next_booking_risk
title: ReturnPreviewResult
ScanResultOut:
properties:
created:
additionalProperties:
type: integer
type: object
title: Created
type: object
required:
- created
title: ScanResultOut
SearchResponse:
properties:
query:
type: string
title: Query
results:
items:
$ref: '#/components/schemas/SearchResultItem'
type: array
title: Results
type: object
required:
- query
- results
title: SearchResponse
SearchResultItem:
properties:
type:
type: string
enum:
- vehicle
- booking
- data_quality_issue
- section
title: Type
label:
type: string
title: Label
detail_code:
type: string
title: Detail Code
detail_params:
additionalProperties:
type: string
type: object
title: Detail Params
default: {}
link:
type: string
title: Link
type: object
required:
- type
- label
- detail_code
- link
title: SearchResultItem
SourceCard:
properties:
document_id:
type: string
title: Document Id
title:
type: string
title: Title
version:
type: string
title: Version
section:
type: string
title: Section
excerpt:
type: string
title: Excerpt
type: object
required:
- document_id
- title
- version
- section
- excerpt
title: SourceCard
StatusRecommendationOut:
properties:
current_status:
type: string
title: Current Status
recommended_status:
anyOf:
- type: string
- type: 'null'
title: Recommended Status
recommendation_code:
type: string
title: Recommendation Code
safe_to_apply:
type: boolean
title: Safe To Apply
manual_review_required:
type: boolean
title: Manual Review Required
facts:
$ref: '#/components/schemas/VehicleStatusFactsOut'
blocking_reasons:
items:
type: string
type: array
title: Blocking Reasons
recommendation_token:
type: string
title: Recommendation Token
type: object
required:
- current_status
- recommended_status
- recommendation_code
- safe_to_apply
- manual_review_required
- facts
- blocking_reasons
- recommendation_token
title: StatusRecommendationOut
TodayItem:
properties:
kind:
type: string
enum:
- departure
- return
title: Kind
booking_ref:
type: string
title: Booking Ref
vehicle_ref:
type: string
title: Vehicle Ref
scheduled_at:
type: string
format: date-time
title: Scheduled At
type: object
required:
- kind
- booking_ref
- vehicle_ref
- scheduled_at
title: TodayItem
UpdateUserRequest:
properties:
display_name:
anyOf:
- type: string
maxLength: 120
minLength: 2
- type: 'null'
title: Display Name
role:
anyOf:
- type: string
enum:
- operations_manager
- rental_employee
- type: 'null'
title: Role
active:
anyOf:
- type: boolean
- type: 'null'
title: Active
password:
anyOf:
- type: string
maxLength: 256
minLength: 8
- type: 'null'
title: Password
type: object
title: UpdateUserRequest
UserOut:
properties:
public_ref:
type: string
title: Public Ref
email:
anyOf:
- type: string
- type: 'null'
title: Email
display_name:
type: string
title: Display Name
role:
type: string
enum:
- operations_manager
- rental_employee
title: Role
active:
type: boolean
title: Active
type: object
required:
- public_ref
- email
- display_name
- role
- active
title: UserOut
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
VehicleDetailOut:
properties:
public_ref:
type: string
title: Public Ref
make:
type: string
title: Make
model:
type: string
title: Model
model_year:
type: integer
title: Model Year
registration_number:
type: string
title: Registration Number
location:
type: string
title: Location
operational_status:
type: string
title: Operational Status
odometer_km:
type: integer
title: Odometer Km
next_service_km:
type: integer
title: Next Service Km
active:
type: boolean
title: Active
attention:
type: boolean
title: Attention
default: false
attention_reason:
anyOf:
- type: string
- type: 'null'
title: Attention Reason
service_remaining_km:
type: integer
title: Service Remaining Km
next_booking_ref:
anyOf:
- type: string
- type: 'null'
title: Next Booking Ref
next_booking_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Next Booking At
bookings:
items:
$ref: '#/components/schemas/BookingSummaryOut'
type: array
title: Bookings
inspections:
items:
$ref: '#/components/schemas/InspectionOut'
type: array
title: Inspections
maintenance:
items:
$ref: '#/components/schemas/MaintenanceOut'
type: array
title: Maintenance
quality_issues:
items:
$ref: '#/components/schemas/DataQualityIssueOut'
type: array
title: Quality Issues
type: object
required:
- public_ref
- make
- model
- model_year
- registration_number
- location
- operational_status
- odometer_km
- next_service_km
- active
- service_remaining_km
title: VehicleDetailOut
VehicleOut:
properties:
public_ref:
type: string
title: Public Ref
make:
type: string
title: Make
model:
type: string
title: Model
model_year:
type: integer
title: Model Year
registration_number:
type: string
title: Registration Number
location:
type: string
title: Location
operational_status:
type: string
title: Operational Status
odometer_km:
type: integer
title: Odometer Km
next_service_km:
type: integer
title: Next Service Km
active:
type: boolean
title: Active
attention:
type: boolean
title: Attention
default: false
attention_reason:
anyOf:
- type: string
- type: 'null'
title: Attention Reason
service_remaining_km:
type: integer
title: Service Remaining Km
next_booking_ref:
anyOf:
- type: string
- type: 'null'
title: Next Booking Ref
next_booking_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Next Booking At
type: object
required:
- public_ref
- make
- model
- model_year
- registration_number
- location
- operational_status
- odometer_km
- next_service_km
- active
- service_remaining_km
title: VehicleOut
VehiclePageOut:
properties:
items:
items:
$ref: '#/components/schemas/VehicleOut'
type: array
title: Items
page:
type: integer
title: Page
page_size:
type: integer
title: Page Size
total:
type: integer
title: Total
total_pages:
type: integer
title: Total Pages
type: object
required:
- items
- page
- page_size
- total
- total_pages
title: VehiclePageOut
VehicleStatusFactsOut:
properties:
active_booking_refs:
items:
type: string
type: array
title: Active Booking Refs
overlapping_booking_pairs:
items:
items:
type: string
type: array
type: array
title: Overlapping Booking Pairs
service_threshold_reached:
type: boolean
title: Service Threshold Reached
odometer_km:
type: integer
title: Odometer Km
next_service_km:
type: integer
title: Next Service Km
open_booking_overlap_issue_ref:
anyOf:
- type: string
- type: 'null'
title: Open Booking Overlap Issue Ref
type: object
required:
- active_booking_refs
- overlapping_booking_pairs
- service_threshold_reached
- odometer_km
- next_service_km
title: VehicleStatusFactsOut
WorkflowErrorReportIn:
properties:
workflow_id:
type: string
maxLength: 120
title: Workflow Id
workflow_name:
type: string
maxLength: 200
title: Workflow Name
execution_id:
type: string
maxLength: 120
title: Execution Id
failed_at:
type: string
format: date-time
title: Failed At
error_category:
type: string
enum:
- timeout
- authError
- connectionError
- httpError
- validationError
- unknown
title: Error Category
error_summary:
type: string
maxLength: 500
title: Error Summary
trigger_context:
anyOf:
- type: string
maxLength: 200
- type: 'null'
title: Trigger Context
correlation_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Correlation Id
attempt:
type: integer
maximum: 1000.0
minimum: 1.0
title: Attempt
default: 1
retry_action:
anyOf:
- type: string
maxLength: 200
- type: 'null'
title: Retry Action
type: object
required:
- workflow_id
- workflow_name
- execution_id
- failed_at
- error_category
- error_summary
title: WorkflowErrorReportIn
WorkflowErrorReportResult:
properties:
status:
type: string
enum:
- registered
- already_registered
title: Status
execution_id:
type: string
title: Execution Id
occurred_at:
type: string
format: date-time
title: Occurred At
type: object
required:
- status
- execution_id
- occurred_at
title: WorkflowErrorReportResult